@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
@@ -425,9 +425,14 @@ function buildMapper(
425
425
  return "";
426
426
  }
427
427
 
428
- // When mapper is a reference (string) we don't need to stringify the object
429
- let mapperString =
430
- typeof mapper === "string" ? mapper : JSON.stringify(mapper);
428
+ let mapperString = "";
429
+ if (typeof mapper === "string") {
430
+ // When mapper is a reference (string) we don't need to stringify the object
431
+ mapperString = mapper;
432
+ } else {
433
+ const { constraints, ...restMapper } = mapper;
434
+ mapperString = JSON.stringify(restMapper);
435
+ }
431
436
 
432
437
  return `${mapperName}: ${mapperString},`;
433
438
  }
@@ -475,7 +480,7 @@ function addClass(
475
480
  name: "client",
476
481
  isReadonly: true,
477
482
  scope: Scope.Private,
478
- type: `${clientDetails.className}Context`
483
+ type: `${clientDetails.className}`
479
484
  });
480
485
  const constructorDefinition = operationGroupClass.addConstructor({
481
486
  docs: [
@@ -487,7 +492,7 @@ function addClass(
487
492
  {
488
493
  name: "client",
489
494
  hasQuestionToken: false,
490
- type: `${clientDetails.className}Context`
495
+ type: `${clientDetails.className}`
491
496
  }
492
497
  ]
493
498
  });
@@ -768,30 +773,12 @@ function writeNoOverloadsOperationBody(
768
773
  const vanillaOptionsName = "options";
769
774
  let options = vanillaOptionsName;
770
775
 
771
- if (tracingInfo) {
772
- const operationName = operationMethod.getName();
773
- const {
774
- outputOptionsVarName: updatedOptionsName,
775
- statement: tracingStatement
776
- } = getTracingSpanStatement(
777
- clientDetails,
778
- operationName,
779
- `${options} || {}`
780
- );
781
- operationMethod.addStatements([tracingStatement]);
782
- // Options from createSpan should be used as operation options, updating
783
- options = compileOperationOptionsToRequestOptionsBase(
784
- updatedOptionsName,
785
- operation.isLro,
786
- lroResourceLocationConfig
787
- );
788
- } else {
789
- options = compileOperationOptionsToRequestOptionsBase(
790
- vanillaOptionsName,
791
- operation.isLro,
792
- lroResourceLocationConfig
793
- );
794
- }
776
+ // Options from createSpan should be used as operation options, updating
777
+ options = compileOperationOptionsToRequestOptionsBase(
778
+ vanillaOptionsName,
779
+ operation.isLro,
780
+ lroResourceLocationConfig
781
+ );
795
782
 
796
783
  const sendParams = parameterDeclarations
797
784
  .map(p =>
@@ -813,6 +800,7 @@ function writeNoOverloadsOperationBody(
813
800
  if (operation.isLro) {
814
801
  if (!useCoreV2) {
815
802
  writeLroOperationBody(
803
+ clientDetails,
816
804
  "operationArguments",
817
805
  responseName,
818
806
  operationSpecName,
@@ -823,6 +811,7 @@ function writeNoOverloadsOperationBody(
823
811
  );
824
812
  } else {
825
813
  writeLroOperationBody(
814
+ clientDetails,
826
815
  `{${sendParams}}`,
827
816
  responseName,
828
817
  operationSpecName,
@@ -850,18 +839,6 @@ interface OptionsStatement {
850
839
  outputOptionsVarName: string;
851
840
  }
852
841
 
853
- function getTracingSpanStatement(
854
- clientDetails: ClientDetails,
855
- operationName: string,
856
- options: string
857
- ): OptionsStatement {
858
- const outputOptionsVarName = "updatedOptions";
859
- return {
860
- statement: `const { span, ${outputOptionsVarName} } = createSpan("${clientDetails.className}-${operationName}", ${options});`,
861
- outputOptionsVarName: outputOptionsVarName
862
- };
863
- }
864
-
865
842
  function writeSendOperationRequest(
866
843
  responseName: string,
867
844
  operationMethod: MethodDeclaration,
@@ -871,6 +848,7 @@ function writeSendOperationRequest(
871
848
  sendParams: string
872
849
  ) {
873
850
  const { useCoreV2, tracingInfo } = getAutorestOptions();
851
+ const operationName = operationMethod.getName();
874
852
  const client = isInline ? "" : ".client";
875
853
  const sendRequestStatement = !useCoreV2
876
854
  ? `this${client}.sendOperationRequest(operationArguments, ${operationSpecName})`
@@ -879,10 +857,11 @@ function writeSendOperationRequest(
879
857
  // When tracing is enabled we want to report success and failures through OpenTelemetry
880
858
  // so we create a span and mark it as succeeded or failed
881
859
  operationMethod.addStatements(
882
- getTracingTryCatchStatement(
860
+ getTracingClientWithSpanStatement(
883
861
  sendRequestStatement,
884
862
  responseName,
885
- !!tracingInfo
863
+ !!tracingInfo,
864
+ `${clientDetails.className}.${operationName}`
886
865
  )
887
866
  );
888
867
  }
@@ -891,25 +870,18 @@ function getSpanStatusCode() {
891
870
  return "coreTracing.SpanStatusCode.UNSET";
892
871
  }
893
872
 
894
- function getTracingTryCatchStatement(
873
+ function getTracingClientWithSpanStatement(
895
874
  sendRequestStatement: string,
896
875
  responseName: string,
897
- isTracingEnabled: boolean
876
+ isTracingEnabled: boolean,
877
+ spanName: string
898
878
  ) {
899
879
  const { useCoreV2 } = getAutorestOptions();
900
880
  if (isTracingEnabled) {
901
- return `try {
902
- const result = await ${sendRequestStatement}
903
- return result as ${responseName};
904
- } catch(error) {
905
- span.setStatus({
906
- code: ${getSpanStatusCode()},
907
- message: error.message
908
- });
909
- throw error;
910
- } finally {
911
- span.end();
912
- }`;
881
+ return `
882
+ return tracingClient.withSpan("${spanName}", options ?? {}, async options => {
883
+ return ${sendRequestStatement} as Promise<${responseName}>;
884
+ });`;
913
885
  } else {
914
886
  return !useCoreV2
915
887
  ? `return ${sendRequestStatement} as Promise<${responseName}>`
@@ -918,6 +890,7 @@ function getTracingTryCatchStatement(
918
890
  }
919
891
 
920
892
  function writeLroOperationBody(
893
+ clientDetails: ClientDetails,
921
894
  operationParamsName: string,
922
895
  responseName: string,
923
896
  operationSpecName: string,
@@ -927,14 +900,16 @@ function writeLroOperationBody(
927
900
  isTracingEnabled = false
928
901
  ) {
929
902
  const { useCoreV2 } = getAutorestOptions();
903
+ const spanName = `${clientDetails.className}.${methodDeclaration.getName()}`;
930
904
  const client = isInline ? "" : ".client";
931
905
  const sendRequestStatement = `this${client}.sendOperationRequest(args, spec)`;
932
906
  const sendOperationStatement = !useCoreV2
933
907
  ? `const directSendOperation = async (args: coreHttp.OperationArguments, spec: coreHttp.OperationSpec): Promise<${responseName}> => {
934
- ${getTracingTryCatchStatement(
908
+ ${getTracingClientWithSpanStatement(
935
909
  sendRequestStatement,
936
910
  responseName,
937
- isTracingEnabled
911
+ isTracingEnabled,
912
+ spanName
938
913
  )}
939
914
  };
940
915
  const sendOperation = async (args: coreHttp.OperationArguments, spec: coreHttp.OperationSpec) => {
@@ -946,10 +921,11 @@ function writeLroOperationBody(
946
921
  }};
947
922
  }`
948
923
  : `const directSendOperation = async (args: coreClient.OperationArguments, spec: coreClient.OperationSpec): Promise<${responseName}> => {
949
- ${getTracingTryCatchStatement(
924
+ ${getTracingClientWithSpanStatement(
950
925
  sendRequestStatement,
951
926
  responseName,
952
- isTracingEnabled
927
+ isTracingEnabled,
928
+ spanName
953
929
  )}
954
930
  };
955
931
  const sendOperation = async (args: coreClient.OperationArguments, spec: coreClient.OperationSpec) => {
@@ -979,11 +955,13 @@ function writeLroOperationBody(
979
955
  sendOperationStatement,
980
956
  `const lro = new LroImpl(sendOperation,${operationParamsName},
981
957
  ${operationSpecName})`,
982
- `return new LroEngine(lro,{ resumeFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs${
958
+ `const poller = new LroEngine(lro,{ resumeFrom: options?.resumeFrom, intervalInMs: options?.updateIntervalInMs${
983
959
  lroResourceLocationConfig
984
960
  ? `, lroResourceLocationConfig: "${lroResourceLocationConfig.toLowerCase()}"`
985
961
  : ""
986
- } });`
962
+ } });`,
963
+ "await poller.poll();",
964
+ "return poller;"
987
965
  ]);
988
966
 
989
967
  methodDeclaration.setReturnType(
@@ -1006,6 +984,7 @@ function writeMultiMediaTypeOperationBody(
1006
984
  ): void {
1007
985
  const { useCoreV2, tracingInfo } = getAutorestOptions();
1008
986
  const coreImport = !useCoreV2 ? "coreHttp" : "coreClient";
987
+
1009
988
  operationMethod.addStatements([
1010
989
  `let operationSpec: ${coreImport}.OperationSpec;`,
1011
990
  `let operationArguments: ${coreImport}.OperationArguments;`
@@ -1087,29 +1066,13 @@ function writeMultiMediaTypeOperationBody(
1087
1066
  const lroResourceLocationConfig =
1088
1067
  operation.lroOptions && operation.lroOptions["final-state-via"];
1089
1068
 
1090
- if (tracingInfo) {
1091
- const operationName = operationMethod.getName();
1092
- const {
1093
- outputOptionsVarName,
1094
- statement: tracingStatement
1095
- } = getTracingSpanStatement(clientDetails, operationName, optionsVarName);
1096
- operationMethod.addStatements([
1097
- tracingStatement,
1098
- `operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
1099
- outputOptionsVarName,
1100
- operation.isLro,
1101
- lroResourceLocationConfig
1102
- )};`
1103
- ]);
1104
- } else {
1105
- operationMethod.addStatements([
1106
- `operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
1107
- optionsVarName,
1108
- operation.isLro,
1109
- lroResourceLocationConfig
1110
- )};`
1111
- ]);
1112
- }
1069
+ operationMethod.addStatements([
1070
+ `operationArguments.options = ${compileOperationOptionsToRequestOptionsBase(
1071
+ optionsVarName,
1072
+ operation.isLro,
1073
+ lroResourceLocationConfig
1074
+ )};`
1075
+ ]);
1113
1076
 
1114
1077
  if (!operation.isLro) {
1115
1078
  writeSendOperationRequest(
@@ -1122,6 +1085,7 @@ function writeMultiMediaTypeOperationBody(
1122
1085
  );
1123
1086
  } else {
1124
1087
  writeLroOperationBody(
1088
+ clientDetails,
1125
1089
  "operationArguments",
1126
1090
  responseName,
1127
1091
  "operationSpec",
@@ -1319,16 +1283,13 @@ function addImports(
1319
1283
  });
1320
1284
  }
1321
1285
 
1322
- const clientContextClassName = `${className}Context`;
1286
+ const clientClassName = `${className}`;
1323
1287
 
1324
- const clientContextFileName = normalizeName(
1325
- clientContextClassName,
1326
- NameType.File
1327
- );
1288
+ const clientFileName = normalizeName(clientClassName, NameType.File);
1328
1289
 
1329
1290
  operationGroupFile.addImportDeclaration({
1330
- namedImports: [`${clientContextClassName}`],
1331
- moduleSpecifier: `../${clientContextFileName}`
1291
+ namedImports: [`${clientClassName}`],
1292
+ moduleSpecifier: `../${clientFileName}`
1332
1293
  });
1333
1294
 
1334
1295
  if (hasLroOperation(operationGroupDetails)) {
@@ -11,7 +11,6 @@ import {
11
11
  } from "ts-morph";
12
12
  import { ClientDetails } from "../models/clientDetails";
13
13
  import { ParameterDetails } from "../models/parameterDetails";
14
- import { isString } from "util";
15
14
  import { writeMapper } from "./mappersGenerator";
16
15
  import { shouldImportParameters } from "./utils/importUtils";
17
16
  import { logger } from "../utils/logger";
@@ -143,7 +142,7 @@ function writeParameterMapper(
143
142
  { mapper }: ParameterDetails
144
143
  ) {
145
144
  writer.write("mapper: ");
146
- if (isString(mapper)) {
145
+ if (typeof mapper === "string") {
147
146
  writer.write(`${mapper}Mapper`);
148
147
  } else {
149
148
  writeMapper(writer, mapper);
@@ -184,7 +183,7 @@ function getCoreHttpImports(clientDetails: ClientDetails) {
184
183
 
185
184
  function getImportedMappers(clientDetails: ClientDetails) {
186
185
  const mappers = clientDetails.parameters
187
- .filter(p => !p.isSynthetic && isString(p.mapper))
186
+ .filter(p => !p.isSynthetic && typeof p.mapper === "string")
188
187
  .map(p => `${p.mapper} as ${p.mapper}Mapper`);
189
188
 
190
189
  return [...new Set<string>(mappers)];
@@ -0,0 +1,50 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+
4
+ import {
5
+ Project,
6
+ SourceFile
7
+ } from "ts-morph";
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import * as hbs from "handlebars";
11
+ import { getAutorestOptions, getSession } from "../../autorestSession";
12
+ import { ClientDetails } from "../../models/clientDetails";
13
+ import { SampleGroup } from "../../models/sampleDetails";
14
+
15
+ /**
16
+ * Function that writes the code for all the operations.
17
+ * It will generate one file per operation group and each file contains:
18
+ * - A class definition for the operation group
19
+ * - Methods and overrides for each operation
20
+ * - OperationSpecs for each operation
21
+ * @param clientDetails client details
22
+ * @param project project for code generation
23
+ */
24
+ export function generateHLCSamples(
25
+ clientDetails: ClientDetails,
26
+ project: Project
27
+ ): void {
28
+ // Toplevel operations are inlined in the client
29
+ const sampleGroups = clientDetails.samples;
30
+ const session = getSession();
31
+ if (!sampleGroups) {
32
+ session.error("No samples are found! ", []);
33
+ }
34
+ for (const sampleGroup of sampleGroups as SampleGroup[]) {
35
+ try {
36
+ const file = fs.readFileSync(path.join(__dirname, "hlcSamples.ts.hbs"), {
37
+ encoding: "utf-8"
38
+ });
39
+
40
+ const sampleGroupFileContents = hbs.compile(file, { noEscape: true });
41
+ project.createSourceFile(`samples-dev/${sampleGroup.sampleFileName}.ts`, sampleGroupFileContents(sampleGroup), {
42
+ overwrite: true
43
+ });
44
+ } catch (error) {
45
+ session.error("An error was encountered while handling sample generation", [sampleGroup.sampleFileName]);
46
+ throw error;
47
+ }
48
+ }
49
+ }
50
+
@@ -0,0 +1,49 @@
1
+
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ import {
5
+ {{#if importedTypes.length }}
6
+ {{#each importedTypes}}
7
+ {{this}},
8
+ {{/each}}
9
+ {{/if}}
10
+ {{clientClassName}},
11
+ } from "{{clientPackageName}}";
12
+ import { DefaultAzureCredential } from "@azure/identity";
13
+
14
+ {{#each samples}}
15
+ /**
16
+ * This sample demonstrates how to {{this.operationDescription}}
17
+ *
18
+ * @summary {{this.operationDescription}}
19
+ * x-ms-original-file: {{this.originalFileLocation}}
20
+ */
21
+ async function {{this.sampleFunctionName}}() {
22
+ {{#each this.clientParamAssignments}}
23
+ {{this}}
24
+ {{/each}}
25
+ {{#each this.methodParamAssignments}}
26
+ {{this}}
27
+ {{/each}}
28
+ const credential = new DefaultAzureCredential();
29
+ const client = new {{this.clientClassName}}({{this.clientParameterNames}});
30
+ {{#if this.isPaging}}
31
+ const resArray = new Array();
32
+ for await (let item of client{{#unless this.isTopLevel}}.{{this.operationGroupName}}{{/unless}}.{{this.operationName}}({{this.methodParameterNames}})){
33
+ resArray.push(item);
34
+ }
35
+ console.log(resArray);
36
+ {{else}}
37
+ const result = await client
38
+ {{#unless this.isTopLevel}}
39
+ .{{this.operationGroupName}}
40
+ {{/unless}}
41
+ .{{this.operationName}}({{this.methodParameterNames}});
42
+ console.log(result);
43
+
44
+ {{/if}}
45
+ }
46
+
47
+ {{this.sampleFunctionName}}().catch(console.error);
48
+
49
+ {{/each}}
@@ -0,0 +1,72 @@
1
+ import { TestCodeModel } from "@autorest/testmodeler/dist/src/core/model";
2
+ import { Project } from "ts-morph";
3
+ import { getAutorestOptions, getSession } from "../../autorestSession";
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import * as hbs from "handlebars";
7
+ import { NameType, normalizeName } from "../../utils/nameUtils";
8
+ import { getLanguageMetadata } from "../../utils/languageHelpers";
9
+ import { transformBaseUrl } from "../../transforms/urlTransforms";
10
+
11
+ export function generateRLCSamples(model: TestCodeModel, project: Project) {
12
+ const {
13
+ generateSample,
14
+ multiClient
15
+ } = getAutorestOptions();
16
+ const session = getSession();
17
+ if (!generateSample || !model?.testModel?.mockTest?.exampleGroups) {
18
+ return;
19
+ }
20
+ // Not supported to generate code for multi-client
21
+ if (multiClient) {
22
+ return;
23
+ }
24
+ try {
25
+ const file = fs.readFileSync(path.join(__dirname, "rlcSamples.ts.hbs"), {
26
+ encoding: "utf-8"
27
+ });
28
+
29
+ const sampleFileContents = hbs.compile(file, { noEscape: true });
30
+ const sampleData = createSampleData(model);
31
+ project.createSourceFile(`samples-dev/${sampleData.filename}.ts`, sampleFileContents(sampleData), {
32
+ overwrite: true
33
+ });
34
+ } catch (error) {
35
+ session.error("An error was encountered while handling sample generation", []);
36
+ throw error;
37
+ }
38
+ }
39
+
40
+ function createSampleData(model: TestCodeModel) {
41
+ const {
42
+ addCredentials,
43
+ packageDetails
44
+ } = getAutorestOptions();
45
+ const clientFileName = normalizeName(
46
+ getLanguageMetadata(model.language).name,
47
+ NameType.File
48
+ );
49
+ const clientName = getLanguageMetadata(model.language).name;
50
+ const clientInterfaceName = clientName.endsWith("Client") ? `${clientName}` : `${clientName}Client`;
51
+ const { parameterName } = transformBaseUrl(model);
52
+ const hasUriParameter = !!parameterName, hasCredentials = addCredentials;
53
+ const clientParameters = [];
54
+ const clientParamAssignments = [];
55
+ if (hasUriParameter) {
56
+ clientParamAssignments.push(`const ${parameterName} = process.env["ENDPOINT"] || "<${parameterName}>"`);
57
+ clientParameters.push(`${parameterName}`);
58
+ }
59
+ if (hasCredentials) {
60
+ clientParamAssignments.push("const credential = new DefaultAzureCredential();");
61
+ clientParameters.push("credential");
62
+ }
63
+ return {
64
+ filename: `${clientFileName}Sample`,
65
+ clientParamAssignments,
66
+ clientClassName: clientInterfaceName,
67
+ clientPackageName: `${packageDetails.name}`,
68
+ clientParameterNames: clientParameters.join(","),
69
+ hasCredentials
70
+ }
71
+
72
+ }
@@ -0,0 +1,28 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import createClient, {
4
+ {{clientClassName}},
5
+ } from "{{clientPackageName}}";
6
+ {{#if hasCredentials }}
7
+ import { DefaultAzureCredential } from "@azure/identity";
8
+ {{/if}}
9
+ import * as dotenv from "dotenv";
10
+
11
+ dotenv.config();
12
+
13
+ /**
14
+ * This is a simple sample on how to create client and please add your own code below
15
+ *
16
+ */
17
+ async function main() {
18
+ {{#each this.clientParamAssignments}}
19
+ {{this}}
20
+ {{/each}}
21
+ const client: {{clientClassName}} = createClient({{this.clientParameterNames}});
22
+ const result = !!client ? "Success" : "Fail";
23
+ console.log(result," to create client.");
24
+ // Add your own code here
25
+ }
26
+
27
+ main().catch(console.error);
28
+
@@ -0,0 +1,4 @@
1
+ # App registration secret for AAD authentication
2
+ AZURE_CLIENT_SECRET=
3
+ AZURE_CLIENT_ID=
4
+ AZURE_TENANT_ID=
@@ -0,0 +1,14 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as hbs from 'handlebars';
4
+ import { Project } from 'ts-morph';
5
+
6
+ export function generateSampleEnv(project: Project) {
7
+ const file = fs.readFileSync(path.join(__dirname, "sampleEnv.hbs"), {
8
+ encoding: "utf-8"
9
+ });
10
+ const readmeFileContents = hbs.compile(file, { noEscape: true });
11
+ project.createSourceFile("sample.env", readmeFileContents({}), {
12
+ overwrite: true
13
+ });
14
+ }
@@ -5,7 +5,7 @@ import { Project } from "ts-morph";
5
5
  import { getAutorestOptions } from "../../autorestSession";
6
6
 
7
7
  export function generateApiExtractorConfig(project: Project) {
8
- const { generateMetadata, packageDetails } = getAutorestOptions();
8
+ const { generateMetadata, packageDetails, generateTest, restLevelClient } = getAutorestOptions();
9
9
 
10
10
  if (!generateMetadata) {
11
11
  return;
@@ -14,7 +14,7 @@ export function generateApiExtractorConfig(project: Project) {
14
14
  const config = {
15
15
  $schema:
16
16
  "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
17
- mainEntryPointFilePath: `./dist-esm/index.d.ts`,
17
+ mainEntryPointFilePath: `${restLevelClient ? "./types" : "./dist-esm"}${generateTest ? "/src" : ""}/index.d.ts`,
18
18
  docModel: {
19
19
  enabled: true
20
20
  },
@@ -0,0 +1,24 @@
1
+ import { Project } from "ts-morph";
2
+ import { getAutorestOptions } from "../../autorestSession";
3
+
4
+ const esLintConfig = {
5
+ plugins: ["@azure/azure-sdk"],
6
+ extends: ["plugin:@azure/azure-sdk/azure-sdk-base"],
7
+ rules: {
8
+ "@azure/azure-sdk/ts-modules-only-named": "warn",
9
+ "@azure/azure-sdk/ts-apiextractor-json-types": "warn",
10
+ "@azure/azure-sdk/ts-package-json-types": "warn",
11
+ "@azure/azure-sdk/ts-package-json-engine-is-present": "warn",
12
+ "tsdoc/syntax": "warn"
13
+ }
14
+ }
15
+
16
+ export function generateEsLintConfig(project: Project) {
17
+ const { generateMetadata } = getAutorestOptions();
18
+ if (!generateMetadata) {
19
+ return;
20
+ }
21
+ project.createSourceFile(".eslintrc.json", JSON.stringify(esLintConfig), {
22
+ overwrite: true
23
+ });
24
+ }