@autorest/typescript 6.0.0-beta.7 → 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 (437) hide show
  1. package/README.md +42 -5
  2. package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +41 -5
  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 +18 -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.d.ts.map +1 -1
  24. package/dist/src/generators/LROGenerator.js +5 -13
  25. package/dist/src/generators/LROGenerator.js.map +1 -1
  26. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  27. package/dist/src/generators/clientFileGenerator.js +303 -61
  28. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  29. package/dist/src/generators/indexGenerator.d.ts +1 -1
  30. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  31. package/dist/src/generators/indexGenerator.js +143 -11
  32. package/dist/src/generators/indexGenerator.js.map +1 -1
  33. package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
  34. package/dist/src/generators/mappersGenerator.js +93 -19
  35. package/dist/src/generators/mappersGenerator.js.map +1 -1
  36. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  37. package/dist/src/generators/modelsGenerator.js +81 -82
  38. package/dist/src/generators/modelsGenerator.js.map +1 -1
  39. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  40. package/dist/src/generators/operationGenerator.js +92 -125
  41. package/dist/src/generators/operationGenerator.js.map +1 -1
  42. package/dist/src/generators/operationInterfaceGenerator.js +20 -20
  43. package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
  44. package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
  45. package/dist/src/generators/parametersGenerator.js +7 -8
  46. package/dist/src/generators/parametersGenerator.js.map +1 -1
  47. package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
  48. package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
  49. package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
  50. package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
  51. package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
  52. package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
  53. package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
  54. package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
  55. package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
  56. package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
  57. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  58. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  59. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  60. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  61. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  62. package/dist/src/generators/static/apiExtractorConfig.js +3 -3
  63. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  64. package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
  65. package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
  66. package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
  67. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
  68. package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +41 -5
  69. package/dist/src/generators/static/karma.conf.js.hbs +126 -0
  70. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  71. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  72. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  73. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  74. package/dist/src/generators/static/licenseFileGenerator.js +1 -1
  75. package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
  76. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  77. package/dist/src/generators/static/packageFileGenerator.js +267 -79
  78. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  79. package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
  80. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  81. package/dist/src/generators/static/readmeFileGenerator.js +54 -26
  82. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  83. package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
  84. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  85. package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
  86. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  87. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  88. package/dist/src/generators/static/tsConfigFileGenerator.js +47 -20
  89. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  90. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  91. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  92. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  93. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  94. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  95. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  96. package/dist/src/generators/test/envFileGenerator.js +23 -0
  97. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  98. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  99. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  100. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  101. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  102. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  103. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  104. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  105. package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
  106. package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
  107. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
  108. package/dist/src/generators/test/sampleTestGenerator.js +34 -0
  109. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
  110. package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
  111. package/dist/src/generators/tracingFileGenerator.js +7 -21
  112. package/dist/src/generators/tracingFileGenerator.js.map +1 -1
  113. package/dist/src/generators/utils/docsUtils.js +2 -2
  114. package/dist/src/generators/utils/docsUtils.js.map +1 -1
  115. package/dist/src/generators/utils/operationsUtils.js +1 -1
  116. package/dist/src/generators/utils/operationsUtils.js.map +1 -1
  117. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  118. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  119. package/dist/src/generators/utils/pagingOperations.js +15 -15
  120. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  121. package/dist/src/generators/utils/parameterUtils.js +9 -9
  122. package/dist/src/generators/utils/parameterUtils.js.map +1 -1
  123. package/dist/src/generators/utils/responseTypeUtils.js +2 -2
  124. package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
  125. package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
  126. package/dist/src/generators/utils/tracingUtils.js +2 -6
  127. package/dist/src/generators/utils/tracingUtils.js.map +1 -1
  128. package/dist/src/lroImpl.d.ts +16 -0
  129. package/dist/src/lroImpl.d.ts.map +1 -0
  130. package/dist/src/lroImpl.js +45 -0
  131. package/dist/src/lroImpl.js.map +1 -0
  132. package/dist/src/main.d.ts +2 -2
  133. package/dist/src/main.d.ts.map +1 -1
  134. package/dist/src/main.js +8 -8
  135. package/dist/src/main.js.map +1 -1
  136. package/dist/src/models/clientDetails.d.ts +10 -1
  137. package/dist/src/models/clientDetails.d.ts.map +1 -1
  138. package/dist/src/models/modelDetails.d.ts +2 -2
  139. package/dist/src/models/modelDetails.d.ts.map +1 -1
  140. package/dist/src/models/operationDetails.d.ts +1 -0
  141. package/dist/src/models/operationDetails.d.ts.map +1 -1
  142. package/dist/src/models/sampleDetails.d.ts +22 -0
  143. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  144. package/dist/src/models/sampleDetails.js +3 -0
  145. package/dist/src/models/sampleDetails.js.map +1 -0
  146. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  147. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  148. package/dist/src/restLevelClient/generateClient.js +108 -167
  149. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  150. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  151. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  152. package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
  153. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  154. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
  155. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
  156. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
  157. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
  158. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  159. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  160. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  161. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  162. package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
  163. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  164. package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
  165. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  166. package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
  167. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
  168. package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
  169. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
  170. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  171. package/dist/src/restLevelClient/generateParameterTypes.js +247 -43
  172. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  173. package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
  174. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
  175. package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
  176. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
  177. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  178. package/dist/src/restLevelClient/generateResponseTypes.js +45 -29
  179. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  180. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  181. package/dist/src/restLevelClient/generateRestLevel.js +64 -15
  182. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  183. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  184. package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
  185. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  186. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  187. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  188. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
  189. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  190. package/dist/src/restLevelClient/getPropertySignature.d.ts +3 -2
  191. package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
  192. package/dist/src/restLevelClient/getPropertySignature.js +23 -7
  193. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  194. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
  195. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
  196. package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
  197. package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
  198. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
  199. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
  200. package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
  201. package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
  202. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  203. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  204. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  205. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  206. package/dist/src/restLevelClient/interfaces.d.ts +33 -0
  207. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  208. package/dist/src/restLevelClient/interfaces.js +3 -0
  209. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  210. package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
  211. package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
  212. package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
  213. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  214. package/dist/src/restLevelClient/operationHelpers.js +21 -10
  215. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  216. package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  217. package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  218. package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
  219. package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
  220. package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
  221. package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
  222. package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
  223. package/dist/src/restLevelClient/schemaHelpers.d.ts +12 -2
  224. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  225. package/dist/src/restLevelClient/schemaHelpers.js +48 -14
  226. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  227. package/dist/src/transforms/extensions.js +10 -10
  228. package/dist/src/transforms/extensions.js.map +1 -1
  229. package/dist/src/transforms/groupTransforms.js +2 -2
  230. package/dist/src/transforms/groupTransforms.js.map +1 -1
  231. package/dist/src/transforms/mapperTransforms.d.ts +1 -1
  232. package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
  233. package/dist/src/transforms/mapperTransforms.js +30 -27
  234. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  235. package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
  236. package/dist/src/transforms/objectTransforms.js +42 -26
  237. package/dist/src/transforms/objectTransforms.js.map +1 -1
  238. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  239. package/dist/src/transforms/operationTransforms.js +29 -26
  240. package/dist/src/transforms/operationTransforms.js.map +1 -1
  241. package/dist/src/transforms/optionsTransforms.js +1 -1
  242. package/dist/src/transforms/optionsTransforms.js.map +1 -1
  243. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  244. package/dist/src/transforms/parameterTransforms.js +43 -27
  245. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  246. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  247. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  248. package/dist/src/transforms/samplesTransforms.js +293 -0
  249. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  250. package/dist/src/transforms/transforms.d.ts +1 -2
  251. package/dist/src/transforms/transforms.d.ts.map +1 -1
  252. package/dist/src/transforms/transforms.js +26 -24
  253. package/dist/src/transforms/transforms.js.map +1 -1
  254. package/dist/src/transforms/urlTransforms.js +3 -3
  255. package/dist/src/transforms/urlTransforms.js.map +1 -1
  256. package/dist/src/typescriptGenerator.d.ts +2 -2
  257. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  258. package/dist/src/typescriptGenerator.js +46 -40
  259. package/dist/src/typescriptGenerator.js.map +1 -1
  260. package/dist/src/utils/autorestOptions.d.ts +2 -2
  261. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  262. package/dist/src/utils/autorestOptions.js +148 -61
  263. package/dist/src/utils/autorestOptions.js.map +1 -1
  264. package/dist/src/utils/cloneOperation.js +2 -2
  265. package/dist/src/utils/cloneOperation.js.map +1 -1
  266. package/dist/src/utils/copyFiles.d.ts +2 -0
  267. package/dist/src/utils/copyFiles.d.ts.map +1 -0
  268. package/dist/src/utils/copyFiles.js +33 -0
  269. package/dist/src/utils/copyFiles.js.map +1 -0
  270. package/dist/src/utils/extractHeaders.js +4 -4
  271. package/dist/src/utils/extractHeaders.js.map +1 -1
  272. package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
  273. package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
  274. package/dist/src/utils/extractPaginationDetails.js +23 -10
  275. package/dist/src/utils/extractPaginationDetails.js.map +1 -1
  276. package/dist/src/utils/headersToSchema.js +1 -1
  277. package/dist/src/utils/headersToSchema.js.map +1 -1
  278. package/dist/src/utils/logger.js +1 -1
  279. package/dist/src/utils/logger.js.map +1 -1
  280. package/dist/src/utils/nameUtils.d.ts +6 -2
  281. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  282. package/dist/src/utils/nameUtils.js +13 -8
  283. package/dist/src/utils/nameUtils.js.map +1 -1
  284. package/dist/src/utils/schemaHelpers.d.ts +6 -1
  285. package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
  286. package/dist/src/utils/schemaHelpers.js +50 -7
  287. package/dist/src/utils/schemaHelpers.js.map +1 -1
  288. package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
  289. package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
  290. package/dist/src/utils/valueHelpers.d.ts.map +1 -1
  291. package/dist/src/utils/valueHelpers.js +2 -1
  292. package/dist/src/utils/valueHelpers.js.map +1 -1
  293. package/package.json +59 -39
  294. package/src/autorestSession.ts +26 -18
  295. package/src/conflictResolver.ts +61 -0
  296. package/src/generators/LROGenerator.ts +2 -16
  297. package/src/generators/clientFileGenerator.ts +400 -50
  298. package/src/generators/indexGenerator.ts +166 -14
  299. package/src/generators/mappersGenerator.ts +108 -8
  300. package/src/generators/modelsGenerator.ts +101 -98
  301. package/src/generators/operationGenerator.ts +63 -122
  302. package/src/generators/parametersGenerator.ts +2 -3
  303. package/src/generators/samples/hlcSampleGenerator.ts +50 -0
  304. package/src/generators/samples/hlcSamples.ts.hbs +49 -0
  305. package/src/generators/samples/rlcSampleGenerator.ts +72 -0
  306. package/src/generators/samples/rlcSamples.ts.hbs +28 -0
  307. package/src/generators/samples/sampleEnv.hbs +4 -0
  308. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  309. package/src/generators/static/apiExtractorConfig.ts +3 -3
  310. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  311. package/src/generators/static/hlcREADME.md.hbs +144 -0
  312. package/src/generators/static/karma.conf.js.hbs +126 -0
  313. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  314. package/src/generators/static/packageFileGenerator.ts +305 -82
  315. package/src/generators/static/readmeFileGenerator.ts +85 -42
  316. package/src/generators/static/rlcREADME.md.hbs +71 -0
  317. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  318. package/src/generators/static/tsConfigFileGenerator.ts +55 -21
  319. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  320. package/src/generators/test/envFileGenerator.ts +22 -0
  321. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  322. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  323. package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  324. package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  325. package/src/generators/test/sampleTest.ts.hbs +32 -0
  326. package/src/generators/test/sampleTestGenerator.ts +32 -0
  327. package/src/generators/tracingFileGenerator.ts +6 -24
  328. package/src/generators/utils/pagingOperations.ts +1 -2
  329. package/src/generators/utils/tracingUtils.ts +1 -5
  330. package/src/lroImpl.ts +26 -0
  331. package/src/main.ts +8 -5
  332. package/src/models/clientDetails.ts +11 -1
  333. package/src/models/modelDetails.ts +2 -2
  334. package/src/models/operationDetails.ts +1 -0
  335. package/src/models/sampleDetails.ts +22 -0
  336. package/src/restLevelClient/generateClient.ts +134 -244
  337. package/src/restLevelClient/generateClientDefinition.ts +386 -0
  338. package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
  339. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  340. package/src/restLevelClient/generateObjectTypes.ts +62 -21
  341. package/src/restLevelClient/generatePagingHelper.ts +69 -0
  342. package/src/restLevelClient/generateParameterTypes.ts +377 -55
  343. package/src/restLevelClient/generatePollingHelper.ts +19 -0
  344. package/src/restLevelClient/generateResponseTypes.ts +53 -22
  345. package/src/restLevelClient/generateRestLevel.ts +65 -8
  346. package/src/restLevelClient/generateSchemaTypes.ts +43 -8
  347. package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
  348. package/src/restLevelClient/getPropertySignature.ts +31 -6
  349. package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
  350. package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
  351. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  352. package/src/restLevelClient/interfaces.ts +39 -0
  353. package/src/restLevelClient/operationHelpers.ts +23 -9
  354. package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  355. package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  356. package/src/restLevelClient/samples/generateSamples.ts +23 -0
  357. package/src/restLevelClient/samples/samples.ts.hbs +0 -0
  358. package/src/restLevelClient/schemaHelpers.ts +51 -9
  359. package/src/transforms/mapperTransforms.ts +12 -6
  360. package/src/transforms/objectTransforms.ts +26 -6
  361. package/src/transforms/operationTransforms.ts +6 -1
  362. package/src/transforms/parameterTransforms.ts +26 -7
  363. package/src/transforms/samplesTransforms.ts +349 -0
  364. package/src/transforms/transforms.ts +14 -9
  365. package/src/typescriptGenerator.ts +41 -45
  366. package/src/utils/autorestOptions.ts +203 -86
  367. package/src/utils/copyFiles.ts +36 -0
  368. package/src/utils/extractPaginationDetails.ts +19 -1
  369. package/src/utils/nameUtils.ts +18 -9
  370. package/src/utils/schemaHelpers.ts +51 -4
  371. package/src/utils/valueHelpers.ts +1 -0
  372. package/CHANGELOG.md +0 -44
  373. package/dist/src/coreClientLro.d.ts +0 -26
  374. package/dist/src/coreClientLro.d.ts.map +0 -1
  375. package/dist/src/coreClientLro.js +0 -207
  376. package/dist/src/coreClientLro.js.map +0 -1
  377. package/dist/src/coreHttpLro.d.ts +0 -26
  378. package/dist/src/coreHttpLro.d.ts.map +0 -1
  379. package/dist/src/coreHttpLro.js +0 -186
  380. package/dist/src/coreHttpLro.js.map +0 -1
  381. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  382. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  383. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  384. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  385. package/dist/src/lro/azureAsyncPolling.d.ts +0 -3
  386. package/dist/src/lro/azureAsyncPolling.d.ts.map +0 -1
  387. package/dist/src/lro/azureAsyncPolling.js +0 -71
  388. package/dist/src/lro/azureAsyncPolling.js.map +0 -1
  389. package/dist/src/lro/bodyPolling.d.ts +0 -8
  390. package/dist/src/lro/bodyPolling.d.ts.map +0 -1
  391. package/dist/src/lro/bodyPolling.js +0 -34
  392. package/dist/src/lro/bodyPolling.js.map +0 -1
  393. package/dist/src/lro/index.d.ts +0 -4
  394. package/dist/src/lro/index.d.ts.map +0 -1
  395. package/dist/src/lro/index.js +0 -10
  396. package/dist/src/lro/index.js.map +0 -1
  397. package/dist/src/lro/locationPolling.d.ts +0 -3
  398. package/dist/src/lro/locationPolling.d.ts.map +0 -1
  399. package/dist/src/lro/locationPolling.js +0 -18
  400. package/dist/src/lro/locationPolling.js.map +0 -1
  401. package/dist/src/lro/lroEngine.d.ts +0 -14
  402. package/dist/src/lro/lroEngine.d.ts.map +0 -1
  403. package/dist/src/lro/lroEngine.js +0 -38
  404. package/dist/src/lro/lroEngine.js.map +0 -1
  405. package/dist/src/lro/models.d.ts +0 -138
  406. package/dist/src/lro/models.d.ts.map +0 -1
  407. package/dist/src/lro/models.js +0 -12
  408. package/dist/src/lro/models.js.map +0 -1
  409. package/dist/src/lro/operation.d.ts +0 -36
  410. package/dist/src/lro/operation.d.ts.map +0 -1
  411. package/dist/src/lro/operation.js +0 -89
  412. package/dist/src/lro/operation.js.map +0 -1
  413. package/dist/src/lro/passthrough.d.ts +0 -3
  414. package/dist/src/lro/passthrough.d.ts.map +0 -1
  415. package/dist/src/lro/passthrough.js +0 -14
  416. package/dist/src/lro/passthrough.js.map +0 -1
  417. package/dist/src/lro/requestUtils.d.ts +0 -16
  418. package/dist/src/lro/requestUtils.d.ts.map +0 -1
  419. package/dist/src/lro/requestUtils.js +0 -76
  420. package/dist/src/lro/requestUtils.js.map +0 -1
  421. package/dist/src/lro/stateMachine.d.ts +0 -18
  422. package/dist/src/lro/stateMachine.d.ts.map +0 -1
  423. package/dist/src/lro/stateMachine.js +0 -90
  424. package/dist/src/lro/stateMachine.js.map +0 -1
  425. package/src/coreClientLro.ts +0 -315
  426. package/src/coreHttpLro.ts +0 -268
  427. package/src/generators/clientContextFileGenerator.ts +0 -405
  428. package/src/lro/azureAsyncPolling.ts +0 -82
  429. package/src/lro/bodyPolling.ts +0 -34
  430. package/src/lro/index.ts +0 -18
  431. package/src/lro/locationPolling.ts +0 -20
  432. package/src/lro/lroEngine.ts +0 -53
  433. package/src/lro/models.ts +0 -165
  434. package/src/lro/operation.ts +0 -112
  435. package/src/lro/passthrough.ts +0 -15
  436. package/src/lro/requestUtils.ts +0 -94
  437. package/src/lro/stateMachine.ts +0 -108
@@ -1,6 +1,6 @@
1
- import { Channel, Host } from "@autorest/extension-base";
1
+ import { Channel, AutorestExtensionHost } from "@autorest/extension-base";
2
2
  import { AutorestOptions, getHost, getSession } from "../autorestSession";
3
- import { TracingInfo } from "../models/clientDetails";
3
+ import { DependencyInfo, TracingInfo } from "../models/clientDetails";
4
4
  import { PackageDetails } from "../models/packageDetails";
5
5
  import { NameType, normalizeName } from "./nameUtils";
6
6
 
@@ -11,12 +11,14 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
11
11
  const host = getHost();
12
12
  const useCoreV2 = await getUseCoreV2(host);
13
13
  const restLevelClient = await getRestLevelClient(host);
14
+ const rlcShortcut = await getHasShortcutMethods(host);
14
15
  const azureArm = await getIsAzureArm(host);
15
16
  const addCredentials = await getAddCredentials(host);
16
- const credentialKeyHeaderName = await getKeyCredentialHeaderName(host);
17
+ const security = await getSecurity(host);
18
+ const securityHeaderName = await getSecurityHeaderName(host);
17
19
  const srcPath = await getSrcPath(host);
18
20
  const outputPath = await getOutputPath(host);
19
- const credentialScopes = await getCredentialScopes(host);
21
+ const securityScopes = await getSecurityScopes(host);
20
22
  const packageDetails = await getPackageDetails(host);
21
23
  const licenseHeader = await getLicenseHeader(host);
22
24
  const generateMetadata = await getGenerateMetadata(host);
@@ -30,13 +32,24 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
30
32
  const skipEnumValidation = await getSkipEnumValidation(host);
31
33
  const azureOutputDirectory = await getAzureOutputDirectoryPath(host);
32
34
  const headAsBoolean = await getHeadAsBoolean(host);
35
+ const isTestPackage = await getIsTestPackage(host);
36
+ const generateSample = await getGenerateSample(host);
37
+ const generateTest = await getGenerateTest(host);
38
+ const batch = await getBatch(host);
39
+ const multiClient = await getMultiClient(host);
40
+ const productDocLink = await getProductDocLink(host);
41
+ const coreHttpCompatMode = await getCoreHttpCompatMode(host);
42
+ const azureSdkForJs = await getAzureSdkForJs(host);
43
+ const dependencyInfo = await getDependencyInfo(host);
33
44
 
34
45
  return {
35
46
  azureArm,
36
47
  addCredentials,
37
- credentialKeyHeaderName,
38
- credentialScopes,
48
+ security,
49
+ securityHeaderName,
50
+ securityScopes,
39
51
  restLevelClient,
52
+ rlcShortcut,
40
53
  srcPath,
41
54
  outputPath,
42
55
  packageDetails,
@@ -51,68 +64,127 @@ export async function extractAutorestOptions(): Promise<AutorestOptions> {
51
64
  skipEnumValidation,
52
65
  title,
53
66
  azureOutputDirectory,
54
- headAsBoolean
67
+ headAsBoolean,
68
+ isTestPackage,
69
+ generateTest,
70
+ batch,
71
+ multiClient,
72
+ generateSample,
73
+ azureSdkForJs,
74
+ productDocLink,
75
+ coreHttpCompatMode,
76
+ dependencyInfo
55
77
  };
56
78
  }
57
79
 
58
- async function getHeadAsBoolean(host: Host): Promise<boolean> {
59
- const headAsBoolean = await host.GetValue("head-as-boolean");
80
+ async function getHasShortcutMethods(
81
+ host: AutorestExtensionHost
82
+ ): Promise<boolean> {
83
+ const headAsBoolean = await host.getValue("rlc-shortcut");
60
84
 
61
85
  return Boolean(headAsBoolean);
62
86
  }
63
87
 
64
- async function getSkipEnumValidation(host: Host): Promise<boolean> {
65
- const skipEnumValidation = await host.GetValue("skip-enum-validation");
88
+ async function getHeadAsBoolean(host: AutorestExtensionHost): Promise<boolean> {
89
+ const headAsBoolean = await host.getValue("head-as-boolean");
90
+
91
+ return Boolean(headAsBoolean);
92
+ }
93
+
94
+ async function getIsTestPackage(host: AutorestExtensionHost): Promise<boolean> {
95
+ const isTestPackage = await host.getValue("is-test-package");
96
+ return isTestPackage === null ? false : Boolean(isTestPackage);
97
+ }
98
+
99
+ async function getGenerateSample(
100
+ host: AutorestExtensionHost
101
+ ): Promise<boolean> {
102
+ const generateSample = await host.getValue("generate-sample");
103
+ return generateSample === undefined || generateSample === null ? false : Boolean(generateSample);
104
+ }
105
+
106
+ async function getGenerateTest(host: AutorestExtensionHost): Promise<boolean> {
107
+ const generateTest = await host.getValue("generate-test");
108
+ return generateTest === null ? false : Boolean(generateTest);
109
+ }
110
+
111
+ async function getAzureSdkForJs(host: AutorestExtensionHost): Promise<boolean> {
112
+ const azureSdkForJs = await host.getValue("azure-sdk-for-js");
113
+ return azureSdkForJs === undefined || azureSdkForJs === null
114
+ ? true
115
+ : Boolean(azureSdkForJs);
116
+ }
117
+
118
+ async function getSkipEnumValidation(
119
+ host: AutorestExtensionHost
120
+ ): Promise<boolean> {
121
+ const skipEnumValidation = await host.getValue("skip-enum-validation");
66
122
 
67
123
  return skipEnumValidation === true;
68
124
  }
69
125
 
70
- async function getAllowInsecureConnection(host: Host): Promise<boolean> {
71
- return (await host.GetValue("allow-insecure-connection")) || false;
126
+ async function getAllowInsecureConnection(
127
+ host: AutorestExtensionHost
128
+ ): Promise<boolean> {
129
+ return (await host.getValue("allow-insecure-connection")) || false;
72
130
  }
73
131
 
74
- async function getIgnoreNullableOnOptional(host: Host): Promise<boolean> {
132
+ async function getIgnoreNullableOnOptional(
133
+ host: AutorestExtensionHost
134
+ ): Promise<boolean> {
75
135
  const isAzureArm = await getIsAzureArm(host);
76
- return (await host.GetValue("ignore-nullable-on-optional"))
136
+ return (await host.getValue("ignore-nullable-on-optional"))
77
137
  ? true
78
138
  : isAzureArm;
79
139
  }
80
140
 
81
- async function getDisableAsyncOperators(host: Host): Promise<boolean> {
82
- return (await host.GetValue("disable-async-iterators")) === true;
141
+ async function getDisableAsyncOperators(
142
+ host: AutorestExtensionHost
143
+ ): Promise<boolean> {
144
+ return (await host.getValue("disable-async-iterators")) === true;
83
145
  }
84
146
 
85
- async function getHideClients(host: Host): Promise<boolean> {
86
- return (await host.GetValue("hide-clients")) || false;
147
+ async function getHideClients(host: AutorestExtensionHost): Promise<boolean> {
148
+ return (await host.getValue("hide-clients")) || false;
87
149
  }
88
- async function getGenerateMetadata(host: Host) {
89
- return (await host.GetValue("generate-metadata")) !== false;
150
+ async function getGenerateMetadata(host: AutorestExtensionHost) {
151
+ return (await host.getValue("generate-metadata")) !== false;
90
152
  }
91
153
 
92
- async function getLicenseHeader(host: Host): Promise<boolean> {
93
- return (await host.GetValue("license-header")) || false;
154
+ async function getLicenseHeader(host: AutorestExtensionHost): Promise<boolean> {
155
+ const license: boolean | undefined = await host.getValue("license-header");
156
+ if (license === undefined) {
157
+ return true;
158
+ }
159
+ return license;
94
160
  }
95
161
 
96
- async function getTitle(host: Host): Promise<string | undefined> {
97
- return (await host.GetValue("title")) || undefined;
162
+ async function getTitle(
163
+ host: AutorestExtensionHost
164
+ ): Promise<string | undefined> {
165
+ return (await host.getValue("title")) || undefined;
98
166
  }
99
167
 
100
- async function getSrcPath(host: Host): Promise<string> {
101
- return ((await host.GetValue("source-code-folder-path")) as string) || "src";
168
+ async function getSrcPath(host: AutorestExtensionHost): Promise<string> {
169
+ return ((await host.getValue("source-code-folder-path")) as string) || "src";
102
170
  }
103
171
 
104
- async function getOutputPath(host: Host): Promise<string | undefined> {
105
- return (await host.GetValue("output-folder")) || undefined;
172
+ async function getOutputPath(
173
+ host: AutorestExtensionHost
174
+ ): Promise<string | undefined> {
175
+ return (await host.getValue("output-folder")) || undefined;
106
176
  }
107
177
 
108
- async function getKeyCredentialHeaderName(
109
- host: Host
178
+ async function getSecurityHeaderName(
179
+ host: AutorestExtensionHost
110
180
  ): Promise<string | undefined> {
111
- return (await host.GetValue("credential-key-header-name")) || undefined;
181
+ return (await host.getValue("security-header-name")) || undefined;
112
182
  }
113
183
 
114
- async function getAddCredentials(host: Host): Promise<boolean> {
115
- const addCredentials = await host.GetValue("add-credentials");
184
+ async function getAddCredentials(
185
+ host: AutorestExtensionHost
186
+ ): Promise<boolean> {
187
+ const addCredentials = await host.getValue("add-credentials");
116
188
 
117
189
  // Only set addCredentials to false if explicitly set to false
118
190
  // otherwise default to true
@@ -122,34 +194,46 @@ async function getAddCredentials(host: Host): Promise<boolean> {
122
194
  return true;
123
195
  }
124
196
  }
125
- async function getIsAzureArm(host: Host): Promise<boolean> {
126
- const flag = (await host.GetValue("azure-arm")) === true;
127
- const openapi = (await host.GetValue("openapi-type")) === "arm";
197
+
198
+ async function getSecurity(
199
+ host: AutorestExtensionHost
200
+ ): Promise<string | undefined> {
201
+ const security: string | undefined = await host.getValue("security");
202
+ return security
203
+ }
204
+
205
+ async function getIsAzureArm(host: AutorestExtensionHost): Promise<boolean> {
206
+ const flag = (await host.getValue("azure-arm")) === true;
207
+ const openapi = (await host.getValue("openapi-type")) === "arm";
128
208
 
129
209
  return flag || openapi;
130
210
  }
131
211
 
132
- async function getRestLevelClient(host: Host): Promise<boolean> {
133
- return (await host.GetValue("rest-level-client")) === true;
212
+ async function getRestLevelClient(
213
+ host: AutorestExtensionHost
214
+ ): Promise<boolean> {
215
+ return (await host.getValue("rest-level-client")) === true;
134
216
  }
135
217
 
136
- async function getUseCoreV2(host: Host): Promise<boolean> {
137
- const useCoreV2Option: boolean = await host.GetValue("use-core-v2");
218
+ async function getUseCoreV2(host: AutorestExtensionHost): Promise<boolean> {
219
+ const useCoreV2Option = await host.getValue("use-core-v2");
138
220
  return useCoreV2Option === null ? true : Boolean(useCoreV2Option);
139
221
  }
140
222
 
141
- async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
223
+ async function getTracingInfo(
224
+ host: AutorestExtensionHost
225
+ ): Promise<TracingInfo | undefined> {
142
226
  const tracing: TracingInfo | undefined =
143
- (await host.GetValue("tracing-info")) || undefined;
227
+ (await host.getValue("tracing-info")) || undefined;
144
228
 
145
- if (tracing && tracing.namespace && tracing.packagePrefix) {
229
+ if (tracing && tracing.namespace) {
146
230
  return tracing;
147
231
  }
148
232
 
149
- const namespace =
150
- (await host.GetValue("tracing-info.namespace")) || undefined;
151
- const packagePrefix =
152
- (await host.GetValue("tracing-info.packagePrefix")) || undefined;
233
+ const namespace: string | undefined =
234
+ (await host.getValue<string>("tracing-info.namespace")) || undefined;
235
+ const packagePrefix: string | undefined =
236
+ (await host.getValue("tracing-info.packagePrefix")) || undefined;
153
237
 
154
238
  if (packagePrefix && namespace) {
155
239
  return {
@@ -167,13 +251,17 @@ async function getTracingInfo(host: Host): Promise<TracingInfo | undefined> {
167
251
  );
168
252
  }
169
253
 
170
- async function getPackageDetails(host: Host): Promise<PackageDetails> {
254
+ async function getPackageDetails(
255
+ host: AutorestExtensionHost
256
+ ): Promise<PackageDetails> {
171
257
  const { model } = getSession();
172
258
  const name = normalizeName(model.language.default.name, NameType.File);
173
259
  // TODO: Look for an existing package.json and
174
- const packageName = (await host.GetValue("package-name")) || name;
175
- const packageNameParts = packageName.match(/(^@(.*)\/)?(.*)/);
176
- const version = (await host.GetValue("package-version")) || "1.0.0-beta.1";
260
+ const packageName: string = (await host.getValue("package-name")) || name;
261
+ const packageNameParts: RegExpMatchArray =
262
+ packageName.match(/(^@(.*)\/)?(.*)/) ?? [];
263
+ const version: string =
264
+ (await host.getValue("package-version")) || "1.0.0-beta.1";
177
265
 
178
266
  return {
179
267
  name: packageName,
@@ -184,46 +272,20 @@ async function getPackageDetails(host: Host): Promise<PackageDetails> {
184
272
  };
185
273
  }
186
274
 
187
- export async function getCredentialScopes(
188
- host: Host
275
+ export async function getSecurityScopes(
276
+ host: AutorestExtensionHost
189
277
  ): Promise<string[] | undefined> {
190
- const addCredentials = await host.GetValue("add-credentials");
191
- const credentialScopes = await host.GetValue("credential-scopes");
192
- const azureArm = await host.GetValue("azure-arm");
193
-
194
- if (credentialScopes && !addCredentials) {
195
- throw new Error(
196
- "--credential-scopes must be used with the --add-credentials flag"
197
- );
198
- }
199
-
200
- if (!credentialScopes) {
201
- if (azureArm) {
202
- return ["https://management.azure.com/.default"];
203
- } else if (addCredentials) {
204
- host.Message({
205
- Channel: Channel.Warning,
206
- Text: `You have default credential policy BearerTokenCredentialPolicy
207
- but not the --credential-scopes flag set while generating non-management plane code.
208
- This is not recommended because it forces the customer to pass credential scopes
209
- through kwargs if they want to authenticate.`
210
- });
211
- }
278
+ const securityScopes: string | undefined = await host.getValue("security-scopes");
279
+ if(securityScopes !== undefined && typeof securityScopes === "string") {
280
+ return securityScopes.split(",");
212
281
  }
213
-
214
- if (typeof credentialScopes === "string") {
215
- return credentialScopes.split(",");
216
- }
217
-
218
- return undefined;
282
+ return securityScopes;
219
283
  }
220
284
 
221
285
  async function getAzureOutputDirectoryPath(
222
- host: Host
286
+ host: AutorestExtensionHost
223
287
  ): Promise<string | undefined> {
224
- const outputDirectoryPath: string | null = await host.GetValue(
225
- "outputFolderUri"
226
- );
288
+ const outputDirectoryPath = await host.getValue<string>("outputFolderUri");
227
289
  const outputDirectoryRelativePath: string | undefined = outputDirectoryPath
228
290
  ?.replace(/\/$/, "")
229
291
  .split("/")
@@ -233,3 +295,58 @@ async function getAzureOutputDirectoryPath(
233
295
  ? outputDirectoryRelativePath
234
296
  : undefined;
235
297
  }
298
+
299
+ async function getBatch(
300
+ host: AutorestExtensionHost
301
+ ): Promise<[string, any][] | undefined> {
302
+ const batch = await host.getValue<[string, any][]>("batch");
303
+ return batch;
304
+ }
305
+
306
+ async function getProductDocLink(
307
+ host: AutorestExtensionHost
308
+ ): Promise<string | undefined> {
309
+ return (await host.getValue("product-doc-link")) || undefined;
310
+ }
311
+
312
+ async function getMultiClient(host: AutorestExtensionHost): Promise<boolean> {
313
+ const multiClient = (await host.getValue("multi-client")) || undefined;
314
+ return !!multiClient;
315
+ }
316
+
317
+ async function getCoreHttpCompatMode(
318
+ host: AutorestExtensionHost
319
+ ): Promise<boolean> {
320
+ return (await host.getValue("core-http-compat-mode")) || false;
321
+ }
322
+
323
+ async function getDependencyInfo(
324
+ host: AutorestExtensionHost
325
+ ): Promise<DependencyInfo | undefined> {
326
+ const dependency: DependencyInfo | undefined =
327
+ (await host.getValue("dependency-info")) || undefined;
328
+
329
+ if (dependency && dependency.description && dependency.link) {
330
+ return dependency;
331
+ }
332
+
333
+ const link: string | undefined =
334
+ (await host.getValue<string>("dependency-info.link")) || undefined;
335
+ const description: string | undefined =
336
+ (await host.getValue("dependency-info.description")) || undefined;
337
+
338
+ if (description && link) {
339
+ return {
340
+ link,
341
+ description
342
+ };
343
+ }
344
+
345
+ if (!dependency && !description && !link) {
346
+ return undefined;
347
+ }
348
+
349
+ throw new Error(
350
+ "Invalid dependency-info. Make sure that link and description are defined"
351
+ );
352
+ }
@@ -0,0 +1,36 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ import * as fsextra from "fs-extra";
5
+
6
+ export function copyFiles(srcDir: string, destDir: string[]) {
7
+ const dirContents: string[] = fsextra.readdirSync(srcDir);
8
+ dirContents.forEach((dirEntry: string) => {
9
+ if (dirEntry.endsWith(".hbs")) {
10
+ destDir.forEach((destDirEntry: string) => {
11
+ console.log(
12
+ `Copying ${srcDir}/${dirEntry} to ${destDirEntry}/${dirEntry}`
13
+ );
14
+ fsextra.copyFileSync(
15
+ `${srcDir}/${dirEntry}`,
16
+ `${destDirEntry}/${dirEntry}`
17
+ );
18
+ });
19
+ }
20
+ });
21
+ }
22
+
23
+ copyFiles("./src/restLevelClient", ["./dist/src/restLevelClient", "./dist"]);
24
+ copyFiles("./src/generators/test", ["./dist/src/generators/test", "./dist"]);
25
+ copyFiles("./src/generators/static", [
26
+ "./dist/src/generators/static",
27
+ "./dist"
28
+ ]);
29
+ copyFiles("./src/generators/samples", [
30
+ "./dist/src/generators/samples",
31
+ "./dist"
32
+ ]);
33
+ copyFiles("./src/restLevelClient/samples", [
34
+ "./dist/src/restLevelClient/samples",
35
+ "./dist"
36
+ ]);
@@ -2,7 +2,8 @@ import {
2
2
  Operation,
3
3
  SchemaResponse,
4
4
  SchemaType,
5
- ObjectSchema
5
+ ObjectSchema,
6
+ CodeModel
6
7
  } from "@autorest/codemodel";
7
8
  import { isEqual } from "lodash";
8
9
  import { PaginationDetails } from "../models/operationDetails";
@@ -152,6 +153,23 @@ function getResponseItemType(
152
153
  return getTypeForSchema(itemProperty.schema);
153
154
  }
154
155
 
156
+ /**
157
+ * Function to determine if any of the operations in the code model has at least one pageable operatio
158
+ */
159
+ export function hasPagingOperations(model: CodeModel) {
160
+ for (const group of model.operationGroups) {
161
+ const hasAnyPageable = group.operations.some(
162
+ o => o.extensions && o.extensions["x-ms-pageable"]
163
+ );
164
+
165
+ if (hasAnyPageable) {
166
+ return true;
167
+ }
168
+ }
169
+
170
+ return false;
171
+ }
172
+
155
173
  function isObjectSchema(schema: any): schema is ObjectSchema {
156
174
  return schema && schema.type === SchemaType.Object;
157
175
  }
@@ -4,7 +4,7 @@ import { Operation, OperationGroup } from "@autorest/codemodel";
4
4
  import { getLanguageMetadata } from "./languageHelpers";
5
5
  import { TypeDetails, PropertyKind } from "../models/modelDetails";
6
6
 
7
- interface ReservedName {
7
+ export interface ReservedName {
8
8
  name: string;
9
9
  reservedFor: NameType[];
10
10
  }
@@ -84,7 +84,8 @@ const ReservedModelNames: ReservedName[] = [
84
84
  { name: "void", reservedFor: [NameType.Parameter] },
85
85
  { name: "while", reservedFor: [NameType.Parameter] },
86
86
  { name: "with", reservedFor: [NameType.Parameter] },
87
- { name: "yield", reservedFor: [NameType.Parameter] }
87
+ { name: "yield", reservedFor: [NameType.Parameter] },
88
+ { name: "arguments", reservedFor: [NameType.Parameter] }
88
89
  ];
89
90
 
90
91
  export enum CasingConvention {
@@ -92,11 +93,15 @@ export enum CasingConvention {
92
93
  Camel
93
94
  }
94
95
 
95
- export function guardReservedNames(name: string, nameType: NameType): string {
96
+ export function guardReservedNames(
97
+ name: string,
98
+ nameType: NameType,
99
+ customReservedNames: ReservedName[] = []
100
+ ): string {
96
101
  const suffix = getSuffix(nameType);
97
- return ReservedModelNames.filter(r => r.reservedFor.includes(nameType)).find(
98
- r => r.name === name.toLowerCase()
99
- )
102
+ return [...ReservedModelNames, ...customReservedNames]
103
+ .filter(r => r.reservedFor.includes(nameType))
104
+ .find(r => r.name === name.toLowerCase())
100
105
  ? `${name}${suffix}`
101
106
  : name;
102
107
  }
@@ -135,12 +140,14 @@ export function normalizeTypeName({ kind, typeName }: TypeDetails) {
135
140
  export function normalizeName(
136
141
  name: string,
137
142
  nameType: NameType,
138
- shouldGuard?: boolean
143
+ shouldGuard?: boolean,
144
+ customReservedNames: ReservedName[] = [],
145
+ casingOverride?: CasingConvention
139
146
  ): string {
140
147
  if (name.startsWith("$DO_NOT_NORMALIZE$")) {
141
148
  return name.replace("$DO_NOT_NORMALIZE$", "");
142
149
  }
143
- const casingConvention = getCasingConvention(nameType);
150
+ const casingConvention = casingOverride ?? getCasingConvention(nameType);
144
151
  const sanitizedName = sanitizeName(name);
145
152
  const parts = getNameParts(sanitizedName);
146
153
  const [firstPart, ...otherParts] = parts;
@@ -152,7 +159,9 @@ export function normalizeName(
152
159
  .join("");
153
160
 
154
161
  const normalized = checkBeginning(`${normalizedFirstPart}${normalizedParts}`);
155
- return shouldGuard ? guardReservedNames(normalized, nameType) : normalized;
162
+ return shouldGuard
163
+ ? guardReservedNames(normalized, nameType, customReservedNames)
164
+ : normalized;
156
165
  }
157
166
 
158
167
  function checkBeginning(name: string): string {
@@ -11,11 +11,17 @@ import {
11
11
  ArraySchema,
12
12
  DictionarySchema,
13
13
  SchemaResponse,
14
- ComplexSchema
14
+ ComplexSchema,
15
+ OAuth2SecurityScheme,
16
+ KeySecurityScheme,
17
+ ParameterLocation,
18
+ Security
15
19
  } from "@autorest/codemodel";
16
20
  import { getStringForValue } from "./valueHelpers";
17
21
  import { getLanguageMetadata } from "./languageHelpers";
18
- import { normalizeName, NameType, normalizeTypeName } from "./nameUtils";
22
+ import { normalizeName, NameType } from "./nameUtils";
23
+ import { logger } from "./logger";
24
+ import { getAutorestOptions } from "../autorestSession";
19
25
 
20
26
  /**
21
27
  * Extracts parents from an ObjectSchema
@@ -68,7 +74,7 @@ export function getTypeForSchema(
68
74
  ): TypeDetails {
69
75
  let typeName: string = "";
70
76
  let usedModels: string[] = [];
71
- let defaultValue: string = "";
77
+ let defaultValue = undefined;
72
78
  let kind: PropertyKind = PropertyKind.Primitive;
73
79
  switch (schema.type) {
74
80
  case SchemaType.Any:
@@ -194,7 +200,7 @@ export function getTypeForSchema(
194
200
  usedModels,
195
201
  isConstant: schema.type === SchemaType.Constant,
196
202
  nullable: isNullable,
197
- ...(defaultValue && { defaultValue })
203
+ defaultValue
198
204
  };
199
205
  }
200
206
 
@@ -221,3 +227,44 @@ export function getSchemaTypeDocumentation(schema: Schema) {
221
227
  return "";
222
228
  }
223
229
  }
230
+
231
+ export function getSecurityInfoFromModel(security: Security) {
232
+ const { addCredentials } = getAutorestOptions();
233
+ const credentialScopes: Set<string> = new Set<string>();
234
+ let credentialKeyHeaderName: string = "";
235
+ for (const securitySchema of security.schemes) {
236
+ if (securitySchema.type === "OAuth2") {
237
+ (securitySchema as OAuth2SecurityScheme).scopes.forEach(scope => {
238
+ const scopes = scope.split(',');
239
+ for(const scope of scopes) {
240
+ credentialScopes.add(scope);
241
+ }
242
+ });
243
+ } else if (
244
+ credentialKeyHeaderName === "" &&
245
+ securitySchema.type === "Key" &&
246
+ (securitySchema as KeySecurityScheme).in === ParameterLocation.Header
247
+ ) {
248
+ credentialKeyHeaderName = (securitySchema as KeySecurityScheme).name;
249
+ } else if (
250
+ credentialKeyHeaderName !== "" &&
251
+ credentialKeyHeaderName !== (securitySchema as KeySecurityScheme).name &&
252
+ securitySchema.type === "Key" &&
253
+ (securitySchema as KeySecurityScheme).in === ParameterLocation.Header
254
+ ) {
255
+ logger.warning(
256
+ `Set multiple headers for key credential has not been supported yet`
257
+ );
258
+ }
259
+ }
260
+ const scopes: string[] = [];
261
+ credentialScopes.forEach(item => {
262
+ scopes.push(item);
263
+ });
264
+ return {
265
+ addCredentials:
266
+ addCredentials === false ? false : security.authenticationRequired,
267
+ credentialScopes: scopes,
268
+ credentialKeyHeaderName: credentialKeyHeaderName
269
+ };
270
+ }
@@ -60,6 +60,7 @@ export function getStringForValue(
60
60
  case MapperTypes.String:
61
61
  case MapperTypes.TimeSpan:
62
62
  case SchemaType.Choice:
63
+ case SchemaType.SealedChoice:
63
64
  case MapperTypes.Enum:
64
65
  const valueString = !!value ? value.toString() : "";
65
66
  return quotedStrings ? `"${valueString}"` : `${valueString}`;