@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
@@ -5,7 +5,10 @@ import {
5
5
  Project,
6
6
  PropertyDeclarationStructure,
7
7
  ClassDeclaration,
8
- SourceFile
8
+ SourceFile,
9
+ CodeBlockWriter,
10
+ Scope,
11
+ ReturnTypedNode
9
12
  } from "ts-morph";
10
13
  import { ClientDetails } from "../models/clientDetails";
11
14
  import {
@@ -25,6 +28,10 @@ import { getAllModelsNames } from "./utils/responseTypeUtils";
25
28
  import { addTracingOperationImports } from "./utils/tracingUtils";
26
29
  import { addPagingEsNextRef, addPagingImports } from "./utils/pagingOperations";
27
30
  import { getAutorestOptions } from "../autorestSession";
31
+ import { ParameterDetails } from "../models/parameterDetails";
32
+ import { EndpointDetails } from "../transforms/urlTransforms";
33
+ import { PackageDetails } from "../models/packageDetails";
34
+ import { getSecurityInfoFromModel } from "../utils/schemaHelpers";
28
35
 
29
36
  type OperationDeclarationDetails = { name: string; typeName: string };
30
37
 
@@ -33,9 +40,10 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
33
40
  useCoreV2,
34
41
  hideClients,
35
42
  srcPath,
36
- addCredentials
43
+ packageDetails,
44
+ coreHttpCompatMode
37
45
  } = getAutorestOptions();
38
- const clientContextClassName = `${clientDetails.className}Context`;
46
+ const { addCredentials } = getSecurityInfoFromModel(clientDetails.security);
39
47
  const hasMappers = !!clientDetails.mappers.length;
40
48
 
41
49
  // Check if there are any client level operations
@@ -72,39 +80,54 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
72
80
  }
73
81
  );
74
82
 
83
+ !useCoreV2 && writePackageInfo(clientFile, packageDetails);
84
+
75
85
  const flattenedInlineOperations = inlineOperations.reduce<OperationDetails[]>(
76
86
  (acc, curr) => (acc = [...acc, ...curr.operations]),
77
87
  []
78
88
  );
79
89
 
90
+ if (!useCoreV2) {
91
+ clientFile.addImportDeclaration({
92
+ namespaceImport: "coreHttp",
93
+ moduleSpecifier: "@azure/core-http"
94
+ });
95
+ } else {
96
+ clientFile.addImportDeclaration({
97
+ namespaceImport: "coreClient",
98
+ moduleSpecifier: "@azure/core-client"
99
+ });
100
+ clientFile.addImportDeclaration({
101
+ namespaceImport: "coreHttpCompat",
102
+ moduleSpecifier: "@azure/core-http-compat"
103
+ });
104
+ clientFile.addImportDeclaration({
105
+ namespaceImport: "coreRestPipeline",
106
+ moduleSpecifier: "@azure/core-rest-pipeline"
107
+ });
108
+ const coreRestPipelineImports = [
109
+ "PipelineRequest",
110
+ "PipelineResponse",
111
+ "SendRequest"
112
+ ];
113
+ clientFile.addImportDeclaration({
114
+ namedImports: coreRestPipelineImports,
115
+ moduleSpecifier: "@azure/core-rest-pipeline"
116
+ });
117
+ }
118
+
80
119
  if (hasCredentials || hasInlineOperations || !hasClientOptionalParams) {
81
- if (!useCoreV2) {
82
- clientFile.addImportDeclaration({
83
- namespaceImport: "coreHttp",
84
- moduleSpecifier: "@azure/core-http"
85
- });
86
- } else {
87
- clientFile.addImportDeclaration({
88
- namespaceImport: "coreClient",
89
- moduleSpecifier: "@azure/core-client"
90
- });
91
- clientFile.addImportDeclaration({
92
- namespaceImport: "coreRestPipeline",
93
- moduleSpecifier: "@azure/core-rest-pipeline"
94
- });
120
+ clientFile.addImportDeclaration({
121
+ namespaceImport: "coreTracing",
122
+ moduleSpecifier: "@azure/core-tracing"
123
+ });
124
+ if (hasCredentials) {
95
125
  clientFile.addImportDeclaration({
96
- namespaceImport: "coreTracing",
97
- moduleSpecifier: "@azure/core-tracing"
126
+ namespaceImport: "coreAuth",
127
+ moduleSpecifier: "@azure/core-auth"
98
128
  });
99
- if (hasCredentials) {
100
- clientFile.addImportDeclaration({
101
- namespaceImport: "coreAuth",
102
- moduleSpecifier: "@azure/core-auth"
103
- });
104
- }
105
129
  }
106
130
  }
107
-
108
131
  addPagingEsNextRef(flattenedInlineOperations, clientFile);
109
132
  addPagingImports(flattenedInlineOperations, clientFile);
110
133
 
@@ -112,24 +135,13 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
112
135
 
113
136
  if (hasInlineOperations && hasLro) {
114
137
  clientFile.addImportDeclaration({
115
- namedImports: ["PollerLike", "PollOperationState"],
138
+ namedImports: ["PollerLike", "PollOperationState", "LroEngine"],
116
139
  moduleSpecifier: "@azure/core-lro"
117
140
  });
118
141
  clientFile.addImportDeclaration({
119
- namedImports: ["LroEngine"],
120
- moduleSpecifier: `./lro`
142
+ namedImports: ["LroImpl"],
143
+ moduleSpecifier: `./lroImpl`
121
144
  });
122
- if (useCoreV2) {
123
- clientFile.addImportDeclaration({
124
- namedImports: ["CoreClientLro", "shouldDeserializeLro"],
125
- moduleSpecifier: `./coreClientLro`
126
- });
127
- } else {
128
- clientFile.addImportDeclaration({
129
- namedImports: ["CoreHttpLro", "shouldDeserializeLro"],
130
- moduleSpecifier: `./coreHttpLro`
131
- });
132
- }
133
145
  }
134
146
 
135
147
  if (hasImportedOperations) {
@@ -174,14 +186,13 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
174
186
  });
175
187
  }
176
188
 
177
- clientFile.addImportDeclaration({
178
- namedImports: [clientContextClassName],
179
- moduleSpecifier: `./${clientDetails.sourceFileName}Context`
180
- });
181
-
182
189
  const clientClass = clientFile.addClass({
183
190
  name: clientDetails.className,
184
- extends: clientContextClassName,
191
+ extends: !useCoreV2
192
+ ? "coreHttp.ServiceClient"
193
+ : coreHttpCompatMode
194
+ ? "coreHttpCompat.ExtendedServiceClient"
195
+ : "coreClient.ServiceClient",
185
196
  isExported: true
186
197
  });
187
198
 
@@ -196,8 +207,22 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
196
207
  }
197
208
 
198
209
  const importedModels = new Set<string>();
210
+ const clientParams = clientDetails.parameters.filter(
211
+ param => param.implementationLocation === ImplementationLocation.Client
212
+ );
199
213
 
200
- writeConstructor(clientDetails, clientClass, importedModels);
214
+ const apiVersionParams = clientParams.filter(
215
+ item => item.serializedName.indexOf("api-version") > -1
216
+ );
217
+ const apiVersionParam =
218
+ apiVersionParams && apiVersionParams.length === 1
219
+ ? apiVersionParams[0]
220
+ : undefined;
221
+ writeClassProperties(clientClass, clientParams, importedModels);
222
+ writeConstructor(clientDetails, clientClass, importedModels, apiVersionParam);
223
+ if (useCoreV2 && apiVersionParam) {
224
+ writeCustomApiVersion(clientClass);
225
+ }
201
226
  writeClientOperations(
202
227
  clientFile,
203
228
  clientClass,
@@ -205,7 +230,6 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
205
230
  hasLro,
206
231
  importedModels
207
232
  );
208
-
209
233
  // Use named import from Models
210
234
  if (importedModels.size) {
211
235
  clientFile.addImportDeclaration({
@@ -217,6 +241,26 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
217
241
  clientFile.fixUnusedIdentifiers();
218
242
  }
219
243
 
244
+ function writeClassProperties(
245
+ clientClass: ClassDeclaration,
246
+ clientParams: ParameterDetails[],
247
+ importedModels: Set<string>
248
+ ) {
249
+ const params = clientParams.filter(p => !p.isSynthetic);
250
+ params.forEach(({ typeDetails }) =>
251
+ typeDetails.usedModels.forEach(model => importedModels.add(model))
252
+ );
253
+ clientClass.addProperties(
254
+ params.map(param => {
255
+ return {
256
+ name: param.name,
257
+ type: param.typeDetails.typeName,
258
+ hasQuestionToken: !param.required
259
+ } as PropertyDeclarationStructure;
260
+ })
261
+ );
262
+ }
263
+
220
264
  export function checkForNameCollisions(
221
265
  importedOperations: OperationGroupDetails[],
222
266
  inlineOperations: OperationGroupDetails[]
@@ -244,7 +288,8 @@ export function checkForNameCollisions(
244
288
  function writeConstructor(
245
289
  clientDetails: ClientDetails,
246
290
  classDeclaration: ClassDeclaration,
247
- importedModels: Set<string>
291
+ importedModels: Set<string>,
292
+ apiVersionParam?: ParameterDetails
248
293
  ) {
249
294
  const requiredParams = clientDetails.parameters.filter(
250
295
  param =>
@@ -296,8 +341,57 @@ function writeConstructor(
296
341
  ]
297
342
  });
298
343
 
344
+ const { useCoreV2 } = getAutorestOptions();
345
+ const hasLro = clientDetails.operationGroups.some(og =>
346
+ og.operations.some(o => o.isLro)
347
+ );
348
+
349
+ const clientParams = clientDetails.parameters.filter(
350
+ param => param.implementationLocation === ImplementationLocation.Client
351
+ );
352
+ const addBlankLine = true;
353
+ const requiredParameters = getRequiredParamAssignments(requiredParams);
354
+ const constantParameters = getConstantClientParamAssignments(clientParams);
355
+
356
+ const writeStatement = (content: string, shouldAddBlankLine = false) => (
357
+ writer: CodeBlockWriter
358
+ ) => {
359
+ if (content) {
360
+ writer.writeLine(content);
361
+ shouldAddBlankLine && writer.blankLine();
362
+ }
363
+ };
364
+
365
+ const writeStatements = (lines: string[], shouldAddBlankLine = false) => (
366
+ writer: CodeBlockWriter
367
+ ) => {
368
+ lines.forEach(line => writer.writeLine(line));
369
+ shouldAddBlankLine && writer.blankLine();
370
+ };
371
+
372
+ clientConstructor.addStatements([
373
+ writeStatements(getRequiredParamChecks(requiredParams), addBlankLine),
374
+ writeStatement(
375
+ writeDefaultOptions(
376
+ clientParams.some(p => p.name === "credentials"),
377
+ hasLro,
378
+ clientDetails
379
+ )
380
+ )
381
+ ]);
382
+
383
+ !useCoreV2 &&
384
+ clientConstructor.addStatements([
385
+ writeStatement(getEndpointStatement(clientDetails.endpoint), addBlankLine)
386
+ ]);
387
+
299
388
  clientConstructor.addStatements([
300
- `super(${[...requiredParams.map(p => p.name), "options"].join()});`
389
+ requiredParameters.length ? "// Parameter assignments" : "",
390
+ writeStatements(getRequiredParamAssignments(requiredParams), addBlankLine),
391
+ constantParameters.length
392
+ ? "// Assigning values to Constant parameters"
393
+ : "",
394
+ writeStatements(constantParameters, addBlankLine)
301
395
  ]);
302
396
 
303
397
  const operationDeclarationDetails: OperationDeclarationDetails[] = getOperationGroupsDeclarationDetails(
@@ -309,6 +403,53 @@ function writeConstructor(
309
403
  ({ name, typeName }) => `this.${name} = new ${typeName}Impl(this)`
310
404
  )
311
405
  ]);
406
+ if (useCoreV2 && apiVersionParam) {
407
+ clientConstructor.addStatements(
408
+ `this.addCustomApiVersionPolicy(${
409
+ !apiVersionParam.required ||
410
+ !!apiVersionParam.defaultValue ||
411
+ apiVersionParam.schemaType === SchemaType.Constant
412
+ ? "options."
413
+ : ""
414
+ }apiVersion);`
415
+ );
416
+ }
417
+ }
418
+
419
+ function writeCustomApiVersion(classDeclaration: ClassDeclaration) {
420
+ const operationMethod = classDeclaration.addMethod({
421
+ name: "addCustomApiVersionPolicy",
422
+ parameters: [
423
+ { name: "apiVersion", type: "string", hasQuestionToken: true }
424
+ ],
425
+ scope: Scope.Private,
426
+ docs: [
427
+ "A function that adds a policy that sets the api-version (or equivalent) to reflect the library version."
428
+ ],
429
+ isAsync: false
430
+ });
431
+ operationMethod.addStatements(`if (!apiVersion) { return; }
432
+ const apiVersionPolicy = {
433
+
434
+ name: "CustomApiVersionPolicy",
435
+ async sendRequest(request: PipelineRequest, next: SendRequest): Promise<PipelineResponse> {
436
+ const param = request.url.split('?');
437
+ if (param.length > 1) {
438
+ const newParams = param[1].split('&').map((item) => {
439
+ if(item.indexOf('api-version') > -1) {
440
+ return "api-version=" + apiVersion;
441
+ } else {
442
+ return item;
443
+ }
444
+ });
445
+ request.url = param[0] + "?" + newParams.join("&");
446
+
447
+ }
448
+ return next(request);
449
+ },
450
+ };
451
+ this.pipeline.addPolicy(apiVersionPolicy);
452
+ `);
312
453
  }
313
454
 
314
455
  function getOperationGroupsDeclarationDetails(
@@ -373,3 +514,212 @@ function writeClientOperations(
373
514
  })
374
515
  );
375
516
  }
517
+
518
+ function getRequiredParamChecks(requiredParameters: ParameterDetails[]) {
519
+ return requiredParameters.map(
520
+ ({ name }) => `if(${name} === undefined) {
521
+ throw new Error("'${name}' cannot be null");
522
+ }`
523
+ );
524
+ }
525
+
526
+ function getCredentialScopesValue(credentialScopes?: string | string[]) {
527
+ if (Array.isArray(credentialScopes)) {
528
+ if (
529
+ credentialScopes.length === 1 &&
530
+ credentialScopes[0] === "user_impersonation"
531
+ ) {
532
+ return undefined;
533
+ }
534
+ return `[${credentialScopes.map(scope => `"${scope}"`).join()}]`;
535
+ } else if (typeof credentialScopes === "string") {
536
+ if (credentialScopes === "user_impersonation") {
537
+ return undefined;
538
+ }
539
+ return `"${credentialScopes}"`;
540
+ }
541
+
542
+ return credentialScopes;
543
+ }
544
+
545
+ function getTrack1DefaultContent(addScopes: string, hasCredentials: boolean) {
546
+ return `// Initializing default values for options
547
+ if (!options) {
548
+ options = {};
549
+ }
550
+
551
+ const defaultUserAgent = \`azsdk-js-\${packageName.replace(/@.*\\//,"")}/\${packageVersion} \${coreHttp.getDefaultUserAgentValue()}\`;
552
+
553
+ ${addScopes}
554
+
555
+ super(${hasCredentials ? "credentials" : `undefined`}, {
556
+ ...options,
557
+ userAgent: options.userAgent
558
+ ? \`\${options.userAgent} \${defaultUserAgent}\`
559
+ : \`\${defaultUserAgent}\`
560
+ });
561
+
562
+ this.requestContentType = "application/json; charset=utf-8";
563
+
564
+ `;
565
+ }
566
+
567
+ function getTrack2DefaultContent(
568
+ addScopes: string,
569
+ defaults: string,
570
+ packageDetails: PackageDetails,
571
+ clientDetails: ClientDetails
572
+ ) {
573
+ const { azureArm, allowInsecureConnection } = getAutorestOptions();
574
+
575
+ const defaultContent = `// Initializing default values for options
576
+ if (!options) {
577
+ options = {};
578
+ }
579
+ ${defaults}
580
+
581
+ const packageDetails = \`azsdk-js-${packageDetails.name.replace(
582
+ /@.*\//,
583
+ ""
584
+ )}/${packageDetails.version}\`;
585
+ const userAgentPrefix =
586
+ options.userAgentOptions && options.userAgentOptions.userAgentPrefix
587
+ ? \`\${options.userAgentOptions.userAgentPrefix} \${packageDetails}\`
588
+ : \`\${packageDetails}\`;
589
+
590
+ ${addScopes}
591
+ const optionsWithDefaults = {
592
+ ...defaults,
593
+ ...options,
594
+ userAgentOptions: {
595
+ userAgentPrefix
596
+ },
597
+ baseUri: ${getEndpoint(clientDetails.endpoint)}
598
+ };
599
+ super(optionsWithDefaults);
600
+ `;
601
+
602
+ if (azureArm && !allowInsecureConnection) {
603
+ return (
604
+ defaultContent +
605
+ `
606
+ if (options?.pipeline && options.pipeline.getOrderedPolicies().length > 0) {
607
+ const pipelinePolicies: coreRestPipeline.PipelinePolicy[] = options.pipeline.getOrderedPolicies();
608
+ const bearerTokenAuthenticationPolicyFound = pipelinePolicies.some(
609
+ pipelinePolicy =>
610
+ pipelinePolicy.name ===
611
+ coreRestPipeline.bearerTokenAuthenticationPolicyName
612
+ );
613
+ if (!bearerTokenAuthenticationPolicyFound) {
614
+ this.pipeline.removePolicy({
615
+ name: coreRestPipeline.bearerTokenAuthenticationPolicyName
616
+ });
617
+ this.pipeline.addPolicy(
618
+ coreRestPipeline.bearerTokenAuthenticationPolicy({
619
+ scopes: \`\${optionsWithDefaults.baseUri}/.default\`,
620
+ challengeCallbacks: {
621
+ authorizeRequestOnChallenge:
622
+ coreClient.authorizeRequestOnClaimChallenge
623
+ }
624
+ })
625
+ );
626
+ }
627
+ }
628
+ `
629
+ );
630
+ }
631
+
632
+ return defaultContent;
633
+ }
634
+
635
+ function writeDefaultOptions(
636
+ hasCredentials: boolean,
637
+ hasLro: boolean,
638
+ clientDetails: ClientDetails
639
+ ) {
640
+ const { useCoreV2, packageDetails, addCredentials } = getAutorestOptions();
641
+ const { credentialScopes } = getSecurityInfoFromModel(clientDetails.security);
642
+
643
+ const credentialScopesValues = getCredentialScopesValue(credentialScopes);
644
+ const addScopes = isAddScopes(
645
+ addCredentials,
646
+ credentialScopes,
647
+ credentialScopesValues
648
+ )
649
+ ? `if(!options.credentialScopes) {
650
+ options.credentialScopes = ${credentialScopesValues}
651
+ }`
652
+ : "";
653
+
654
+ const defaults = !hasCredentials
655
+ ? `const defaults: ${clientDetails.className}OptionalParams = {
656
+ requestContentType: "application/json; charset=utf-8"
657
+ };`
658
+ : `const defaults: ${clientDetails.className}OptionalParams = {
659
+ requestContentType: "application/json; charset=utf-8",
660
+ credential: credentials
661
+ };`;
662
+
663
+ return !useCoreV2
664
+ ? getTrack1DefaultContent(addScopes, hasCredentials)
665
+ : getTrack2DefaultContent(
666
+ addScopes,
667
+ defaults,
668
+ packageDetails,
669
+ clientDetails
670
+ );
671
+ }
672
+
673
+ function isAddScopes(
674
+ addCredentials?: boolean,
675
+ credentialScopes?: string[],
676
+ credentialScopesValues?: string
677
+ ) {
678
+ return (
679
+ addCredentials &&
680
+ credentialScopes &&
681
+ credentialScopesValues &&
682
+ credentialScopes.length > 0
683
+ );
684
+ }
685
+
686
+ function getEndpointStatement({ endpoint }: EndpointDetails) {
687
+ return `this.baseUri = options.endpoint ?? ${
688
+ endpoint ? `"${endpoint}"` : `""`
689
+ };`;
690
+ }
691
+
692
+ function getEndpoint({ endpoint }: EndpointDetails) {
693
+ return `options.endpoint ?? options.baseUri ?? ${
694
+ endpoint ? `"${endpoint}"` : `""`
695
+ }`;
696
+ }
697
+
698
+ function getRequiredParamAssignments(requiredParameters: ParameterDetails[]) {
699
+ const disallowedClientParameters = ["credentials"];
700
+ return requiredParameters
701
+ .filter(({ name }) => !disallowedClientParameters.includes(name))
702
+ .map(({ name }) => `this.${name} = ${name};`);
703
+ }
704
+
705
+ function getConstantClientParamAssignments(
706
+ clientParameters: ParameterDetails[]
707
+ ) {
708
+ return clientParameters
709
+ .filter(p => !!p.defaultValue || p.schemaType === SchemaType.Constant)
710
+ .map(
711
+ ({ name, defaultValue }) =>
712
+ `this.${name} = options.${name} || ${defaultValue}`
713
+ );
714
+ }
715
+
716
+ function writePackageInfo(
717
+ sourceFile: SourceFile,
718
+ packageDetails: PackageDetails
719
+ ) {
720
+ sourceFile.addStatements([
721
+ `\n\n`,
722
+ `const packageName = "${packageDetails.name || ""}";`,
723
+ `const packageVersion = "${packageDetails.version || ""}";`
724
+ ]);
725
+ }