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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +42 -5
  2. package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +35 -3
  3. package/dist/hlcSamples.ts.hbs +49 -0
  4. package/dist/karma.conf.js.hbs +126 -0
  5. package/dist/paginateHelper.ts.hbs +208 -0
  6. package/dist/pollingHelper.ts.hbs +72 -0
  7. package/dist/rlcEnv.ts.hbs +3 -0
  8. package/dist/rlcREADME.md.hbs +71 -0
  9. package/dist/rlcRecordedClient.ts.hbs +26 -0
  10. package/dist/rlcSampleTest.spec.ts.hbs +20 -0
  11. package/dist/rlcSamples.ts.hbs +28 -0
  12. package/dist/sampleEnv.hbs +4 -0
  13. package/dist/sampleTest.ts.hbs +32 -0
  14. package/dist/samples.ts.hbs +0 -0
  15. package/dist/src/autorestSession.d.ts +17 -6
  16. package/dist/src/autorestSession.d.ts.map +1 -1
  17. package/dist/src/autorestSession.js +3 -9
  18. package/dist/src/autorestSession.js.map +1 -1
  19. package/dist/src/conflictResolver.d.ts +3 -0
  20. package/dist/src/conflictResolver.d.ts.map +1 -0
  21. package/dist/src/conflictResolver.js +43 -0
  22. package/dist/src/conflictResolver.js.map +1 -0
  23. package/dist/src/generators/LROGenerator.js +4 -4
  24. package/dist/src/generators/LROGenerator.js.map +1 -1
  25. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  26. package/dist/src/generators/clientFileGenerator.js +300 -46
  27. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  28. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  29. package/dist/src/generators/indexGenerator.js +106 -14
  30. package/dist/src/generators/indexGenerator.js.map +1 -1
  31. package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
  32. package/dist/src/generators/mappersGenerator.js +93 -19
  33. package/dist/src/generators/mappersGenerator.js.map +1 -1
  34. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  35. package/dist/src/generators/modelsGenerator.js +80 -81
  36. package/dist/src/generators/modelsGenerator.js.map +1 -1
  37. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  38. package/dist/src/generators/operationGenerator.js +85 -96
  39. package/dist/src/generators/operationGenerator.js.map +1 -1
  40. package/dist/src/generators/operationInterfaceGenerator.js +20 -20
  41. package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
  42. package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
  43. package/dist/src/generators/parametersGenerator.js +7 -8
  44. package/dist/src/generators/parametersGenerator.js.map +1 -1
  45. package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
  46. package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
  47. package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
  48. package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
  49. package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
  50. package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
  51. package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
  52. package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
  53. package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
  54. package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
  55. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  56. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  57. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  58. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  59. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  60. package/dist/src/generators/static/apiExtractorConfig.js +2 -2
  61. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  62. package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
  63. package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
  64. package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
  65. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
  66. package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +35 -3
  67. package/dist/src/generators/static/karma.conf.js.hbs +126 -0
  68. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  69. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  70. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  71. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  72. package/dist/src/generators/static/licenseFileGenerator.js +1 -1
  73. package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
  74. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  75. package/dist/src/generators/static/packageFileGenerator.js +255 -67
  76. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  77. package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
  78. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  79. package/dist/src/generators/static/readmeFileGenerator.js +50 -23
  80. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  81. package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
  82. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  83. package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
  84. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  85. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  86. package/dist/src/generators/static/tsConfigFileGenerator.js +46 -18
  87. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  88. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  89. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  90. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  91. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  92. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  93. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  94. package/dist/src/generators/test/envFileGenerator.js +23 -0
  95. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  96. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  97. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  98. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  99. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  100. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  101. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  102. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  103. package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
  104. package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
  105. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
  106. package/dist/src/generators/test/sampleTestGenerator.js +34 -0
  107. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
  108. package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
  109. package/dist/src/generators/tracingFileGenerator.js +7 -21
  110. package/dist/src/generators/tracingFileGenerator.js.map +1 -1
  111. package/dist/src/generators/utils/docsUtils.js +2 -2
  112. package/dist/src/generators/utils/docsUtils.js.map +1 -1
  113. package/dist/src/generators/utils/operationsUtils.js +1 -1
  114. package/dist/src/generators/utils/operationsUtils.js.map +1 -1
  115. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  116. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  117. package/dist/src/generators/utils/pagingOperations.js +15 -15
  118. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  119. package/dist/src/generators/utils/parameterUtils.js +9 -9
  120. package/dist/src/generators/utils/parameterUtils.js.map +1 -1
  121. package/dist/src/generators/utils/responseTypeUtils.js +2 -2
  122. package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
  123. package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
  124. package/dist/src/generators/utils/tracingUtils.js +2 -6
  125. package/dist/src/generators/utils/tracingUtils.js.map +1 -1
  126. package/dist/src/main.d.ts +2 -2
  127. package/dist/src/main.d.ts.map +1 -1
  128. package/dist/src/main.js +8 -8
  129. package/dist/src/main.js.map +1 -1
  130. package/dist/src/models/clientDetails.d.ts +10 -1
  131. package/dist/src/models/clientDetails.d.ts.map +1 -1
  132. package/dist/src/models/modelDetails.d.ts +2 -2
  133. package/dist/src/models/modelDetails.d.ts.map +1 -1
  134. package/dist/src/models/operationDetails.d.ts +1 -0
  135. package/dist/src/models/operationDetails.d.ts.map +1 -1
  136. package/dist/src/models/sampleDetails.d.ts +22 -0
  137. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  138. package/dist/src/models/sampleDetails.js +3 -0
  139. package/dist/src/models/sampleDetails.js.map +1 -0
  140. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  141. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  142. package/dist/src/restLevelClient/generateClient.js +108 -167
  143. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  144. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  145. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  146. package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
  147. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  148. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
  149. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
  150. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
  151. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
  152. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  153. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  154. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  155. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  156. package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
  157. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  158. package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
  159. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  160. package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
  161. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
  162. package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
  163. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
  164. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  165. package/dist/src/restLevelClient/generateParameterTypes.js +247 -44
  166. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  167. package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
  168. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
  169. package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
  170. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
  171. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  172. package/dist/src/restLevelClient/generateResponseTypes.js +35 -23
  173. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  174. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  175. package/dist/src/restLevelClient/generateRestLevel.js +63 -16
  176. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  177. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  178. package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
  179. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  180. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  181. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  182. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
  183. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  184. package/dist/src/restLevelClient/getPropertySignature.d.ts +2 -2
  185. package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
  186. package/dist/src/restLevelClient/getPropertySignature.js +10 -7
  187. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  188. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
  189. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
  190. package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
  191. package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
  192. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
  193. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
  194. package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
  195. package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
  196. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  197. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  198. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  199. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  200. package/dist/src/restLevelClient/interfaces.d.ts +33 -0
  201. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  202. package/dist/src/restLevelClient/interfaces.js +3 -0
  203. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  204. package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
  205. package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
  206. package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
  207. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  208. package/dist/src/restLevelClient/operationHelpers.js +21 -10
  209. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  210. package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  211. package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  212. package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
  213. package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
  214. package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
  215. package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
  216. package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
  217. package/dist/src/restLevelClient/schemaHelpers.d.ts +8 -2
  218. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  219. package/dist/src/restLevelClient/schemaHelpers.js +27 -12
  220. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  221. package/dist/src/transforms/extensions.js +10 -10
  222. package/dist/src/transforms/extensions.js.map +1 -1
  223. package/dist/src/transforms/groupTransforms.js +2 -2
  224. package/dist/src/transforms/groupTransforms.js.map +1 -1
  225. package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
  226. package/dist/src/transforms/mapperTransforms.js +29 -26
  227. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  228. package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
  229. package/dist/src/transforms/objectTransforms.js +42 -26
  230. package/dist/src/transforms/objectTransforms.js.map +1 -1
  231. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  232. package/dist/src/transforms/operationTransforms.js +29 -26
  233. package/dist/src/transforms/operationTransforms.js.map +1 -1
  234. package/dist/src/transforms/optionsTransforms.js +1 -1
  235. package/dist/src/transforms/optionsTransforms.js.map +1 -1
  236. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  237. package/dist/src/transforms/parameterTransforms.js +43 -27
  238. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  239. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  240. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  241. package/dist/src/transforms/samplesTransforms.js +293 -0
  242. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  243. package/dist/src/transforms/transforms.d.ts +1 -2
  244. package/dist/src/transforms/transforms.d.ts.map +1 -1
  245. package/dist/src/transforms/transforms.js +26 -24
  246. package/dist/src/transforms/transforms.js.map +1 -1
  247. package/dist/src/transforms/urlTransforms.js +3 -3
  248. package/dist/src/transforms/urlTransforms.js.map +1 -1
  249. package/dist/src/typescriptGenerator.d.ts +2 -2
  250. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  251. package/dist/src/typescriptGenerator.js +46 -46
  252. package/dist/src/typescriptGenerator.js.map +1 -1
  253. package/dist/src/utils/autorestOptions.d.ts +2 -2
  254. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  255. package/dist/src/utils/autorestOptions.js +141 -62
  256. package/dist/src/utils/autorestOptions.js.map +1 -1
  257. package/dist/src/utils/cloneOperation.js +2 -2
  258. package/dist/src/utils/cloneOperation.js.map +1 -1
  259. package/dist/src/utils/copyFiles.d.ts +2 -0
  260. package/dist/src/utils/copyFiles.d.ts.map +1 -0
  261. package/dist/src/utils/copyFiles.js +33 -0
  262. package/dist/src/utils/copyFiles.js.map +1 -0
  263. package/dist/src/utils/extractHeaders.js +4 -4
  264. package/dist/src/utils/extractHeaders.js.map +1 -1
  265. package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
  266. package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
  267. package/dist/src/utils/extractPaginationDetails.js +23 -10
  268. package/dist/src/utils/extractPaginationDetails.js.map +1 -1
  269. package/dist/src/utils/headersToSchema.js +1 -1
  270. package/dist/src/utils/headersToSchema.js.map +1 -1
  271. package/dist/src/utils/logger.js +1 -1
  272. package/dist/src/utils/logger.js.map +1 -1
  273. package/dist/src/utils/nameUtils.d.ts +6 -2
  274. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  275. package/dist/src/utils/nameUtils.js +13 -8
  276. package/dist/src/utils/nameUtils.js.map +1 -1
  277. package/dist/src/utils/schemaHelpers.d.ts +6 -1
  278. package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
  279. package/dist/src/utils/schemaHelpers.js +50 -7
  280. package/dist/src/utils/schemaHelpers.js.map +1 -1
  281. package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
  282. package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
  283. package/dist/src/utils/valueHelpers.js +1 -1
  284. package/dist/src/utils/valueHelpers.js.map +1 -1
  285. package/package.json +58 -39
  286. package/src/autorestSession.ts +25 -18
  287. package/src/conflictResolver.ts +61 -0
  288. package/src/generators/clientFileGenerator.ts +397 -36
  289. package/src/generators/indexGenerator.ts +118 -12
  290. package/src/generators/mappersGenerator.ts +108 -8
  291. package/src/generators/modelsGenerator.ts +98 -97
  292. package/src/generators/operationGenerator.ts +54 -93
  293. package/src/generators/parametersGenerator.ts +2 -3
  294. package/src/generators/samples/hlcSampleGenerator.ts +50 -0
  295. package/src/generators/samples/hlcSamples.ts.hbs +49 -0
  296. package/src/generators/samples/rlcSampleGenerator.ts +72 -0
  297. package/src/generators/samples/rlcSamples.ts.hbs +28 -0
  298. package/src/generators/samples/sampleEnv.hbs +4 -0
  299. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  300. package/src/generators/static/apiExtractorConfig.ts +2 -2
  301. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  302. package/src/generators/static/hlcREADME.md.hbs +144 -0
  303. package/src/generators/static/karma.conf.js.hbs +126 -0
  304. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  305. package/src/generators/static/packageFileGenerator.ts +292 -71
  306. package/src/generators/static/readmeFileGenerator.ts +79 -42
  307. package/src/generators/static/rlcREADME.md.hbs +71 -0
  308. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  309. package/src/generators/static/tsConfigFileGenerator.ts +54 -19
  310. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  311. package/src/generators/test/envFileGenerator.ts +22 -0
  312. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  313. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  314. package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  315. package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  316. package/src/generators/test/sampleTest.ts.hbs +32 -0
  317. package/src/generators/test/sampleTestGenerator.ts +32 -0
  318. package/src/generators/tracingFileGenerator.ts +6 -24
  319. package/src/generators/utils/pagingOperations.ts +1 -2
  320. package/src/generators/utils/tracingUtils.ts +1 -5
  321. package/src/main.ts +8 -5
  322. package/src/models/clientDetails.ts +11 -1
  323. package/src/models/modelDetails.ts +2 -2
  324. package/src/models/operationDetails.ts +1 -0
  325. package/src/models/sampleDetails.ts +22 -0
  326. package/src/restLevelClient/generateClient.ts +134 -244
  327. package/src/restLevelClient/generateClientDefinition.ts +386 -0
  328. package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
  329. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  330. package/src/restLevelClient/generateObjectTypes.ts +62 -21
  331. package/src/restLevelClient/generatePagingHelper.ts +69 -0
  332. package/src/restLevelClient/generateParameterTypes.ts +377 -56
  333. package/src/restLevelClient/generatePollingHelper.ts +19 -0
  334. package/src/restLevelClient/generateResponseTypes.ts +36 -17
  335. package/src/restLevelClient/generateRestLevel.ts +63 -8
  336. package/src/restLevelClient/generateSchemaTypes.ts +43 -8
  337. package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
  338. package/src/restLevelClient/getPropertySignature.ts +12 -4
  339. package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
  340. package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
  341. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  342. package/src/restLevelClient/interfaces.ts +39 -0
  343. package/src/restLevelClient/operationHelpers.ts +23 -9
  344. package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  345. package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  346. package/src/restLevelClient/samples/generateSamples.ts +23 -0
  347. package/src/restLevelClient/samples/samples.ts.hbs +0 -0
  348. package/src/restLevelClient/schemaHelpers.ts +30 -8
  349. package/src/transforms/mapperTransforms.ts +11 -5
  350. package/src/transforms/objectTransforms.ts +26 -6
  351. package/src/transforms/operationTransforms.ts +6 -1
  352. package/src/transforms/parameterTransforms.ts +26 -7
  353. package/src/transforms/samplesTransforms.ts +349 -0
  354. package/src/transforms/transforms.ts +14 -9
  355. package/src/typescriptGenerator.ts +40 -53
  356. package/src/utils/autorestOptions.ts +198 -88
  357. package/src/utils/copyFiles.ts +36 -0
  358. package/src/utils/extractPaginationDetails.ts +19 -1
  359. package/src/utils/nameUtils.ts +18 -9
  360. package/src/utils/schemaHelpers.ts +51 -4
  361. package/CHANGELOG.md +0 -56
  362. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  363. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  364. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  365. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  366. package/src/generators/clientContextFileGenerator.ts +0 -405
@@ -0,0 +1,61 @@
1
+ import { ClientDetails } from "./models/clientDetails";
2
+
3
+ const RESERVED_MEMBER_NAMES = ["pipeline"];
4
+
5
+ export function conflictResolver(clientDetails: ClientDetails) {
6
+ resolveConflictWithOperationGroupNames(clientDetails);
7
+ }
8
+
9
+ function resolveConflictWithOperationGroupNames(clientDetails: ClientDetails) {
10
+ clientDetails.operationGroups.forEach(operationGroup => {
11
+ const isConflict: boolean = checkForConflictWithDefinitions(
12
+ operationGroup.name,
13
+ clientDetails
14
+ );
15
+
16
+ if (isConflict) {
17
+ if (
18
+ !checkForConflictWithOperationGroupName(
19
+ `${operationGroup.name}Operations`,
20
+ clientDetails
21
+ )
22
+ ) {
23
+ operationGroup.name = `${operationGroup.name}Operations`;
24
+ operationGroup.key = `${operationGroup.key}Operations`;
25
+ } else {
26
+ operationGroup.name = `${operationGroup.name}OperationGrp`;
27
+ operationGroup.key = `${operationGroup.key}OperationGrp`;
28
+ }
29
+ }
30
+ });
31
+ }
32
+
33
+ function checkForConflictWithDefinitions(
34
+ operationGroupName: string,
35
+ clientDetails: ClientDetails
36
+ ): boolean {
37
+ if (RESERVED_MEMBER_NAMES.includes(operationGroupName.toLowerCase())) {
38
+ return true;
39
+ }
40
+
41
+ for (const model of clientDetails.objects) {
42
+ if (model.name === operationGroupName) {
43
+ return true;
44
+ }
45
+ }
46
+
47
+ return false;
48
+ }
49
+
50
+ function checkForConflictWithOperationGroupName(
51
+ operationGroupName: string,
52
+ clientDetails: ClientDetails
53
+ ): boolean {
54
+ for (const og of clientDetails.operationGroups) {
55
+ if (og.name === operationGroupName) {
56
+ return true;
57
+ }
58
+ }
59
+
60
+ return false;
61
+ }
@@ -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
 
@@ -163,14 +186,13 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
163
186
  });
164
187
  }
165
188
 
166
- clientFile.addImportDeclaration({
167
- namedImports: [clientContextClassName],
168
- moduleSpecifier: `./${clientDetails.sourceFileName}Context`
169
- });
170
-
171
189
  const clientClass = clientFile.addClass({
172
190
  name: clientDetails.className,
173
- extends: clientContextClassName,
191
+ extends: !useCoreV2
192
+ ? "coreHttp.ServiceClient"
193
+ : coreHttpCompatMode
194
+ ? "coreHttpCompat.ExtendedServiceClient"
195
+ : "coreClient.ServiceClient",
174
196
  isExported: true
175
197
  });
176
198
 
@@ -185,8 +207,22 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
185
207
  }
186
208
 
187
209
  const importedModels = new Set<string>();
210
+ const clientParams = clientDetails.parameters.filter(
211
+ param => param.implementationLocation === ImplementationLocation.Client
212
+ );
188
213
 
189
- 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
+ }
190
226
  writeClientOperations(
191
227
  clientFile,
192
228
  clientClass,
@@ -194,7 +230,6 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
194
230
  hasLro,
195
231
  importedModels
196
232
  );
197
-
198
233
  // Use named import from Models
199
234
  if (importedModels.size) {
200
235
  clientFile.addImportDeclaration({
@@ -206,6 +241,26 @@ export function generateClient(clientDetails: ClientDetails, project: Project) {
206
241
  clientFile.fixUnusedIdentifiers();
207
242
  }
208
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
+
209
264
  export function checkForNameCollisions(
210
265
  importedOperations: OperationGroupDetails[],
211
266
  inlineOperations: OperationGroupDetails[]
@@ -233,7 +288,8 @@ export function checkForNameCollisions(
233
288
  function writeConstructor(
234
289
  clientDetails: ClientDetails,
235
290
  classDeclaration: ClassDeclaration,
236
- importedModels: Set<string>
291
+ importedModels: Set<string>,
292
+ apiVersionParam?: ParameterDetails
237
293
  ) {
238
294
  const requiredParams = clientDetails.parameters.filter(
239
295
  param =>
@@ -285,8 +341,57 @@ function writeConstructor(
285
341
  ]
286
342
  });
287
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
+
288
372
  clientConstructor.addStatements([
289
- `super(${[...requiredParams.map(p => p.name), "options"].join()});`
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
+
388
+ clientConstructor.addStatements([
389
+ requiredParameters.length ? "// Parameter assignments" : "",
390
+ writeStatements(getRequiredParamAssignments(requiredParams), addBlankLine),
391
+ constantParameters.length
392
+ ? "// Assigning values to Constant parameters"
393
+ : "",
394
+ writeStatements(constantParameters, addBlankLine)
290
395
  ]);
291
396
 
292
397
  const operationDeclarationDetails: OperationDeclarationDetails[] = getOperationGroupsDeclarationDetails(
@@ -298,6 +403,53 @@ function writeConstructor(
298
403
  ({ name, typeName }) => `this.${name} = new ${typeName}Impl(this)`
299
404
  )
300
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
+ `);
301
453
  }
302
454
 
303
455
  function getOperationGroupsDeclarationDetails(
@@ -362,3 +514,212 @@ function writeClientOperations(
362
514
  })
363
515
  );
364
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
+ }