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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/README.md +42 -5
  2. package/dist/{src/generators/static/README.md.hbs → hlcREADME.md.hbs} +41 -5
  3. package/dist/hlcSamples.ts.hbs +49 -0
  4. package/dist/karma.conf.js.hbs +126 -0
  5. package/dist/paginateHelper.ts.hbs +208 -0
  6. package/dist/pollingHelper.ts.hbs +72 -0
  7. package/dist/rlcEnv.ts.hbs +3 -0
  8. package/dist/rlcREADME.md.hbs +71 -0
  9. package/dist/rlcRecordedClient.ts.hbs +26 -0
  10. package/dist/rlcSampleTest.spec.ts.hbs +20 -0
  11. package/dist/rlcSamples.ts.hbs +28 -0
  12. package/dist/sampleEnv.hbs +4 -0
  13. package/dist/sampleTest.ts.hbs +32 -0
  14. package/dist/samples.ts.hbs +0 -0
  15. package/dist/src/autorestSession.d.ts +18 -6
  16. package/dist/src/autorestSession.d.ts.map +1 -1
  17. package/dist/src/autorestSession.js +3 -9
  18. package/dist/src/autorestSession.js.map +1 -1
  19. package/dist/src/conflictResolver.d.ts +3 -0
  20. package/dist/src/conflictResolver.d.ts.map +1 -0
  21. package/dist/src/conflictResolver.js +43 -0
  22. package/dist/src/conflictResolver.js.map +1 -0
  23. package/dist/src/generators/LROGenerator.d.ts.map +1 -1
  24. package/dist/src/generators/LROGenerator.js +5 -13
  25. package/dist/src/generators/LROGenerator.js.map +1 -1
  26. package/dist/src/generators/clientFileGenerator.d.ts.map +1 -1
  27. package/dist/src/generators/clientFileGenerator.js +303 -61
  28. package/dist/src/generators/clientFileGenerator.js.map +1 -1
  29. package/dist/src/generators/indexGenerator.d.ts +1 -1
  30. package/dist/src/generators/indexGenerator.d.ts.map +1 -1
  31. package/dist/src/generators/indexGenerator.js +143 -11
  32. package/dist/src/generators/indexGenerator.js.map +1 -1
  33. package/dist/src/generators/mappersGenerator.d.ts.map +1 -1
  34. package/dist/src/generators/mappersGenerator.js +93 -19
  35. package/dist/src/generators/mappersGenerator.js.map +1 -1
  36. package/dist/src/generators/modelsGenerator.d.ts.map +1 -1
  37. package/dist/src/generators/modelsGenerator.js +81 -82
  38. package/dist/src/generators/modelsGenerator.js.map +1 -1
  39. package/dist/src/generators/operationGenerator.d.ts.map +1 -1
  40. package/dist/src/generators/operationGenerator.js +92 -125
  41. package/dist/src/generators/operationGenerator.js.map +1 -1
  42. package/dist/src/generators/operationInterfaceGenerator.js +20 -20
  43. package/dist/src/generators/operationInterfaceGenerator.js.map +1 -1
  44. package/dist/src/generators/parametersGenerator.d.ts.map +1 -1
  45. package/dist/src/generators/parametersGenerator.js +7 -8
  46. package/dist/src/generators/parametersGenerator.js.map +1 -1
  47. package/dist/src/generators/samples/hlcSampleGenerator.d.ts +13 -0
  48. package/dist/src/generators/samples/hlcSampleGenerator.d.ts.map +1 -0
  49. package/dist/src/generators/samples/hlcSampleGenerator.js +43 -0
  50. package/dist/src/generators/samples/hlcSampleGenerator.js.map +1 -0
  51. package/dist/src/generators/samples/hlcSamples.ts.hbs +49 -0
  52. package/dist/src/generators/samples/rlcSampleGenerator.d.ts +4 -0
  53. package/dist/src/generators/samples/rlcSampleGenerator.d.ts.map +1 -0
  54. package/dist/src/generators/samples/rlcSampleGenerator.js +64 -0
  55. package/dist/src/generators/samples/rlcSampleGenerator.js.map +1 -0
  56. package/dist/src/generators/samples/rlcSamples.ts.hbs +28 -0
  57. package/dist/src/generators/samples/sampleEnv.hbs +4 -0
  58. package/dist/src/generators/samples/sampleEnvGenerator.d.ts +3 -0
  59. package/dist/src/generators/samples/sampleEnvGenerator.d.ts.map +1 -0
  60. package/dist/src/generators/samples/sampleEnvGenerator.js +17 -0
  61. package/dist/src/generators/samples/sampleEnvGenerator.js.map +1 -0
  62. package/dist/src/generators/static/apiExtractorConfig.js +3 -3
  63. package/dist/src/generators/static/apiExtractorConfig.js.map +1 -1
  64. package/dist/src/generators/static/esLintConfigGenerator.d.ts +3 -0
  65. package/dist/src/generators/static/esLintConfigGenerator.d.ts.map +1 -0
  66. package/dist/src/generators/static/esLintConfigGenerator.js +26 -0
  67. package/dist/src/generators/static/esLintConfigGenerator.js.map +1 -0
  68. package/{src/generators/static/README.md.hbs → dist/src/generators/static/hlcREADME.md.hbs} +41 -5
  69. package/dist/src/generators/static/karma.conf.js.hbs +126 -0
  70. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts +3 -0
  71. package/dist/src/generators/static/karmaConfigFileGenerator.d.ts.map +1 -0
  72. package/dist/src/generators/static/karmaConfigFileGenerator.js +23 -0
  73. package/dist/src/generators/static/karmaConfigFileGenerator.js.map +1 -0
  74. package/dist/src/generators/static/licenseFileGenerator.js +1 -1
  75. package/dist/src/generators/static/licenseFileGenerator.js.map +1 -1
  76. package/dist/src/generators/static/packageFileGenerator.d.ts.map +1 -1
  77. package/dist/src/generators/static/packageFileGenerator.js +267 -79
  78. package/dist/src/generators/static/packageFileGenerator.js.map +1 -1
  79. package/dist/src/generators/static/readmeFileGenerator.d.ts +2 -2
  80. package/dist/src/generators/static/readmeFileGenerator.d.ts.map +1 -1
  81. package/dist/src/generators/static/readmeFileGenerator.js +54 -26
  82. package/dist/src/generators/static/readmeFileGenerator.js.map +1 -1
  83. package/dist/src/generators/static/rlcREADME.md.hbs +71 -0
  84. package/dist/src/generators/static/rollupConfigFileGenerator.d.ts.map +1 -1
  85. package/dist/src/generators/static/rollupConfigFileGenerator.js +12 -71
  86. package/dist/src/generators/static/rollupConfigFileGenerator.js.map +1 -1
  87. package/dist/src/generators/static/tsConfigFileGenerator.d.ts.map +1 -1
  88. package/dist/src/generators/static/tsConfigFileGenerator.js +47 -20
  89. package/dist/src/generators/static/tsConfigFileGenerator.js.map +1 -1
  90. package/dist/src/generators/test/envBrowserFileGenerator.d.ts +3 -0
  91. package/dist/src/generators/test/envBrowserFileGenerator.d.ts.map +1 -0
  92. package/dist/src/generators/test/envBrowserFileGenerator.js +15 -0
  93. package/dist/src/generators/test/envBrowserFileGenerator.js.map +1 -0
  94. package/dist/src/generators/test/envFileGenerator.d.ts +3 -0
  95. package/dist/src/generators/test/envFileGenerator.d.ts.map +1 -0
  96. package/dist/src/generators/test/envFileGenerator.js +23 -0
  97. package/dist/src/generators/test/envFileGenerator.js.map +1 -0
  98. package/dist/src/generators/test/recordedClientFileGenerator.d.ts +3 -0
  99. package/dist/src/generators/test/recordedClientFileGenerator.d.ts.map +1 -0
  100. package/dist/src/generators/test/recordedClientFileGenerator.js +23 -0
  101. package/dist/src/generators/test/recordedClientFileGenerator.js.map +1 -0
  102. package/dist/src/generators/test/rlcEnv.ts.hbs +3 -0
  103. package/dist/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  104. package/dist/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  105. package/dist/src/generators/test/sampleTest.ts.hbs +32 -0
  106. package/dist/src/generators/test/sampleTestGenerator.d.ts +3 -0
  107. package/dist/src/generators/test/sampleTestGenerator.d.ts.map +1 -0
  108. package/dist/src/generators/test/sampleTestGenerator.js +34 -0
  109. package/dist/src/generators/test/sampleTestGenerator.js.map +1 -0
  110. package/dist/src/generators/tracingFileGenerator.d.ts.map +1 -1
  111. package/dist/src/generators/tracingFileGenerator.js +7 -21
  112. package/dist/src/generators/tracingFileGenerator.js.map +1 -1
  113. package/dist/src/generators/utils/docsUtils.js +2 -2
  114. package/dist/src/generators/utils/docsUtils.js.map +1 -1
  115. package/dist/src/generators/utils/operationsUtils.js +1 -1
  116. package/dist/src/generators/utils/operationsUtils.js.map +1 -1
  117. package/dist/src/generators/utils/pagingOperations.d.ts +5 -0
  118. package/dist/src/generators/utils/pagingOperations.d.ts.map +1 -1
  119. package/dist/src/generators/utils/pagingOperations.js +15 -15
  120. package/dist/src/generators/utils/pagingOperations.js.map +1 -1
  121. package/dist/src/generators/utils/parameterUtils.js +9 -9
  122. package/dist/src/generators/utils/parameterUtils.js.map +1 -1
  123. package/dist/src/generators/utils/responseTypeUtils.js +2 -2
  124. package/dist/src/generators/utils/responseTypeUtils.js.map +1 -1
  125. package/dist/src/generators/utils/tracingUtils.d.ts.map +1 -1
  126. package/dist/src/generators/utils/tracingUtils.js +2 -6
  127. package/dist/src/generators/utils/tracingUtils.js.map +1 -1
  128. package/dist/src/lroImpl.d.ts +16 -0
  129. package/dist/src/lroImpl.d.ts.map +1 -0
  130. package/dist/src/lroImpl.js +45 -0
  131. package/dist/src/lroImpl.js.map +1 -0
  132. package/dist/src/main.d.ts +2 -2
  133. package/dist/src/main.d.ts.map +1 -1
  134. package/dist/src/main.js +8 -8
  135. package/dist/src/main.js.map +1 -1
  136. package/dist/src/models/clientDetails.d.ts +10 -1
  137. package/dist/src/models/clientDetails.d.ts.map +1 -1
  138. package/dist/src/models/modelDetails.d.ts +2 -2
  139. package/dist/src/models/modelDetails.d.ts.map +1 -1
  140. package/dist/src/models/operationDetails.d.ts +1 -0
  141. package/dist/src/models/operationDetails.d.ts.map +1 -1
  142. package/dist/src/models/sampleDetails.d.ts +22 -0
  143. package/dist/src/models/sampleDetails.d.ts.map +1 -0
  144. package/dist/src/models/sampleDetails.js +3 -0
  145. package/dist/src/models/sampleDetails.js.map +1 -0
  146. package/dist/src/restLevelClient/generateClient.d.ts +1 -1
  147. package/dist/src/restLevelClient/generateClient.d.ts.map +1 -1
  148. package/dist/src/restLevelClient/generateClient.js +108 -167
  149. package/dist/src/restLevelClient/generateClient.js.map +1 -1
  150. package/dist/src/restLevelClient/generateClientDefinition.d.ts +6 -0
  151. package/dist/src/restLevelClient/generateClientDefinition.d.ts.map +1 -0
  152. package/dist/src/restLevelClient/generateClientDefinition.js +261 -0
  153. package/dist/src/restLevelClient/generateClientDefinition.js.map +1 -0
  154. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts +8 -0
  155. package/dist/src/restLevelClient/generateIsUnexpectedHelper.d.ts.map +1 -0
  156. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js +204 -0
  157. package/dist/src/restLevelClient/generateIsUnexpectedHelper.js.map +1 -0
  158. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts +8 -0
  159. package/dist/src/restLevelClient/generateMethodShortcuts.d.ts.map +1 -0
  160. package/dist/src/restLevelClient/generateMethodShortcuts.js +70 -0
  161. package/dist/src/restLevelClient/generateMethodShortcuts.js.map +1 -0
  162. package/dist/src/restLevelClient/generateObjectTypes.d.ts +3 -3
  163. package/dist/src/restLevelClient/generateObjectTypes.d.ts.map +1 -1
  164. package/dist/src/restLevelClient/generateObjectTypes.js +43 -31
  165. package/dist/src/restLevelClient/generateObjectTypes.js.map +1 -1
  166. package/dist/src/restLevelClient/generatePagingHelper.d.ts +3 -0
  167. package/dist/src/restLevelClient/generatePagingHelper.d.ts.map +1 -0
  168. package/dist/src/restLevelClient/generatePagingHelper.js +54 -0
  169. package/dist/src/restLevelClient/generatePagingHelper.js.map +1 -0
  170. package/dist/src/restLevelClient/generateParameterTypes.d.ts.map +1 -1
  171. package/dist/src/restLevelClient/generateParameterTypes.js +247 -43
  172. package/dist/src/restLevelClient/generateParameterTypes.js.map +1 -1
  173. package/dist/src/restLevelClient/generatePollingHelper.d.ts +3 -0
  174. package/dist/src/restLevelClient/generatePollingHelper.d.ts.map +1 -0
  175. package/dist/src/restLevelClient/generatePollingHelper.js +20 -0
  176. package/dist/src/restLevelClient/generatePollingHelper.js.map +1 -0
  177. package/dist/src/restLevelClient/generateResponseTypes.d.ts.map +1 -1
  178. package/dist/src/restLevelClient/generateResponseTypes.js +45 -29
  179. package/dist/src/restLevelClient/generateResponseTypes.js.map +1 -1
  180. package/dist/src/restLevelClient/generateRestLevel.d.ts.map +1 -1
  181. package/dist/src/restLevelClient/generateRestLevel.js +64 -15
  182. package/dist/src/restLevelClient/generateRestLevel.js.map +1 -1
  183. package/dist/src/restLevelClient/generateSchemaTypes.d.ts.map +1 -1
  184. package/dist/src/restLevelClient/generateSchemaTypes.js +29 -7
  185. package/dist/src/restLevelClient/generateSchemaTypes.js.map +1 -1
  186. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts +4 -0
  187. package/dist/src/restLevelClient/generateTopLevelIndexFile.d.ts.map +1 -0
  188. package/dist/src/restLevelClient/generateTopLevelIndexFile.js +37 -0
  189. package/dist/src/restLevelClient/generateTopLevelIndexFile.js.map +1 -0
  190. package/dist/src/restLevelClient/getPropertySignature.d.ts +3 -2
  191. package/dist/src/restLevelClient/getPropertySignature.d.ts.map +1 -1
  192. package/dist/src/restLevelClient/getPropertySignature.js +23 -7
  193. package/dist/src/restLevelClient/getPropertySignature.js.map +1 -1
  194. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts +4 -0
  195. package/dist/src/restLevelClient/helpers/hasPollingOperations.d.ts.map +1 -0
  196. package/dist/src/restLevelClient/helpers/hasPollingOperations.js +12 -0
  197. package/dist/src/restLevelClient/helpers/hasPollingOperations.js.map +1 -0
  198. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts +4 -0
  199. package/dist/src/restLevelClient/helpers/modelHelpers.d.ts.map +1 -0
  200. package/dist/src/restLevelClient/helpers/modelHelpers.js +19 -0
  201. package/dist/src/restLevelClient/helpers/modelHelpers.js.map +1 -0
  202. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts +10 -0
  203. package/dist/src/restLevelClient/helpers/operationHelpers.d.ts.map +1 -0
  204. package/dist/src/restLevelClient/helpers/operationHelpers.js +64 -0
  205. package/dist/src/restLevelClient/helpers/operationHelpers.js.map +1 -0
  206. package/dist/src/restLevelClient/interfaces.d.ts +33 -0
  207. package/dist/src/restLevelClient/interfaces.d.ts.map +1 -0
  208. package/dist/src/restLevelClient/interfaces.js +3 -0
  209. package/dist/src/restLevelClient/interfaces.js.map +1 -0
  210. package/dist/src/restLevelClient/mutateCodeModel.js +2 -2
  211. package/dist/src/restLevelClient/mutateCodeModel.js.map +1 -1
  212. package/dist/src/restLevelClient/operationHelpers.d.ts +4 -0
  213. package/dist/src/restLevelClient/operationHelpers.d.ts.map +1 -1
  214. package/dist/src/restLevelClient/operationHelpers.js +21 -10
  215. package/dist/src/restLevelClient/operationHelpers.js.map +1 -1
  216. package/dist/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  217. package/dist/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  218. package/dist/src/restLevelClient/samples/generateSamples.d.ts +23 -0
  219. package/dist/src/restLevelClient/samples/generateSamples.d.ts.map +1 -0
  220. package/dist/src/restLevelClient/samples/generateSamples.js +3 -0
  221. package/dist/src/restLevelClient/samples/generateSamples.js.map +1 -0
  222. package/dist/src/restLevelClient/samples/samples.ts.hbs +0 -0
  223. package/dist/src/restLevelClient/schemaHelpers.d.ts +12 -2
  224. package/dist/src/restLevelClient/schemaHelpers.d.ts.map +1 -1
  225. package/dist/src/restLevelClient/schemaHelpers.js +48 -14
  226. package/dist/src/restLevelClient/schemaHelpers.js.map +1 -1
  227. package/dist/src/transforms/extensions.js +10 -10
  228. package/dist/src/transforms/extensions.js.map +1 -1
  229. package/dist/src/transforms/groupTransforms.js +2 -2
  230. package/dist/src/transforms/groupTransforms.js.map +1 -1
  231. package/dist/src/transforms/mapperTransforms.d.ts +1 -1
  232. package/dist/src/transforms/mapperTransforms.d.ts.map +1 -1
  233. package/dist/src/transforms/mapperTransforms.js +30 -27
  234. package/dist/src/transforms/mapperTransforms.js.map +1 -1
  235. package/dist/src/transforms/objectTransforms.d.ts.map +1 -1
  236. package/dist/src/transforms/objectTransforms.js +42 -26
  237. package/dist/src/transforms/objectTransforms.js.map +1 -1
  238. package/dist/src/transforms/operationTransforms.d.ts.map +1 -1
  239. package/dist/src/transforms/operationTransforms.js +29 -26
  240. package/dist/src/transforms/operationTransforms.js.map +1 -1
  241. package/dist/src/transforms/optionsTransforms.js +1 -1
  242. package/dist/src/transforms/optionsTransforms.js.map +1 -1
  243. package/dist/src/transforms/parameterTransforms.d.ts.map +1 -1
  244. package/dist/src/transforms/parameterTransforms.js +43 -27
  245. package/dist/src/transforms/parameterTransforms.js.map +1 -1
  246. package/dist/src/transforms/samplesTransforms.d.ts +7 -0
  247. package/dist/src/transforms/samplesTransforms.d.ts.map +1 -0
  248. package/dist/src/transforms/samplesTransforms.js +293 -0
  249. package/dist/src/transforms/samplesTransforms.js.map +1 -0
  250. package/dist/src/transforms/transforms.d.ts +1 -2
  251. package/dist/src/transforms/transforms.d.ts.map +1 -1
  252. package/dist/src/transforms/transforms.js +26 -24
  253. package/dist/src/transforms/transforms.js.map +1 -1
  254. package/dist/src/transforms/urlTransforms.js +3 -3
  255. package/dist/src/transforms/urlTransforms.js.map +1 -1
  256. package/dist/src/typescriptGenerator.d.ts +2 -2
  257. package/dist/src/typescriptGenerator.d.ts.map +1 -1
  258. package/dist/src/typescriptGenerator.js +46 -40
  259. package/dist/src/typescriptGenerator.js.map +1 -1
  260. package/dist/src/utils/autorestOptions.d.ts +2 -2
  261. package/dist/src/utils/autorestOptions.d.ts.map +1 -1
  262. package/dist/src/utils/autorestOptions.js +148 -61
  263. package/dist/src/utils/autorestOptions.js.map +1 -1
  264. package/dist/src/utils/cloneOperation.js +2 -2
  265. package/dist/src/utils/cloneOperation.js.map +1 -1
  266. package/dist/src/utils/copyFiles.d.ts +2 -0
  267. package/dist/src/utils/copyFiles.d.ts.map +1 -0
  268. package/dist/src/utils/copyFiles.js +33 -0
  269. package/dist/src/utils/copyFiles.js.map +1 -0
  270. package/dist/src/utils/extractHeaders.js +4 -4
  271. package/dist/src/utils/extractHeaders.js.map +1 -1
  272. package/dist/src/utils/extractPaginationDetails.d.ts +5 -1
  273. package/dist/src/utils/extractPaginationDetails.d.ts.map +1 -1
  274. package/dist/src/utils/extractPaginationDetails.js +23 -10
  275. package/dist/src/utils/extractPaginationDetails.js.map +1 -1
  276. package/dist/src/utils/headersToSchema.js +1 -1
  277. package/dist/src/utils/headersToSchema.js.map +1 -1
  278. package/dist/src/utils/logger.js +1 -1
  279. package/dist/src/utils/logger.js.map +1 -1
  280. package/dist/src/utils/nameUtils.d.ts +6 -2
  281. package/dist/src/utils/nameUtils.d.ts.map +1 -1
  282. package/dist/src/utils/nameUtils.js +13 -8
  283. package/dist/src/utils/nameUtils.js.map +1 -1
  284. package/dist/src/utils/schemaHelpers.d.ts +6 -1
  285. package/dist/src/utils/schemaHelpers.d.ts.map +1 -1
  286. package/dist/src/utils/schemaHelpers.js +50 -7
  287. package/dist/src/utils/schemaHelpers.js.map +1 -1
  288. package/dist/src/utils/sortObjectSchemasHierarchically.js +1 -1
  289. package/dist/src/utils/sortObjectSchemasHierarchically.js.map +1 -1
  290. package/dist/src/utils/valueHelpers.d.ts.map +1 -1
  291. package/dist/src/utils/valueHelpers.js +2 -1
  292. package/dist/src/utils/valueHelpers.js.map +1 -1
  293. package/package.json +59 -39
  294. package/src/autorestSession.ts +26 -18
  295. package/src/conflictResolver.ts +61 -0
  296. package/src/generators/LROGenerator.ts +2 -16
  297. package/src/generators/clientFileGenerator.ts +400 -50
  298. package/src/generators/indexGenerator.ts +166 -14
  299. package/src/generators/mappersGenerator.ts +108 -8
  300. package/src/generators/modelsGenerator.ts +101 -98
  301. package/src/generators/operationGenerator.ts +63 -122
  302. package/src/generators/parametersGenerator.ts +2 -3
  303. package/src/generators/samples/hlcSampleGenerator.ts +50 -0
  304. package/src/generators/samples/hlcSamples.ts.hbs +49 -0
  305. package/src/generators/samples/rlcSampleGenerator.ts +72 -0
  306. package/src/generators/samples/rlcSamples.ts.hbs +28 -0
  307. package/src/generators/samples/sampleEnv.hbs +4 -0
  308. package/src/generators/samples/sampleEnvGenerator.ts +14 -0
  309. package/src/generators/static/apiExtractorConfig.ts +3 -3
  310. package/src/generators/static/esLintConfigGenerator.ts +24 -0
  311. package/src/generators/static/hlcREADME.md.hbs +144 -0
  312. package/src/generators/static/karma.conf.js.hbs +126 -0
  313. package/src/generators/static/karmaConfigFileGenerator.ts +20 -0
  314. package/src/generators/static/packageFileGenerator.ts +305 -82
  315. package/src/generators/static/readmeFileGenerator.ts +85 -42
  316. package/src/generators/static/rlcREADME.md.hbs +71 -0
  317. package/src/generators/static/rollupConfigFileGenerator.ts +13 -71
  318. package/src/generators/static/tsConfigFileGenerator.ts +55 -21
  319. package/src/generators/test/envBrowserFileGenerator.ts +14 -0
  320. package/src/generators/test/envFileGenerator.ts +22 -0
  321. package/src/generators/test/recordedClientFileGenerator.ts +22 -0
  322. package/src/generators/test/rlcEnv.ts.hbs +3 -0
  323. package/src/generators/test/rlcRecordedClient.ts.hbs +26 -0
  324. package/src/generators/test/rlcSampleTest.spec.ts.hbs +20 -0
  325. package/src/generators/test/sampleTest.ts.hbs +32 -0
  326. package/src/generators/test/sampleTestGenerator.ts +32 -0
  327. package/src/generators/tracingFileGenerator.ts +6 -24
  328. package/src/generators/utils/pagingOperations.ts +1 -2
  329. package/src/generators/utils/tracingUtils.ts +1 -5
  330. package/src/lroImpl.ts +26 -0
  331. package/src/main.ts +8 -5
  332. package/src/models/clientDetails.ts +11 -1
  333. package/src/models/modelDetails.ts +2 -2
  334. package/src/models/operationDetails.ts +1 -0
  335. package/src/models/sampleDetails.ts +22 -0
  336. package/src/restLevelClient/generateClient.ts +134 -244
  337. package/src/restLevelClient/generateClientDefinition.ts +386 -0
  338. package/src/restLevelClient/generateIsUnexpectedHelper.ts +224 -0
  339. package/src/restLevelClient/generateMethodShortcuts.ts +121 -0
  340. package/src/restLevelClient/generateObjectTypes.ts +62 -21
  341. package/src/restLevelClient/generatePagingHelper.ts +69 -0
  342. package/src/restLevelClient/generateParameterTypes.ts +377 -55
  343. package/src/restLevelClient/generatePollingHelper.ts +19 -0
  344. package/src/restLevelClient/generateResponseTypes.ts +53 -22
  345. package/src/restLevelClient/generateRestLevel.ts +65 -8
  346. package/src/restLevelClient/generateSchemaTypes.ts +43 -8
  347. package/src/restLevelClient/generateTopLevelIndexFile.ts +37 -0
  348. package/src/restLevelClient/getPropertySignature.ts +31 -6
  349. package/src/restLevelClient/helpers/hasPollingOperations.ts +15 -0
  350. package/src/restLevelClient/helpers/modelHelpers.ts +15 -0
  351. package/src/restLevelClient/helpers/operationHelpers.ts +93 -0
  352. package/src/restLevelClient/interfaces.ts +39 -0
  353. package/src/restLevelClient/operationHelpers.ts +23 -9
  354. package/src/restLevelClient/paginateHelper.ts.hbs +208 -0
  355. package/src/restLevelClient/pollingHelper.ts.hbs +72 -0
  356. package/src/restLevelClient/samples/generateSamples.ts +23 -0
  357. package/src/restLevelClient/samples/samples.ts.hbs +0 -0
  358. package/src/restLevelClient/schemaHelpers.ts +51 -9
  359. package/src/transforms/mapperTransforms.ts +12 -6
  360. package/src/transforms/objectTransforms.ts +26 -6
  361. package/src/transforms/operationTransforms.ts +6 -1
  362. package/src/transforms/parameterTransforms.ts +26 -7
  363. package/src/transforms/samplesTransforms.ts +349 -0
  364. package/src/transforms/transforms.ts +14 -9
  365. package/src/typescriptGenerator.ts +41 -45
  366. package/src/utils/autorestOptions.ts +203 -86
  367. package/src/utils/copyFiles.ts +36 -0
  368. package/src/utils/extractPaginationDetails.ts +19 -1
  369. package/src/utils/nameUtils.ts +18 -9
  370. package/src/utils/schemaHelpers.ts +51 -4
  371. package/src/utils/valueHelpers.ts +1 -0
  372. package/CHANGELOG.md +0 -44
  373. package/dist/src/coreClientLro.d.ts +0 -26
  374. package/dist/src/coreClientLro.d.ts.map +0 -1
  375. package/dist/src/coreClientLro.js +0 -207
  376. package/dist/src/coreClientLro.js.map +0 -1
  377. package/dist/src/coreHttpLro.d.ts +0 -26
  378. package/dist/src/coreHttpLro.d.ts.map +0 -1
  379. package/dist/src/coreHttpLro.js +0 -186
  380. package/dist/src/coreHttpLro.js.map +0 -1
  381. package/dist/src/generators/clientContextFileGenerator.d.ts +0 -5
  382. package/dist/src/generators/clientContextFileGenerator.d.ts.map +0 -1
  383. package/dist/src/generators/clientContextFileGenerator.js +0 -263
  384. package/dist/src/generators/clientContextFileGenerator.js.map +0 -1
  385. package/dist/src/lro/azureAsyncPolling.d.ts +0 -3
  386. package/dist/src/lro/azureAsyncPolling.d.ts.map +0 -1
  387. package/dist/src/lro/azureAsyncPolling.js +0 -71
  388. package/dist/src/lro/azureAsyncPolling.js.map +0 -1
  389. package/dist/src/lro/bodyPolling.d.ts +0 -8
  390. package/dist/src/lro/bodyPolling.d.ts.map +0 -1
  391. package/dist/src/lro/bodyPolling.js +0 -34
  392. package/dist/src/lro/bodyPolling.js.map +0 -1
  393. package/dist/src/lro/index.d.ts +0 -4
  394. package/dist/src/lro/index.d.ts.map +0 -1
  395. package/dist/src/lro/index.js +0 -10
  396. package/dist/src/lro/index.js.map +0 -1
  397. package/dist/src/lro/locationPolling.d.ts +0 -3
  398. package/dist/src/lro/locationPolling.d.ts.map +0 -1
  399. package/dist/src/lro/locationPolling.js +0 -18
  400. package/dist/src/lro/locationPolling.js.map +0 -1
  401. package/dist/src/lro/lroEngine.d.ts +0 -14
  402. package/dist/src/lro/lroEngine.d.ts.map +0 -1
  403. package/dist/src/lro/lroEngine.js +0 -38
  404. package/dist/src/lro/lroEngine.js.map +0 -1
  405. package/dist/src/lro/models.d.ts +0 -138
  406. package/dist/src/lro/models.d.ts.map +0 -1
  407. package/dist/src/lro/models.js +0 -12
  408. package/dist/src/lro/models.js.map +0 -1
  409. package/dist/src/lro/operation.d.ts +0 -36
  410. package/dist/src/lro/operation.d.ts.map +0 -1
  411. package/dist/src/lro/operation.js +0 -89
  412. package/dist/src/lro/operation.js.map +0 -1
  413. package/dist/src/lro/passthrough.d.ts +0 -3
  414. package/dist/src/lro/passthrough.d.ts.map +0 -1
  415. package/dist/src/lro/passthrough.js +0 -14
  416. package/dist/src/lro/passthrough.js.map +0 -1
  417. package/dist/src/lro/requestUtils.d.ts +0 -16
  418. package/dist/src/lro/requestUtils.d.ts.map +0 -1
  419. package/dist/src/lro/requestUtils.js +0 -76
  420. package/dist/src/lro/requestUtils.js.map +0 -1
  421. package/dist/src/lro/stateMachine.d.ts +0 -18
  422. package/dist/src/lro/stateMachine.d.ts.map +0 -1
  423. package/dist/src/lro/stateMachine.js +0 -90
  424. package/dist/src/lro/stateMachine.js.map +0 -1
  425. package/src/coreClientLro.ts +0 -315
  426. package/src/coreHttpLro.ts +0 -268
  427. package/src/generators/clientContextFileGenerator.ts +0 -405
  428. package/src/lro/azureAsyncPolling.ts +0 -82
  429. package/src/lro/bodyPolling.ts +0 -34
  430. package/src/lro/index.ts +0 -18
  431. package/src/lro/locationPolling.ts +0 -20
  432. package/src/lro/lroEngine.ts +0 -53
  433. package/src/lro/models.ts +0 -165
  434. package/src/lro/operation.ts +0 -112
  435. package/src/lro/passthrough.ts +0 -15
  436. package/src/lro/requestUtils.ts +0 -94
  437. package/src/lro/stateMachine.ts +0 -108
@@ -5,9 +5,11 @@ import { Project } from "ts-morph";
5
5
  import * as hbs from "handlebars";
6
6
  import * as fs from "fs";
7
7
  import * as path from "path";
8
- import { ClientDetails } from "../../models/clientDetails";
9
8
  import { getAutorestOptions } from "../../autorestSession";
10
- import { PackageDetails } from "../../models/packageDetails";
9
+ import { CodeModel, Info, Languages } from "@autorest/codemodel";
10
+ import { getLanguageMetadata } from "../../utils/languageHelpers";
11
+ import { normalizeName, NameType } from "../../utils/nameUtils";
12
+ import { getSecurityInfoFromModel } from "../../utils/schemaHelpers";
11
13
 
12
14
  /**
13
15
  * Meta data information about the service, the package, and the client.
@@ -47,22 +49,40 @@ interface Metadata {
47
49
  addCredentials?: boolean;
48
50
  /** The link to the identity package in the repository */
49
51
  identityPackageURL?: string;
52
+ /** Indicates if the package is a test/releasable package. */
53
+ isReleasablePackage?: boolean;
54
+ /** indicate if the package is management plane SDK */
55
+ azureArm?: boolean;
56
+ /** The URL for the service document */
57
+ serviceDocURL?: string;
58
+ /** The dependency info for this service */
59
+ dependencyDescription?: string;
60
+ dependencyLink?: string;
61
+ /** Indicates if the package is a multi-client */
62
+ hasMultiClients?: boolean;
50
63
  }
51
64
 
52
65
  /**
53
66
  * Returns meta data information about the service, the package, and the client.
54
- * @param clientDetails - the client details
55
- * @param packageDetails - the package details
67
+ * @param codeModel - include the client details
56
68
  * @returns inferred metadata about the service, the package, and the client
57
69
  */
58
- function createMetadata(
59
- packageDetails: PackageDetails,
60
- clientDetails: ClientDetails,
61
- azureOutputDirectory?: string,
62
- addCredentials?: boolean,
63
- azureArm?: boolean
64
- ): Metadata {
65
- const azureHuh = packageDetails.scopeName === "azure";
70
+ function createMetadata(codeModel: CodeModel): Metadata {
71
+ const {
72
+ packageDetails,
73
+ azureOutputDirectory,
74
+ azureArm,
75
+ isTestPackage,
76
+ productDocLink,
77
+ dependencyInfo,
78
+ multiClient,
79
+ batch
80
+ } = getAutorestOptions();
81
+ const { addCredentials } = getSecurityInfoFromModel(codeModel.security);
82
+
83
+ const azureHuh =
84
+ packageDetails?.scopeName === "azure" ||
85
+ packageDetails?.scopeName === "azure-rest";
66
86
  const repoURL = azureHuh
67
87
  ? "https://github.com/Azure/azure-sdk-for-js"
68
88
  : undefined;
@@ -70,14 +90,21 @@ function createMetadata(
70
90
  const packageSourceURL =
71
91
  relativePackageSourcePath &&
72
92
  repoURL &&
73
- `${repoURL}/tree/master/${relativePackageSourcePath}`;
93
+ `${repoURL}/tree/main/${relativePackageSourcePath}`;
74
94
  const names = relativePackageSourcePath?.split("/").slice(1);
75
95
  const packageParentDirectoryName = names?.[0];
76
96
  const packageDirectoryName = names?.[1];
77
- const clientClassName = clientDetails.name;
78
- const clientPackageName = packageDetails.name;
79
- const serviceTitle = clientDetails.info?.title ?? clientClassName;
80
- const simpleServiceName =
97
+
98
+ const clientPackageName = packageDetails?.name;
99
+ const { clientClassName, serviceTitle } = getClientAndServiceName(
100
+ codeModel.language,
101
+ codeModel.info
102
+ );
103
+ let simpleServiceName =
104
+ batch && batch.length > 1
105
+ ? normalizeName(packageDetails.nameWithoutScope, NameType.Class)
106
+ : normalizeName(serviceTitle, NameType.Class);
107
+ simpleServiceName =
81
108
  /**
82
109
  * It is a required convention in Azure swaggers for their titles to end with
83
110
  * "Client".
@@ -87,14 +114,21 @@ function createMetadata(
87
114
  serviceTitle.match(/(.*)Client/)?.[1] ??
88
115
  clientClassName.match(/(.*)Client/)?.[1] ??
89
116
  serviceTitle.match(/(.*) Service/)?.[1] ??
90
- "Service";
117
+ simpleServiceName;
118
+
91
119
  const serviceName = azureHuh
92
120
  ? simpleServiceName.startsWith("Azure")
93
121
  ? simpleServiceName
94
122
  : `Azure ${simpleServiceName}`
95
123
  : simpleServiceName;
96
124
  const identityPackageURL =
97
- repoURL && `${repoURL}/tree/master/sdk/identity/identity`;
125
+ repoURL && `${repoURL}/tree/main/sdk/identity/identity`;
126
+
127
+ var apiRefUrlQueryParameter: string = "";
128
+ if (packageDetails?.version.includes("beta")) {
129
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
130
+ }
131
+
98
132
  return {
99
133
  serviceName: serviceName,
100
134
  clientPackageName: clientPackageName,
@@ -112,42 +146,36 @@ function createMetadata(
112
146
  `https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2F${packageParentDirectoryName}%2F${packageDirectoryName}%2FREADME.png`
113
147
  : undefined,
114
148
  clientDescriptiveName: `${serviceName} client`,
115
- description: clientDetails.info?.description,
149
+ description: codeModel.info?.description,
116
150
  apiRefURL: azureHuh
117
- ? `https://docs.microsoft.com/javascript/api/${clientPackageName}`
151
+ ? `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
118
152
  : undefined,
119
153
  packageNPMURL: `https://www.npmjs.com/package/${clientPackageName}`,
120
- contributingGuideURL: repoURL && `${repoURL}/blob/master/CONTRIBUTING.md`,
154
+ contributingGuideURL: repoURL && `${repoURL}/blob/main/CONTRIBUTING.md`,
121
155
  projectName: azureHuh ? "Microsoft Azure SDK for JavaScript" : undefined,
122
156
  addCredentials,
123
- identityPackageURL
157
+ identityPackageURL,
158
+ isReleasablePackage: !isTestPackage,
159
+ azureArm: azureArm,
160
+ serviceDocURL: productDocLink,
161
+ dependencyDescription: dependencyInfo?.description,
162
+ dependencyLink: dependencyInfo?.link,
163
+ hasMultiClients: multiClient && batch && batch.length > 1
124
164
  };
125
165
  }
126
166
 
127
- export function generateReadmeFile(
128
- clientDetails: ClientDetails,
129
- project: Project
130
- ) {
131
- const {
132
- packageDetails,
133
- azureOutputDirectory,
134
- generateMetadata,
135
- addCredentials,
136
- azureArm
137
- } = getAutorestOptions();
167
+ export function generateReadmeFile(codeModel: CodeModel, project: Project) {
168
+ const { generateMetadata, restLevelClient } = getAutorestOptions();
138
169
 
139
170
  if (!generateMetadata) {
140
171
  return;
141
172
  }
142
173
 
143
- const metadata = createMetadata(
144
- packageDetails,
145
- clientDetails,
146
- azureOutputDirectory,
147
- addCredentials,
148
- azureArm
149
- );
150
- const file = fs.readFileSync(path.join(__dirname, "README.md.hbs"), {
174
+ const metadata = createMetadata(codeModel);
175
+ const templateFile = !restLevelClient
176
+ ? "hlcREADME.md.hbs"
177
+ : "rlcREADME.md.hbs";
178
+ const file = fs.readFileSync(path.join(__dirname, templateFile), {
151
179
  encoding: "utf-8"
152
180
  });
153
181
  const readmeFileContents = hbs.compile(file, { noEscape: true });
@@ -155,3 +183,18 @@ export function generateReadmeFile(
155
183
  overwrite: true
156
184
  });
157
185
  }
186
+
187
+ function getClientAndServiceName(
188
+ codeModelLanguage: Languages,
189
+ codeModelInfo: Info
190
+ ) {
191
+ const { name: clientName } = getLanguageMetadata(codeModelLanguage);
192
+ const className = normalizeName(
193
+ clientName,
194
+ NameType.Class,
195
+ true /** shouldGuard */
196
+ );
197
+ const clientClassName = className;
198
+ const serviceTitle = codeModelInfo?.title ?? clientClassName;
199
+ return { clientClassName, serviceTitle };
200
+ }
@@ -0,0 +1,71 @@
1
+ # {{ clientDescriptiveName }} library for JavaScript
2
+
3
+ {{ description }}
4
+
5
+ **Please rely heavily on {{#if serviceDocURL}}[the service's documentation]({{ serviceDocURL }}) and {{/if}}our [REST client docs](https://github.com/Azure/azure-sdk-for-js/blob/main/documentation/rest-clients.md) to use this library**
6
+
7
+ Key links:
8
+
9
+ {{#if packageSourceURL}}
10
+ - [Source code]({{ packageSourceURL }})
11
+ {{/if}}
12
+ {{#if packageNPMURL}}
13
+ - [Package (NPM)]({{ packageNPMURL }})
14
+ {{/if}}
15
+ {{#if apiRefURL}}
16
+ - [API reference documentation]({{ apiRefURL }})
17
+ {{/if}}
18
+ {{#if serviceDocURL}}
19
+ - [Product documentation]({{ serviceDocURL }})
20
+ {{/if}}
21
+ {{#if samplesURL}}
22
+ - [Samples]({{ samplesURL }})
23
+ {{/if}}
24
+
25
+ ## Getting started
26
+
27
+ ### Currently supported environments
28
+
29
+ - Node.js version 14.x.x or higher
30
+
31
+ ### Prerequisites
32
+
33
+ - You must have an [Azure subscription](https://azure.microsoft.com/free/){{#if dependencyLink}} and follow [these]({{ dependencyLink }}) instructions{{/if}} to use this package.
34
+
35
+ ### Install the `{{ clientPackageName }}` package
36
+
37
+ Install the {{ clientDescriptiveName }} REST client library for JavaScript with `npm`:
38
+
39
+ ```bash
40
+ npm install {{ clientPackageName }}
41
+ ```
42
+
43
+ ### Create and authenticate a `{{ clientClassName }}`
44
+
45
+ To use an [Azure Active Directory (AAD) token credential](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/identity/identity/samples/AzureIdentityExamples.md#authenticating-with-a-pre-fetched-access-token),
46
+ provide an instance of the desired credential type obtained from the
47
+ [@azure/identity](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#credentials) library.
48
+
49
+ To authenticate with AAD, you must first `npm` install [`@azure/identity`](https://www.npmjs.com/package/@azure/identity) {{#if dependencyLink}}and
50
+ [{{dependencyDescription }}]({{ dependencyLink }}){{/if}}
51
+
52
+ After setup, you can choose which type of [credential](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#credentials) from `@azure/identity` to use.
53
+ As an example, [DefaultAzureCredential](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/identity/identity#defaultazurecredential)
54
+ can be used to authenticate the client.
55
+
56
+ Set the values of the client ID, tenant ID, and client secret of the AAD application as environment variables:
57
+ AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET
58
+
59
+ ## Troubleshooting
60
+
61
+ ### Logging
62
+
63
+ Enabling logging may help uncover useful information about failures. In order to see a log of HTTP requests and responses, set the `AZURE_LOG_LEVEL` environment variable to `info`. Alternatively, logging can be enabled at runtime by calling `setLogLevel` in the `@azure/logger`:
64
+
65
+ ```javascript
66
+ import { setLogLevel } from "@azure/logger";
67
+
68
+ setLogLevel("info");
69
+ ```
70
+
71
+ For more detailed instructions on how to enable logs, you can look at the [@azure/logger package docs](https://github.com/Azure/azure-sdk-for-js/tree/main/sdk/core/logger).
@@ -5,12 +5,17 @@ import { Project } from "ts-morph";
5
5
  import { getAutorestOptions } from "../../autorestSession";
6
6
 
7
7
  export function generateRollupConfig(project: Project) {
8
- const { generateMetadata } = getAutorestOptions();
8
+ const { generateMetadata, restLevelClient, azureSdkForJs } = getAutorestOptions();
9
9
 
10
10
  if (!generateMetadata) {
11
11
  return;
12
12
  }
13
13
 
14
+ // when it's generating rlc codes, only generate rollup config in codegen test
15
+ if (restLevelClient && azureSdkForJs) {
16
+ return;
17
+ }
18
+
14
19
  const rollupFile = project.createSourceFile("rollup.config.js", undefined, {
15
20
  overwrite: true
16
21
  });
@@ -24,62 +29,14 @@ export function generateRollupConfig(project: Project) {
24
29
 
25
30
  import nodeBuiltins from "builtin-modules";
26
31
 
27
- /**
28
- * Gets the proper configuration needed for rollup's commonJS plugin for @opentelemetry/api.
29
- *
30
- * NOTE: this manual configuration is only needed because OpenTelemetry uses an
31
- * __exportStar downleveled helper function to declare its exports which confuses
32
- * rollup's automatic discovery mechanism.
33
- *
34
- * @returns an object reference that can be \`...\`'d into your cjs() configuration.
35
- */
36
- export function openTelemetryCommonJs() {
37
- const namedExports = {};
38
-
39
- for (const key of [
40
- "@opentelemetry/api",
41
- "@azure/core-tracing/node_modules/@opentelemetry/api"
42
- ]) {
43
- namedExports[key] = [
44
- "SpanKind",
45
- "TraceFlags",
46
- "getSpan",
47
- "setSpan",
48
- "SpanStatusCode",
49
- "getSpanContext",
50
- "setSpanContext"
51
- ];
52
- }
53
-
54
- const releasedOpenTelemetryVersions = ["0.10.2", "1.0.0-rc.0"];
55
-
56
- for (const version of releasedOpenTelemetryVersions) {
57
- namedExports[
58
- // working around a limitation in the rollup common.js plugin - it's not able to resolve these modules so the named exports listed above will not get applied. We have to drill down to the actual path.
59
- \`../../../common/temp/node_modules/.pnpm/@opentelemetry/api@\${version}/node_modules/@opentelemetry/api/build/src/index.js\`
60
- ] = [
61
- "SpanKind",
62
- "TraceFlags",
63
- "getSpan",
64
- "setSpan",
65
- "StatusCode",
66
- "CanonicalCode",
67
- "getSpanContext",
68
- "setSpanContext"
69
- ];
70
- }
71
-
72
- return namedExports;
73
- }
74
-
75
32
  // #region Warning Handler
76
33
 
77
34
  /**
78
- * A function that can determine whether a rollupwarning should be ignored. If
35
+ * A function that can determine whether a rollup warning should be ignored. If
79
36
  * the function returns \`true\`, then the warning will not be displayed.
80
37
  */
81
38
 
82
- function ignoreNiseSinonEvalWarnings(warning) {
39
+ function ignoreNiseSinonEval(warning) {
83
40
  return (
84
41
  warning.code === "EVAL" &&
85
42
  (warning.id && ((warning.id.includes("node_modules/nise")) ||
@@ -87,7 +44,7 @@ export function generateRollupConfig(project: Project) {
87
44
  );
88
45
  }
89
46
 
90
- function ignoreChaiCircularDependencyWarnings(warning) {
47
+ function ignoreChaiCircularDependency(warning) {
91
48
  return (
92
49
  warning.code === "CIRCULAR_DEPENDENCY" &&
93
50
  (warning.importer && warning.importer.includes("node_modules/chai") === true)
@@ -95,8 +52,8 @@ export function generateRollupConfig(project: Project) {
95
52
  }
96
53
 
97
54
  const warningInhibitors = [
98
- ignoreChaiCircularDependencyWarnings,
99
- ignoreNiseSinonEvalWarnings
55
+ ignoreChaiCircularDependency,
56
+ ignoreNiseSinonEval
100
57
  ];
101
58
 
102
59
  /**
@@ -131,22 +88,7 @@ export function generateRollupConfig(project: Project) {
131
88
  nodeResolve({
132
89
  mainFields: ["module", "browser"]
133
90
  }),
134
- cjs({
135
- namedExports: {
136
- // Chai's strange internal architecture makes it impossible to statically
137
- // analyze its exports.
138
- chai: [
139
- "version",
140
- "use",
141
- "util",
142
- "config",
143
- "expect",
144
- "should",
145
- "assert"
146
- ],
147
- ...openTelemetryCommonJs()
148
- }
149
- }),
91
+ cjs(),
150
92
  json(),
151
93
  sourcemaps()
152
94
  //viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
@@ -185,7 +127,7 @@ export function generateRollupConfig(project: Project) {
185
127
  ],
186
128
  output: { file: "dist/index.js", format: "cjs", sourcemap: true },
187
129
  preserveSymlinks: false,
188
- plugins: [sourcemaps(), nodeResolve(), cjs()]
130
+ plugins: [sourcemaps(), nodeResolve()]
189
131
  };
190
132
 
191
133
  const config = [baseConfig];
@@ -4,7 +4,7 @@
4
4
  import { Project } from "ts-morph";
5
5
  import { getAutorestOptions } from "../../autorestSession";
6
6
 
7
- const highLevelTsConfig = {
7
+ const highLevelTsConfig: Record<string, any> = {
8
8
  compilerOptions: {
9
9
  module: "es6",
10
10
  moduleResolution: "node",
@@ -15,43 +15,77 @@ const highLevelTsConfig = {
15
15
  esModuleInterop: true,
16
16
  allowSyntheticDefaultImports: true,
17
17
  forceConsistentCasingInFileNames: true,
18
- preserveConstEnums: true,
19
18
  lib: ["es6", "dom"],
20
19
  declaration: true,
21
- outDir: "./esm",
20
+ outDir: "./dist-esm",
22
21
  importHelpers: true
23
22
  },
24
23
  include: ["./src/**/*.ts"],
25
24
  exclude: ["node_modules"]
26
25
  };
27
26
 
28
- const restLevelTsConfig = {
29
- compilerOptions: {
30
- module: "es6",
31
- target: "es2015",
32
- moduleResolution: "node",
33
- declaration: true,
34
- declarationMap: true,
35
- outDir: "./esm"
27
+
28
+ const restLevelTsConfigInAzureSdkForJs: Record<string, any> = {
29
+ "extends": "../../../tsconfig.package",
30
+ "compilerOptions": {
31
+ "outDir": "./dist-esm",
32
+ "declarationDir": "./types",
36
33
  },
37
- exclude: [
38
- "node_modules",
39
- "types",
40
- "temp",
41
- "browser",
42
- "dist",
43
- "dist-esm",
44
- "./samples/**/*.ts"
45
- ]
34
+ "include": ["src/**/*.ts"]
46
35
  };
47
36
 
37
+ const restLevelTsConfigNotInAzureSdkForJs: Record<string, any> = {
38
+ "compilerOptions": {
39
+ "target": "ES2017",
40
+ "module": "es6",
41
+ "lib": [],
42
+ "declaration": true,
43
+ "declarationMap": true,
44
+ "inlineSources": true,
45
+ "sourceMap": true,
46
+ "importHelpers": true,
47
+ "strict": true,
48
+ "alwaysStrict": true,
49
+ "noUnusedLocals": true,
50
+ "noUnusedParameters": true,
51
+ "noImplicitReturns": true,
52
+ "noFallthroughCasesInSwitch": true,
53
+ "forceConsistentCasingInFileNames": true,
54
+ "moduleResolution": "node",
55
+ "allowSyntheticDefaultImports": true,
56
+ "esModuleInterop": true,
57
+ "outDir": "./dist-esm",
58
+ "declarationDir": "./types"
59
+ },
60
+ "include": ["./src/**/*.ts"]
61
+ }
62
+
63
+
48
64
  export function generateTsConfig(project: Project) {
49
- const { generateMetadata, restLevelClient } = getAutorestOptions();
65
+ const { generateMetadata, restLevelClient, generateTest, packageDetails, generateSample, azureSdkForJs } = getAutorestOptions();
50
66
 
51
67
  if (!generateMetadata) {
52
68
  return;
53
69
  }
54
70
 
71
+ const clientPackageName = packageDetails.name;
72
+
73
+ const restLevelTsConfig = azureSdkForJs ? restLevelTsConfigInAzureSdkForJs : restLevelTsConfigNotInAzureSdkForJs;
74
+
75
+ if (generateTest) {
76
+ highLevelTsConfig.include.push("./test/**/*.ts");
77
+ restLevelTsConfig.include.push("./test/**/*.ts");
78
+ }
79
+
80
+ if (generateSample) {
81
+ highLevelTsConfig.include.push("samples-dev/**/*.ts");
82
+ highLevelTsConfig.compilerOptions["paths"] = {};
83
+ highLevelTsConfig.compilerOptions["paths"][clientPackageName] = ["./src/index"];
84
+ restLevelTsConfig.include.push("samples-dev/**/*.ts");
85
+ restLevelTsConfig.compilerOptions["paths"] = {};
86
+ restLevelTsConfig.compilerOptions["paths"][clientPackageName] = ["./src/index"];
87
+ }
88
+
55
89
  const tsConfigContents = restLevelClient
56
90
  ? restLevelTsConfig
57
91
  : highLevelTsConfig;
@@ -0,0 +1,14 @@
1
+ import { Project } from "ts-morph";
2
+ import { getAutorestOptions } from "../../autorestSession";
3
+
4
+ export function generateEnvBrowserFile(
5
+ project: Project
6
+ ) {
7
+ const { generateTest, restLevelClient } = getAutorestOptions();
8
+ if (!generateTest || !restLevelClient) {
9
+ return;
10
+ }
11
+ project.createSourceFile("test/public/utils/env.browser.ts", "", {
12
+ overwrite: true
13
+ });
14
+ }
@@ -0,0 +1,22 @@
1
+ import { Project } from "ts-morph";
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import * as hbs from "handlebars";
5
+ import { getAutorestOptions } from "../../autorestSession";
6
+
7
+ export function generateEnvFile(
8
+ project: Project
9
+ ) {
10
+ const { generateTest, restLevelClient } = getAutorestOptions();
11
+ if (!generateTest || !restLevelClient) {
12
+ return;
13
+ }
14
+ const metadata = {}
15
+ const file = fs.readFileSync(path.join(__dirname, "rlcEnv.ts.hbs"), {
16
+ encoding: "utf-8"
17
+ });
18
+ const envFileContents = hbs.compile(file, { noEscape: true });
19
+ project.createSourceFile("test/public/utils/env.ts", envFileContents(metadata), {
20
+ overwrite: true
21
+ });
22
+ }
@@ -0,0 +1,22 @@
1
+ import { Project } from "ts-morph";
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import * as hbs from "handlebars";
5
+ import { getAutorestOptions } from "../../autorestSession";
6
+
7
+ export function generateRecordedClientFile(
8
+ project: Project
9
+ ) {
10
+ const { generateTest, restLevelClient } = getAutorestOptions();
11
+ if (!generateTest || !restLevelClient) {
12
+ return;
13
+ }
14
+ const metadata = {}
15
+ const file = fs.readFileSync(path.join(__dirname, "rlcRecordedClient.ts.hbs"), {
16
+ encoding: "utf-8"
17
+ });
18
+ const recordedClientFileContents = hbs.compile(file, { noEscape: true });
19
+ project.createSourceFile("test/public/utils/recordedClient.ts", recordedClientFileContents(metadata), {
20
+ overwrite: true
21
+ });
22
+ }
@@ -0,0 +1,3 @@
1
+ import * as dotenv from "dotenv";
2
+
3
+ dotenv.config();
@@ -0,0 +1,26 @@
1
+ import { Context } from "mocha";
2
+ import { Recorder, RecorderStartOptions } from "@azure-tools/test-recorder";
3
+ import "./env";
4
+
5
+ const envSetupForPlayback: Record<string, string> = {
6
+ ENDPOINT: "https://endpoint",
7
+ AZURE_CLIENT_ID: "azure_client_id",
8
+ AZURE_CLIENT_SECRET: "azure_client_secret",
9
+ AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888",
10
+ SUBSCRIPTION_ID: "azure_subscription_id"
11
+ };
12
+
13
+ const recorderEnvSetup: RecorderStartOptions = {
14
+ envSetupForPlayback
15
+ };
16
+
17
+ /**
18
+ * creates the recorder and reads the environment variables from the `.env` file.
19
+ * Should be called first in the test suite to make sure environment variables are
20
+ * read before they are being used.
21
+ */
22
+ export async function createRecorder(context: Context): Promise<Recorder> {
23
+ const recorder = new Recorder(context.currentTest);
24
+ await recorder.start(recorderEnvSetup);
25
+ return recorder;
26
+ }
@@ -0,0 +1,20 @@
1
+ import { Recorder } from "@azure-tools/test-recorder";
2
+ import { assert } from "chai";
3
+ import { createRecorder } from "./utils/recordedClient";
4
+ import { Context } from "mocha";
5
+
6
+ describe("My test", () => {
7
+ let recorder: Recorder;
8
+
9
+ beforeEach(async function(this: Context) {
10
+ recorder = await createRecorder(this);
11
+ });
12
+
13
+ afterEach(async function() {
14
+ await recorder.stop();
15
+ });
16
+
17
+ it("sample test", async function() {
18
+ assert.equal(1, 1);
19
+ });
20
+ });
@@ -0,0 +1,32 @@
1
+ import { Recorder, RecorderStartOptions, env } from "@azure-tools/test-recorder";
2
+ import { assert } from "chai";
3
+ import { Context } from "mocha";
4
+
5
+
6
+ const replaceableVariables: Record<string, string> = {
7
+ AZURE_CLIENT_ID: "azure_client_id",
8
+ AZURE_CLIENT_SECRET: "azure_client_secret",
9
+ AZURE_TENANT_ID: "88888888-8888-8888-8888-888888888888",
10
+ SUBSCRIPTION_ID: "azure_subscription_id"
11
+ };
12
+
13
+ const recorderOptions: RecorderStartOptions = {
14
+ envSetupForPlayback: replaceableVariables,
15
+ };
16
+
17
+ describe("My test", () => {
18
+ let recorder: Recorder;
19
+
20
+ beforeEach(async function (this: Context) {
21
+ recorder = new Recorder(this.currentTest);
22
+ await recorder.start(recorderOptions);
23
+ });
24
+
25
+ afterEach(async function () {
26
+ await recorder.stop();
27
+ });
28
+
29
+ it("sample test", async function () {
30
+ console.log("Hi, I'm a test!");
31
+ });
32
+ });