@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
@@ -0,0 +1,121 @@
1
+ import { CodeModel, Operation } from "@autorest/codemodel";
2
+ import { OptionalKind, MethodSignatureStructure } from "ts-morph";
3
+ import {
4
+ CasingConvention,
5
+ NameType,
6
+ normalizeName,
7
+ ReservedName
8
+ } from "../utils/nameUtils";
9
+ import { buildMethodDefinitions } from "./helpers/operationHelpers";
10
+ import { PathParameter, Paths } from "./interfaces";
11
+
12
+ export const REST_CLIENT_RESERVED: ReservedName[] = [
13
+ { name: "path", reservedFor: [NameType.Property, NameType.OperationGroup] },
14
+ {
15
+ name: "pathUnchecked",
16
+ reservedFor: [NameType.Property, NameType.OperationGroup]
17
+ },
18
+ {
19
+ name: "pipeline",
20
+ reservedFor: [NameType.Property, NameType.OperationGroup]
21
+ }
22
+ ];
23
+ export function generateMethodShortcuts(model: CodeModel, paths: Paths) {
24
+ const operationGroups = model.operationGroups;
25
+ let keys: Record<string, OptionalKind<MethodSignatureStructure>[]> = {};
26
+ for (const group of operationGroups) {
27
+ const groupName = normalizeName(
28
+ group.language.default.name,
29
+ NameType.OperationGroup,
30
+ true,
31
+ REST_CLIENT_RESERVED,
32
+ CasingConvention.Camel
33
+ );
34
+
35
+ keys[groupName] = buildOperationDefinitions(group.operations, paths);
36
+ }
37
+ return keys;
38
+ }
39
+
40
+ export function generateMethodShortcutImplementation(
41
+ model: CodeModel,
42
+ paths: Paths
43
+ ) {
44
+ const operationGroups = model.operationGroups;
45
+ let keys: Record<string, string[]> = {};
46
+ for (const group of operationGroups) {
47
+ const groupName = normalizeName(
48
+ group.language.default.name,
49
+ NameType.OperationGroup,
50
+ true,
51
+ REST_CLIENT_RESERVED,
52
+ CasingConvention.Camel
53
+ );
54
+
55
+ keys[groupName] = buildOperationDeclarations(group.operations, paths);
56
+ }
57
+ return keys;
58
+ }
59
+
60
+ function buildOperationDeclarations(operations: Operation[], paths: Paths) {
61
+ let ops: string[] = [];
62
+
63
+ for (const operation of operations) {
64
+ const name = normalizeName(
65
+ operation.language.default.name,
66
+ NameType.Property,
67
+ true
68
+ );
69
+
70
+ const path = operation.requests![0].protocol.http?.path;
71
+ const method = operation.requests![0].protocol.http?.method;
72
+ const pathParams = paths[path]?.pathParameters;
73
+ const methodDefinitions = generateOperationDeclaration(
74
+ path,
75
+ name,
76
+ method,
77
+ pathParams
78
+ );
79
+ ops = [...ops, methodDefinitions];
80
+ }
81
+
82
+ return ops;
83
+ }
84
+
85
+ function generateOperationDeclaration(
86
+ path: string,
87
+ operationName: string,
88
+ method: string,
89
+ pathParams: PathParameter[] = []
90
+ ): string {
91
+ const pathParamNames = `${
92
+ pathParams.length > 0 ? `${pathParams.map(p => p.name)},` : ""
93
+ }`;
94
+ return `"${operationName}": (${pathParamNames} options) => {
95
+ return client.path("${path}", ${pathParamNames}).${method}(options);
96
+ }`;
97
+ }
98
+
99
+ function buildOperationDefinitions(operations: Operation[], paths: Paths) {
100
+ let ops: OptionalKind<MethodSignatureStructure>[] = [];
101
+
102
+ for (const operation of operations) {
103
+ const name = normalizeName(
104
+ operation.language.default.name,
105
+ NameType.Property,
106
+ true
107
+ );
108
+
109
+ const path = operation.requests![0].protocol.http?.path;
110
+ const method: string = operation.requests![0].protocol.http?.method;
111
+ const methods = paths[path]?.methods[method];
112
+ const pathParams = paths[path]?.pathParameters;
113
+ const methodDefinitions = buildMethodDefinitions(
114
+ { [name]: methods },
115
+ pathParams
116
+ );
117
+ ops = [...ops, ...methodDefinitions];
118
+ }
119
+
120
+ return ops;
121
+ }
@@ -3,12 +3,12 @@ import {
3
3
  ComplexSchema,
4
4
  isObjectSchema,
5
5
  ObjectSchema,
6
- Property
6
+ Property,
7
+ SchemaContext
7
8
  } from "@autorest/codemodel";
8
9
  import { Channel } from "@autorest/extension-base";
9
10
  import {
10
11
  InterfaceDeclarationStructure,
11
- Program,
12
12
  PropertySignatureStructure,
13
13
  StructureKind,
14
14
  TypeAliasDeclarationStructure
@@ -24,16 +24,20 @@ import { getLanguageMetadata } from "../utils/languageHelpers";
24
24
  */
25
25
  export function buildObjectInterfaces(
26
26
  model: CodeModel,
27
- importedModels: Set<string>
27
+ importedModels: Set<string>,
28
+ schemaUsage: SchemaContext[]
28
29
  ): InterfaceDeclarationStructure[] {
29
- const objectSchemas = model.schemas.objects ?? [];
30
+ const objectSchemas = (model.schemas.objects ?? []).filter(o =>
31
+ o.usage?.some(u => schemaUsage.includes(u))
32
+ );
30
33
  const objectInterfaces: InterfaceDeclarationStructure[] = [];
31
34
 
32
35
  for (const objectSchema of objectSchemas) {
33
- const baseName = getObjectBaseName(objectSchema);
36
+ const baseName = getObjectBaseName(objectSchema, schemaUsage);
34
37
  const interfaceDeclaration = getObjectInterfaceDeclaration(
35
38
  baseName,
36
39
  objectSchema,
40
+ schemaUsage,
37
41
  importedModels
38
42
  );
39
43
 
@@ -42,13 +46,22 @@ export function buildObjectInterfaces(
42
46
  return objectInterfaces;
43
47
  }
44
48
 
45
- export function buildPolymorphicAliases(model: CodeModel) {
49
+ export function buildPolymorphicAliases(
50
+ model: CodeModel,
51
+ schemaUsage: SchemaContext[]
52
+ ) {
46
53
  // We'll add aliases for polymorphic objects
47
54
  const objectAliases: TypeAliasDeclarationStructure[] = [];
48
- const objectSchemas = model.schemas.objects ?? [];
55
+ const objectSchemas = (model.schemas.objects ?? []).filter(o =>
56
+ o.usage?.some(u => schemaUsage.includes(u))
57
+ );
49
58
  for (const objectSchema of objectSchemas) {
50
- const baseName = getObjectBaseName(objectSchema);
51
- const typeAlias = getPolymorphicTypeAlias(baseName, objectSchema);
59
+ const baseName = getObjectBaseName(objectSchema, schemaUsage);
60
+ const typeAlias = getPolymorphicTypeAlias(
61
+ baseName,
62
+ objectSchema,
63
+ schemaUsage
64
+ );
52
65
  if (typeAlias) {
53
66
  objectAliases.push(typeAlias);
54
67
  }
@@ -60,12 +73,18 @@ export function buildPolymorphicAliases(model: CodeModel) {
60
73
  /**
61
74
  * Gets a base name for an object schema this is tipically used with suffixes when building interface or type names
62
75
  */
63
- function getObjectBaseName(objectSchema: ObjectSchema) {
64
- return normalizeName(
76
+ function getObjectBaseName(
77
+ objectSchema: ObjectSchema,
78
+ schemaUsage: SchemaContext[]
79
+ ) {
80
+ const nameSuffix = schemaUsage.includes(SchemaContext.Output) ? "Output" : "";
81
+ const name = normalizeName(
65
82
  getLanguageMetadata(objectSchema.language).name,
66
83
  NameType.Interface,
67
84
  true /** guard name */
68
85
  );
86
+
87
+ return `${name}${nameSuffix}`;
69
88
  }
70
89
 
71
90
  /**
@@ -74,7 +93,8 @@ function getObjectBaseName(objectSchema: ObjectSchema) {
74
93
  */
75
94
  function getPolymorphicTypeAlias(
76
95
  baseName: string,
77
- objectSchema: ObjectSchema
96
+ objectSchema: ObjectSchema,
97
+ schemaUsage: SchemaContext[]
78
98
  ): TypeAliasDeclarationStructure | undefined {
79
99
  if (!isPolymorphicParent(objectSchema)) {
80
100
  return undefined;
@@ -88,13 +108,16 @@ function getPolymorphicTypeAlias(
88
108
  }
89
109
 
90
110
  for (const child of objectSchema.children?.all ?? []) {
111
+ const nameSuffix = schemaUsage.includes(SchemaContext.Output)
112
+ ? "Output"
113
+ : "";
91
114
  const name = normalizeName(
92
115
  getLanguageMetadata(child.language).name,
93
116
  NameType.Interface,
94
117
  true /** shouldGuard */
95
118
  );
96
119
 
97
- unionTypes.push(name);
120
+ unionTypes.push(`${name}${nameSuffix}`);
98
121
  }
99
122
 
100
123
  return {
@@ -112,16 +135,21 @@ function getPolymorphicTypeAlias(
112
135
  function getObjectInterfaceDeclaration(
113
136
  baseName: string,
114
137
  objectSchema: ObjectSchema,
138
+ schemaUsage: SchemaContext[],
115
139
  importedModels: Set<string>
116
140
  ): InterfaceDeclarationStructure {
117
- let interfaceName = baseName;
141
+ let interfaceName = `${baseName}`;
118
142
  if (isPolymorphicParent(objectSchema)) {
119
143
  interfaceName = `${baseName}Base`;
120
144
  }
121
145
 
122
146
  const properties = objectSchema.properties ?? [];
123
147
 
124
- let propertySignatures = getPropertySignatures(properties, importedModels);
148
+ let propertySignatures = getPropertySignatures(
149
+ properties,
150
+ schemaUsage,
151
+ importedModels
152
+ );
125
153
 
126
154
  // Add the polymorphic property if exists
127
155
  propertySignatures = addDiscriminatorProperty(
@@ -130,7 +158,7 @@ function getObjectInterfaceDeclaration(
130
158
  );
131
159
 
132
160
  // Calculate the parents of the current object
133
- const extendFrom = getImmediateParentsNames(objectSchema);
161
+ const extendFrom = getImmediateParentsNames(objectSchema, schemaUsage);
134
162
 
135
163
  return {
136
164
  kind: StructureKind.Interface,
@@ -222,7 +250,11 @@ function getDiscriminatorPropertyName(objectSchema: ObjectSchema) {
222
250
  * Calculates the discriminator values that a given object needs
223
251
  */
224
252
  function getDiscriminatorValue(objectSchema: ObjectSchema): string | undefined {
225
- const discriminatorValue = objectSchema.discriminatorValue;
253
+ const discriminatorValue = objectSchema.discriminatorValue
254
+ ? objectSchema.discriminatorValue
255
+ : objectSchema.discriminator?.property.isDiscriminator
256
+ ? objectSchema.language.default.name
257
+ : undefined;
226
258
  const children = objectSchema.children?.immediate ?? [];
227
259
 
228
260
  // If the current object has a discriminatorValue but doesn't have any children
@@ -274,7 +306,10 @@ function getChildDiscriminatorValues(children: ComplexSchema[]): string[] {
274
306
  /**
275
307
  * Gets a list of types a given object may extend from
276
308
  */
277
- function getImmediateParentsNames(objectSchema: ObjectSchema): string[] {
309
+ function getImmediateParentsNames(
310
+ objectSchema: ObjectSchema,
311
+ shcemaUsage: SchemaContext[]
312
+ ): string[] {
278
313
  if (!objectSchema.parents?.immediate) {
279
314
  return [];
280
315
  }
@@ -291,11 +326,14 @@ function getImmediateParentsNames(objectSchema: ObjectSchema): string[] {
291
326
  const parents = objectSchema.parents.immediate
292
327
  .filter(p => !isDictionarySchema(p))
293
328
  .map(parent => {
294
- const name = normalizeName(
329
+ const nameSuffix = shcemaUsage.includes(SchemaContext.Output)
330
+ ? "Output"
331
+ : "";
332
+ const name = `${normalizeName(
295
333
  getLanguageMetadata(parent.language).name,
296
334
  NameType.Interface,
297
335
  true /** shouldGuard */
298
- );
336
+ )}${nameSuffix}`;
299
337
 
300
338
  return isObjectSchema(parent) && isPolymorphicParent(parent)
301
339
  ? `${name}Base`
@@ -307,7 +345,10 @@ function getImmediateParentsNames(objectSchema: ObjectSchema): string[] {
307
345
 
308
346
  function getPropertySignatures(
309
347
  properties: Property[],
348
+ schemaUsage: SchemaContext[],
310
349
  importedModels: Set<string>
311
350
  ) {
312
- return properties.map(p => getPropertySignature(p, importedModels));
351
+ return properties.map(p =>
352
+ getPropertySignature(p, schemaUsage, importedModels)
353
+ );
313
354
  }
@@ -0,0 +1,69 @@
1
+ import { readFileSync } from "fs";
2
+ import { getAutorestOptions, getSession } from "../autorestSession";
3
+ import { extractPaginationDetails } from "../utils/extractPaginationDetails";
4
+ import * as path from "path";
5
+ import * as hbs from "handlebars";
6
+ import { Project } from "ts-morph";
7
+
8
+ interface PagingDetails {
9
+ itemNames: string[];
10
+ nextLinkNames: string[];
11
+ isComplexPaging: boolean;
12
+ }
13
+
14
+ export function generatePagingHelper(project: Project) {
15
+ const pagingInfo = getPagingInfo();
16
+ let file: string = "";
17
+
18
+ file = readFileSync(path.join(__dirname, "paginateHelper.ts.hbs"), {
19
+ encoding: "utf-8"
20
+ });
21
+
22
+ hbs.registerHelper("quoteWrap", function(
23
+ value: string | number | boolean | string[]
24
+ ) {
25
+ if (Array.isArray(value)) {
26
+ return value.map(element => `"${element}"`).join();
27
+ }
28
+
29
+ return `"${value}"`;
30
+ });
31
+
32
+ const { srcPath } = getAutorestOptions();
33
+ const readmeFileContents = hbs.compile(file, { noEscape: true });
34
+ project.createSourceFile(
35
+ path.join(srcPath, "paginateHelper.ts"),
36
+ readmeFileContents(pagingInfo),
37
+ {
38
+ overwrite: true
39
+ }
40
+ );
41
+ }
42
+
43
+ function getPagingInfo(): PagingDetails {
44
+ const { model } = getSession();
45
+ const nextLinks = new Set<string>();
46
+ const itemNames = new Set<string>();
47
+ // Add default values
48
+ nextLinks.add("nextLink");
49
+ itemNames.add("value");
50
+ for (let operationGroup of model.operationGroups) {
51
+ for (let operation of operationGroup.operations) {
52
+ const paginationDetails = extractPaginationDetails(operation);
53
+ if (paginationDetails) {
54
+ const { nextLinkName, itemName } = paginationDetails;
55
+ nextLinkName && nextLinks.add(`${nextLinkName}`);
56
+ itemName && itemNames.add(`${itemName}`);
57
+ }
58
+ }
59
+ }
60
+
61
+ // If there are more than one options for nextLink and item names we need to generate a
62
+ // more complex pagination helper.
63
+ const isComplexPaging = nextLinks.size > 1 || itemNames.size > 1;
64
+ return {
65
+ itemNames: [...itemNames],
66
+ nextLinkNames: [...nextLinks],
67
+ isComplexPaging
68
+ };
69
+ }