@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
@@ -4,7 +4,12 @@
4
4
  import { Project } from "ts-morph";
5
5
  import { ClientDetails } from "../../models/clientDetails";
6
6
  import { PackageDetails } from "../../models/packageDetails";
7
- import { getAutorestOptions } from "../../autorestSession";
7
+ import { getAutorestOptions, getSession } from "../../autorestSession";
8
+ import { hasPagingOperations } from "../../utils/extractPaginationDetails";
9
+ import { hasPollingOperations } from "../../restLevelClient/helpers/hasPollingOperations";
10
+ import { NameType, normalizeName } from "../../utils/nameUtils";
11
+ import { TestCodeModel } from "@autorest/testmodeler/dist/src/core/model";
12
+ import { getSecurityInfoFromModel } from "../../utils/schemaHelpers";
8
13
 
9
14
  export function generatePackageJson(
10
15
  project: Project,
@@ -46,65 +51,225 @@ export function generatePackageJson(
46
51
  * or High Level Client
47
52
  */
48
53
  function restLevelPackage(packageDetails: PackageDetails) {
49
- const { azureArm } = getAutorestOptions();
50
-
51
- return {
54
+ const {
55
+ azureArm,
56
+ generateTest,
57
+ generateSample,
58
+ azureOutputDirectory,
59
+ azureSdkForJs
60
+ } = getAutorestOptions();
61
+ const { model } = getSession();
62
+ const clientPackageName = packageDetails.name;
63
+ let apiRefUrlQueryParameter: string = "";
64
+ if (packageDetails.version.includes("beta")) {
65
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
66
+ }
67
+ const description = packageDetails.description;
68
+ const hasPaging = hasPagingOperations(model);
69
+ const hasLRO = hasPollingOperations(model);
70
+ const packageInfo: Record<string, any> = {
52
71
  name: `${packageDetails.name}`,
53
- "sdk-type": `${azureArm ? "mgmt" : "client"}`,
72
+ "sdk-type": "client",
73
+ author: "Microsoft Corporation",
54
74
  version: `${packageDetails.version}`,
55
75
  description: `${packageDetails.description}`,
56
- main: "dist-esm/index.js",
76
+ keywords: ["node", "azure", "cloud", "typescript", "browser", "isomorphic"],
77
+ license: "MIT",
78
+ main: "dist/index.js",
79
+ module: generateTest ? "./dist-esm/src/index.js" : "./dist-esm/index.js",
57
80
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
81
+ homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}/README.md`,
82
+ repository: "github:Azure/azure-sdk-for-js",
83
+ bugs: {
84
+ url: "https://github.com/Azure/azure-sdk-for-js/issues"
85
+ },
86
+ files: [
87
+ "dist/",
88
+ generateTest ? "dist-esm/src/" : "dist-esm/",
89
+ `types/${packageDetails.nameWithoutScope}.d.ts`,
90
+ "README.md",
91
+ "LICENSE",
92
+ "review/*"
93
+ ],
94
+ "//metadata": {
95
+ constantPaths: [
96
+ {
97
+ path: "swagger/README.md",
98
+ prefix: "package-version"
99
+ }
100
+ ]
101
+ },
102
+ engines: {
103
+ node: ">=12.0.0"
104
+ },
58
105
  scripts: {
59
- test: 'echo "Error: no test specified" && exit 1',
60
- build: "tsc --build && npm run extract-api",
61
- "extract-api": "mkdirp ./review && api-extractor run --local",
62
- pack: "npm pack 2>&1",
63
- lint: "echo skipped",
64
- audit: "echo skipped",
65
- clean: "echo skipped",
66
- "build:node": "echo skipped",
67
- "build:browser": "echo skipped",
68
- "build:test": "echo skipped",
106
+ audit:
107
+ "node ../../../common/scripts/rush-audit.js && rimraf node_modules package-lock.json && npm i --package-lock-only 2>&1 && npm audit",
108
+ "build:browser": "echo skipped.",
109
+ "build:node": "echo skipped.",
69
110
  "build:samples": "echo skipped.",
70
- "check-format": "echo skipped",
111
+ "build:test": "echo skipped.",
112
+ "build:debug": "echo skipped.",
113
+ "check-format":
114
+ 'prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "test/**/*.ts" "samples-dev/**/*.ts" "*.{js,json}"',
115
+ clean:
116
+ "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
71
117
  "execute:samples": "echo skipped",
72
- format: "echo skipped",
73
- prebuild: "echo skipped",
74
- "test:node": "echo skipped",
75
- "test:browser": "echo skipped",
76
- "unit-test": "echo skipped",
77
- "unit-test:node": "echo skipped",
78
- "unit-test:browser": "echo skipped",
118
+ "extract-api":
119
+ "rimraf review && mkdirp ./review && api-extractor run --local",
120
+ format:
121
+ 'prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore "src/**/*.ts" "test/**/*.ts" "samples-dev/**/*.ts" "*.{js,json}"',
122
+ "generate:client":
123
+ "autorest --typescript swagger/README.md && npm run format",
79
124
  "integration-test:browser": "echo skipped",
80
125
  "integration-test:node": "echo skipped",
81
126
  "integration-test": "echo skipped",
82
- docs: "echo skipped"
83
- },
84
- keywords: [],
85
- author: "",
86
- license: "ISC",
87
- engines: {
88
- node: ">=12.0.0"
127
+ "lint:fix":
128
+ "eslint package.json api-extractor.json src test --ext .ts --fix --fix-type [problem,suggestion]",
129
+ lint: "eslint package.json api-extractor.json src test --ext .ts",
130
+ pack: "npm pack 2>&1",
131
+ "test:browser": "echo skipped",
132
+ "test:node": "echo skipped",
133
+ test: 'echo "Error: no test specified" && exit 1',
134
+ "unit-test": "echo skipped",
135
+ "unit-test:node": "echo skipped",
136
+ "unit-test:browser": "echo skipped"
89
137
  },
138
+ sideEffects: false,
139
+ autoPublish: false,
90
140
  dependencies: {
91
- "@azure-rest/core-client": "1.0.0-beta.4",
92
141
  "@azure/core-auth": "^1.3.0",
93
- "@azure/core-rest-pipeline": "^1.0.4"
142
+ "@azure-rest/core-client": "1.0.0-beta.10",
143
+ "@azure/core-rest-pipeline": "^1.8.0",
144
+ "@azure/logger": "^1.0.0",
145
+ tslib: "^2.2.0",
146
+ ...(hasPaging && {
147
+ "@azure/core-paging": "^1.2.0"
148
+ }),
149
+ ...(hasLRO && {
150
+ "@azure/core-lro": "^2.2.0"
151
+ })
94
152
  },
95
153
  devDependencies: {
154
+ "@microsoft/api-extractor": "7.18.11",
96
155
  autorest: "latest",
97
- "@microsoft/api-extractor": "^7.13.2",
98
- "@types/node": "^14.14.22",
156
+ "@types/node": "^12.0.0",
99
157
  dotenv: "^8.2.0",
100
- prettier: "^2.2.1",
101
- "ts-node": "^9.1.1",
102
- typescript: "~4.2.4",
103
- mkdirp: "^1.0.4"
104
- },
105
- sideEffects: false,
106
- autoPublish: true
158
+ eslint: "^7.15.0",
159
+ mkdirp: "^1.0.4",
160
+ prettier: "2.2.1",
161
+ rimraf: "^3.0.0",
162
+ "source-map-support": "^0.5.9",
163
+ typescript: "~4.2.0"
164
+ }
107
165
  };
166
+
167
+ if (azureSdkForJs) {
168
+ packageInfo.scripts["build"] =
169
+ "npm run clean && tsc -p . && dev-tool run bundle && mkdirp ./review && api-extractor run --local";
170
+ packageInfo.scripts["build:debug"] =
171
+ "tsc -p . && dev-tool run bundle && api-extractor run --local";
172
+ packageInfo.scripts["build:browser"] = "tsc -p . && dev-tool run bundle";
173
+ packageInfo.scripts["build:node"] = "tsc -p . && dev-tool run bundle";
174
+ packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0";
175
+ packageInfo.devDependencies["@azure/eslint-plugin-azure-sdk"] = "^3.0.0";
176
+ } else {
177
+ packageInfo.scripts["build"] =
178
+ "npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api";
179
+ packageInfo.scripts[
180
+ "minify"
181
+ ] = `uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`;
182
+ packageInfo.devDependencies["@rollup/plugin-commonjs"] = "^21.0.1";
183
+ packageInfo.devDependencies["@rollup/plugin-json"] = "^4.1.0";
184
+ packageInfo.devDependencies["@rollup/plugin-multi-entry"] = "^4.1.0";
185
+ packageInfo.devDependencies["@rollup/plugin-node-resolve"] = "^13.1.3";
186
+ packageInfo.devDependencies["rollup"] = "^2.66.1";
187
+ packageInfo.devDependencies["rollup-plugin-sourcemaps"] = "^0.6.3";
188
+ packageInfo.devDependencies["uglify-js"] = "^3.4.9";
189
+ }
190
+
191
+ if (generateTest) {
192
+ packageInfo.module = `./dist-esm/src/index.js`;
193
+ packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
194
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
195
+ packageInfo.devDependencies["@azure-tools/test-recorder"] = "^2.0.0";
196
+ packageInfo.devDependencies["mocha"] = "^7.1.1";
197
+ packageInfo.devDependencies["mocha-junit-reporter"] = "^1.18.0";
198
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
199
+ packageInfo.devDependencies["@types/chai"] = "^4.2.8";
200
+ packageInfo.devDependencies["chai"] = "^4.2.0";
201
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
202
+ packageInfo.devDependencies["karma-chrome-launcher"] = "^3.0.0";
203
+ packageInfo.devDependencies["karma-coverage"] = "^2.0.0";
204
+ packageInfo.devDependencies["karma-edge-launcher"] = "^0.4.2";
205
+ packageInfo.devDependencies["karma-env-preprocessor"] = "^0.1.1";
206
+ packageInfo.devDependencies["karma-firefox-launcher"] = "^1.1.0";
207
+ packageInfo.devDependencies["karma-ie-launcher"] = "^1.0.0";
208
+ packageInfo.devDependencies["karma-junit-reporter"] = "^2.0.1";
209
+ packageInfo.devDependencies["karma-mocha-reporter"] = "^2.2.5";
210
+ packageInfo.devDependencies["karma-mocha"] = "^2.0.1";
211
+ packageInfo.devDependencies["karma-source-map-support"] = "~1.4.0";
212
+ packageInfo.devDependencies["karma-sourcemap-loader"] = "^0.3.8";
213
+ packageInfo.devDependencies["karma"] = "^6.2.0";
214
+ packageInfo.devDependencies["nyc"] = "^14.0.0";
215
+ packageInfo.devDependencies["source-map-support"] = "^0.5.9";
216
+ packageInfo.scripts["test"] =
217
+ "npm run clean && npm run build:test && npm run unit-test";
218
+ packageInfo.scripts["test:node"] =
219
+ "npm run clean && npm run build:test && npm run unit-test:node";
220
+ packageInfo.scripts["test:browser"] =
221
+ "npm run clean && npm run build:test && npm run unit-test:browser";
222
+ packageInfo.scripts["build:browser"] =
223
+ "tsc -p . && cross-env ONLY_BROWSER=true rollup -c 2>&1";
224
+ packageInfo.scripts["build:node"] =
225
+ "tsc -p . && cross-env ONLY_NODE=true rollup -c 2>&1";
226
+ packageInfo.scripts["build:test"] = "tsc -p . && rollup -c 2>&1";
227
+ packageInfo.scripts["unit-test"] =
228
+ "npm run unit-test:node && npm run unit-test:browser";
229
+ packageInfo.scripts["unit-test:node"] =
230
+ 'mocha -r esm --require ts-node/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 1200000 --full-trace "test/{,!(browser)/**/}*.spec.ts"';
231
+ packageInfo.scripts["unit-test:browser"] = "karma start --single-run";
232
+ packageInfo.scripts["integration-test:browser"] =
233
+ "karma start --single-run";
234
+ packageInfo.scripts["integration-test:node"] =
235
+ 'nyc mocha -r esm --require source-map-support/register --reporter ../../../common/tools/mocha-multi-reporter.js --timeout 5000000 --full-trace "dist-esm/test/{,!(browser)/**/}*.spec.js"';
236
+ packageInfo.scripts["integration-test"] =
237
+ "npm run integration-test:node && npm run integration-test:browser";
238
+ if (azureSdkForJs) {
239
+ packageInfo.scripts["build:test"] = "tsc -p . && dev-tool run bundle";
240
+ packageInfo.scripts["integration-test:browser"] =
241
+ "dev-tool run test:browser";
242
+ packageInfo.scripts["unit-test:browser"] = "dev-tool run test:browser";
243
+ packageInfo.scripts["unit-test:node"] =
244
+ "dev-tool run test:node-ts-input -- --timeout 1200000 --exclude 'test/**/browser/*.spec.ts' 'test/**/*.spec.ts'";
245
+ packageInfo.scripts["integration-test:node"] =
246
+ "dev-tool run test:node-js-input -- --timeout 5000000 'dist-esm/test/**/*.spec.js'";
247
+ }
248
+
249
+ packageInfo["browser"] = {
250
+ "./dist-esm/test/public/utils/env.js":
251
+ "./dist-esm/test/public/utils/env.browser.js"
252
+ };
253
+ }
254
+
255
+ if (
256
+ generateSample &&
257
+ (model as TestCodeModel)?.testModel?.mockTest?.exampleGroups &&
258
+ (model as TestCodeModel).testModel!.mockTest!.exampleGroups.length > 0
259
+ ) {
260
+ packageInfo["//sampleConfiguration"] = {
261
+ productName: description,
262
+ productSlugs: ["azure"],
263
+ disableDocsMs: true,
264
+ apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
265
+ };
266
+ if (azureSdkForJs) {
267
+ packageInfo.scripts["execute:samples"] =
268
+ "dev-tool samples run samples-dev";
269
+ }
270
+ }
271
+
272
+ return packageInfo;
108
273
  }
109
274
 
110
275
  /**
@@ -121,16 +286,25 @@ function regularAutorestPackage(
121
286
  tracingInfo,
122
287
  disablePagingAsyncIterators,
123
288
  azureArm,
124
- addCredentials,
125
- azureOutputDirectory
289
+ azureOutputDirectory,
290
+ generateTest,
291
+ generateSample,
292
+ coreHttpCompatMode,
293
+ azureSdkForJs
126
294
  } = getAutorestOptions();
127
- const hasLro = clientDetails.operationGroups.some(og =>
128
- og.operations.some(o => o.isLro)
129
- );
295
+ const { model } = getSession();
296
+ const { addCredentials } = getSecurityInfoFromModel(model.security);
297
+ const hasLro = hasPollingOperations(model);
130
298
  const hasAsyncIterators =
131
299
  !disablePagingAsyncIterators && clientDetails.options.hasPaging;
300
+ const clientPackageName = packageDetails.name;
301
+ let apiRefUrlQueryParameter: string = "";
302
+ if (packageDetails.version.includes("beta")) {
303
+ apiRefUrlQueryParameter = "?view=azure-node-preview";
304
+ }
305
+ const description = packageDetails.description;
132
306
 
133
- return {
307
+ const packageInfo: Record<string, any> = {
134
308
  name: packageDetails.name,
135
309
  "sdk-type": `${azureArm ? "mgmt" : "client"}`,
136
310
  author: "Microsoft Corporation",
@@ -144,18 +318,18 @@ function regularAutorestPackage(
144
318
  dependencies: {
145
319
  ...(hasLro && { "@azure/core-lro": "^2.2.0" }),
146
320
  ...(hasLro && { "@azure/abort-controller": "^1.0.0" }),
147
- ...(hasAsyncIterators && { "@azure/core-paging": "^1.1.1" }),
148
- ...(!useCoreV2 && { "@azure/core-http": "^1.2.4" }),
149
- ...(useCoreV2 && { "@azure/core-client": "^1.0.0" }),
321
+ ...(hasAsyncIterators && { "@azure/core-paging": "^1.2.0" }),
322
+ ...(!useCoreV2 && { "@azure/core-http": "^2.0.0" }),
323
+ ...(useCoreV2 && { "@azure/core-client": "^1.5.0" }),
150
324
  ...(useCoreV2 && addCredentials && { "@azure/core-auth": "^1.3.0" }),
325
+ ...(useCoreV2 &&
326
+ coreHttpCompatMode && { "@azure/core-http-compat": "^1.2.0" }),
151
327
  ...(useCoreV2 && {
152
- "@azure/core-rest-pipeline": "^1.1.0"
328
+ "@azure/core-rest-pipeline": "^1.8.0"
153
329
  }),
154
330
  ...(tracingInfo && {
155
- "@azure/core-tracing": "1.0.0-preview.11",
156
- "@opentelemetry/api": "^0.10.2"
331
+ "@azure/core-tracing": "^1.0.0"
157
332
  }),
158
-
159
333
  tslib: "^2.2.0"
160
334
  },
161
335
  keywords: ["node", "azure", "typescript", "browser", "isomorphic"],
@@ -164,17 +338,17 @@ function regularAutorestPackage(
164
338
  module: `./dist-esm/index.js`,
165
339
  types: `./types/${packageDetails.nameWithoutScope}.d.ts`,
166
340
  devDependencies: {
167
- "@microsoft/api-extractor": "7.7.11",
168
- "@rollup/plugin-commonjs": "11.0.2",
169
- "@rollup/plugin-json": "^4.0.0",
170
- "@rollup/plugin-multi-entry": "^3.0.0",
171
- "@rollup/plugin-node-resolve": "^8.0.0",
341
+ "@microsoft/api-extractor": "7.18.11",
342
+ "@rollup/plugin-commonjs": "^21.0.1",
343
+ "@rollup/plugin-json": "^4.1.0",
344
+ "@rollup/plugin-multi-entry": "^4.1.0",
345
+ "@rollup/plugin-node-resolve": "^13.1.3",
172
346
  mkdirp: "^1.0.4",
173
- rollup: "^1.16.3",
174
- "rollup-plugin-sourcemaps": "^0.4.2",
175
- "rollup-plugin-node-resolve": "^3.4.0",
347
+ rollup: "^2.66.1",
348
+ "rollup-plugin-sourcemaps": "^0.6.3",
176
349
  typescript: "~4.2.0",
177
- "uglify-js": "^3.4.9"
350
+ "uglify-js": "^3.4.9",
351
+ rimraf: "^3.0.0"
178
352
  },
179
353
  // TODO: Calculate the SDK path for the package
180
354
  homepage: `https://github.com/Azure/azure-sdk-for-js/tree/main/${azureOutputDirectory}`,
@@ -200,18 +374,20 @@ function regularAutorestPackage(
200
374
  "rollup.config.js",
201
375
  "tsconfig.json",
202
376
  "review/*",
203
- "CHANGELOG.md"
377
+ "CHANGELOG.md",
378
+ "types/*"
204
379
  ],
205
380
  scripts: {
206
381
  build:
207
- "tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api",
382
+ "npm run clean && tsc && rollup -c 2>&1 && npm run minify && mkdirp ./review && npm run extract-api",
208
383
  minify: `uglifyjs -c -m --comments --source-map "content='./dist/index.js.map'" -o ./dist/index.min.js ./dist/index.js`,
209
384
  prepack: "npm run build",
210
385
  pack: "npm pack 2>&1",
211
386
  "extract-api": "api-extractor run --local",
212
387
  lint: "echo skipped",
213
388
  audit: "echo skipped",
214
- clean: "echo skipped",
389
+ clean:
390
+ "rimraf dist dist-browser dist-esm test-dist temp types *.tgz *.log",
215
391
  "build:node": "echo skipped",
216
392
  "build:browser": "echo skipped",
217
393
  "build:test": "echo skipped",
@@ -220,18 +396,63 @@ function regularAutorestPackage(
220
396
  "execute:samples": "echo skipped",
221
397
  format: "echo skipped",
222
398
  test: "echo skipped",
223
- prebuild: "echo skipped",
224
399
  "test:node": "echo skipped",
225
400
  "test:browser": "echo skipped",
226
401
  "unit-test": "echo skipped",
227
402
  "unit-test:node": "echo skipped",
228
403
  "unit-test:browser": "echo skipped",
229
- "integration-test:browser": "echo skipped",
230
- "integration-test:node": "echo skipped",
231
404
  "integration-test": "echo skipped",
232
- docs: "echo skipped"
405
+ "integration-test:node": "echo skipped",
406
+ "integration-test:browser": "echo skipped"
233
407
  },
234
408
  sideEffects: false,
409
+ "//metadata": {
410
+ constantPaths: [
411
+ {
412
+ path: `src/${normalizeName(clientDetails.name, NameType.File)}.ts`,
413
+ prefix: "packageDetails"
414
+ }
415
+ ]
416
+ },
235
417
  autoPublish: true
236
418
  };
419
+ if (generateTest) {
420
+ packageInfo.module = `./dist-esm/src/index.js`;
421
+ packageInfo.devDependencies["@azure/identity"] = "^2.0.1";
422
+ packageInfo.devDependencies["@azure-tools/test-recorder"] = "^2.0.0";
423
+ packageInfo.devDependencies["@azure-tools/test-credential"] = "^1.0.0";
424
+ packageInfo.devDependencies["mocha"] = "^7.1.1";
425
+ packageInfo.devDependencies["@types/chai"] = "^4.2.8";
426
+ packageInfo.devDependencies["chai"] = "^4.2.0";
427
+ packageInfo.devDependencies["cross-env"] = "^7.0.2";
428
+ packageInfo.scripts["test"] = "npm run integration-test";
429
+ packageInfo.scripts["unit-test"] =
430
+ "npm run unit-test:node && npm run unit-test:browser";
431
+ packageInfo.scripts["unit-test:node"] =
432
+ "cross-env TEST_MODE=playback npm run integration-test:node";
433
+ packageInfo.scripts["integration-test"] =
434
+ "npm run integration-test:node && npm run integration-test:browser";
435
+
436
+ if (azureSdkForJs) {
437
+ packageInfo.devDependencies["@azure/dev-tool"] = "^1.0.0";
438
+ packageInfo.scripts["integration-test:node"] =
439
+ "dev-tool run test:node-ts-input -- --timeout 1200000 'test/*.ts'";
440
+ } else {
441
+ packageInfo.scripts["integration-test:node"] =
442
+ "mocha -r esm --require ts-node/register --timeout 1200000 --full-trace test/*.ts --reporter ../../../common/tools/mocha-multi-reporter.js";
443
+ }
444
+ }
445
+ if (
446
+ generateSample &&
447
+ clientDetails.samples &&
448
+ clientDetails.samples.length > 0
449
+ ) {
450
+ packageInfo["//sampleConfiguration"] = {
451
+ productName: description,
452
+ productSlugs: ["azure"],
453
+ disableDocsMs: true,
454
+ apiRefLink: `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
455
+ };
456
+ }
457
+ return packageInfo;
237
458
  }
@@ -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.
@@ -49,23 +51,38 @@ interface Metadata {
49
51
  identityPackageURL?: string;
50
52
  /** Indicates if the package is a test/releasable package. */
51
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;
52
63
  }
53
64
 
54
65
  /**
55
66
  * Returns meta data information about the service, the package, and the client.
56
- * @param clientDetails - the client details
57
- * @param packageDetails - the package details
67
+ * @param codeModel - include the client details
58
68
  * @returns inferred metadata about the service, the package, and the client
59
69
  */
60
- function createMetadata(
61
- packageDetails: PackageDetails,
62
- clientDetails: ClientDetails,
63
- azureOutputDirectory?: string,
64
- addCredentials?: boolean,
65
- azureArm?: boolean,
66
- isTestPackage?: boolean
67
- ): Metadata {
68
- 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";
69
86
  const repoURL = azureHuh
70
87
  ? "https://github.com/Azure/azure-sdk-for-js"
71
88
  : undefined;
@@ -77,10 +94,17 @@ function createMetadata(
77
94
  const names = relativePackageSourcePath?.split("/").slice(1);
78
95
  const packageParentDirectoryName = names?.[0];
79
96
  const packageDirectoryName = names?.[1];
80
- const clientClassName = clientDetails.name;
81
- const clientPackageName = packageDetails.name;
82
- const serviceTitle = clientDetails.info?.title ?? clientClassName;
83
- 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 =
84
108
  /**
85
109
  * It is a required convention in Azure swaggers for their titles to end with
86
110
  * "Client".
@@ -90,7 +114,8 @@ function createMetadata(
90
114
  serviceTitle.match(/(.*)Client/)?.[1] ??
91
115
  clientClassName.match(/(.*)Client/)?.[1] ??
92
116
  serviceTitle.match(/(.*) Service/)?.[1] ??
93
- "Service";
117
+ simpleServiceName;
118
+
94
119
  const serviceName = azureHuh
95
120
  ? simpleServiceName.startsWith("Azure")
96
121
  ? simpleServiceName
@@ -98,6 +123,12 @@ function createMetadata(
98
123
  : simpleServiceName;
99
124
  const identityPackageURL =
100
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
+
101
132
  return {
102
133
  serviceName: serviceName,
103
134
  clientPackageName: clientPackageName,
@@ -115,45 +146,36 @@ function createMetadata(
115
146
  `https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-js%2Fsdk%2F${packageParentDirectoryName}%2F${packageDirectoryName}%2FREADME.png`
116
147
  : undefined,
117
148
  clientDescriptiveName: `${serviceName} client`,
118
- description: clientDetails.info?.description,
149
+ description: codeModel.info?.description,
119
150
  apiRefURL: azureHuh
120
- ? `https://docs.microsoft.com/javascript/api/${clientPackageName}`
151
+ ? `https://docs.microsoft.com/javascript/api/${clientPackageName}${apiRefUrlQueryParameter}`
121
152
  : undefined,
122
153
  packageNPMURL: `https://www.npmjs.com/package/${clientPackageName}`,
123
154
  contributingGuideURL: repoURL && `${repoURL}/blob/main/CONTRIBUTING.md`,
124
155
  projectName: azureHuh ? "Microsoft Azure SDK for JavaScript" : undefined,
125
156
  addCredentials,
126
157
  identityPackageURL,
127
- isReleasablePackage: !isTestPackage
158
+ isReleasablePackage: !isTestPackage,
159
+ azureArm: azureArm,
160
+ serviceDocURL: productDocLink,
161
+ dependencyDescription: dependencyInfo?.description,
162
+ dependencyLink: dependencyInfo?.link,
163
+ hasMultiClients: multiClient && batch && batch.length > 1
128
164
  };
129
165
  }
130
166
 
131
- export function generateReadmeFile(
132
- clientDetails: ClientDetails,
133
- project: Project
134
- ) {
135
- const {
136
- packageDetails,
137
- azureOutputDirectory,
138
- generateMetadata,
139
- addCredentials,
140
- azureArm,
141
- isTestPackage
142
- } = getAutorestOptions();
167
+ export function generateReadmeFile(codeModel: CodeModel, project: Project) {
168
+ const { generateMetadata, restLevelClient } = getAutorestOptions();
143
169
 
144
170
  if (!generateMetadata) {
145
171
  return;
146
172
  }
147
173
 
148
- const metadata = createMetadata(
149
- packageDetails,
150
- clientDetails,
151
- azureOutputDirectory,
152
- addCredentials,
153
- azureArm,
154
- isTestPackage
155
- );
156
- 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), {
157
179
  encoding: "utf-8"
158
180
  });
159
181
  const readmeFileContents = hbs.compile(file, { noEscape: true });
@@ -161,3 +183,18 @@ export function generateReadmeFile(
161
183
  overwrite: true
162
184
  });
163
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
+ }