@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
@@ -1,405 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT License.
3
-
4
- import {
5
- Project,
6
- PropertyDeclarationStructure,
7
- ConstructorDeclaration,
8
- CodeBlockWriter,
9
- ClassDeclaration,
10
- SourceFile
11
- } from "ts-morph";
12
- import { normalizeName, NameType } from "../utils/nameUtils";
13
- import { ClientDetails } from "../models/clientDetails";
14
- import { PackageDetails } from "../models/packageDetails";
15
- import { ParameterDetails } from "../models/parameterDetails";
16
- import { ImplementationLocation, SchemaType } from "@autorest/codemodel";
17
- import { EndpointDetails } from "../transforms/urlTransforms";
18
- import { formatJsDocParam } from "./utils/parameterUtils";
19
- import { getAutorestOptions } from "../autorestSession";
20
-
21
- export function generateClientContext(
22
- clientDetails: ClientDetails,
23
- packageDetails: PackageDetails,
24
- project: Project
25
- ) {
26
- const {
27
- useCoreV2,
28
- hideClients,
29
- addCredentials,
30
- srcPath
31
- } = getAutorestOptions();
32
-
33
- const importedModels = new Set<string>();
34
- const clientParams = clientDetails.parameters.filter(
35
- param => param.implementationLocation === ImplementationLocation.Client
36
- );
37
-
38
- const hasLro = clientDetails.operationGroups.some(og =>
39
- og.operations.some(o => o.isLro)
40
- );
41
-
42
- const clientContextClassName = `${clientDetails.className}Context`;
43
- const clientContextFileName = normalizeName(
44
- clientContextClassName,
45
- NameType.File
46
- );
47
-
48
- const sourceFile = project.createSourceFile(
49
- `${srcPath}/${clientContextFileName}.ts`,
50
- undefined,
51
- {
52
- overwrite: true
53
- }
54
- );
55
-
56
- !useCoreV2 && writePackageInfo(sourceFile, packageDetails);
57
-
58
- const contextClass = buildClass(sourceFile, clientContextClassName);
59
-
60
- if (hideClients) {
61
- contextClass.addJsDoc({
62
- tags: [
63
- {
64
- tagName: "internal"
65
- }
66
- ]
67
- });
68
- }
69
-
70
- writeClassProperties(contextClass, clientParams, importedModels);
71
-
72
- const classConstructor = buildConstructor(contextClass, {
73
- clientContextClassName,
74
- clientClassName: clientDetails.className,
75
- clientParams,
76
- importedModels
77
- });
78
-
79
- writeConstructorBody(
80
- classConstructor,
81
- {
82
- clientParams,
83
- clientDetails
84
- },
85
- hasLro
86
- );
87
-
88
- const hasCredentials = !!addCredentials;
89
- writeImports(sourceFile, hasLro, importedModels, hasCredentials);
90
- sourceFile.fixUnusedIdentifiers();
91
- }
92
-
93
- interface WriteConstructorBodyParameters {
94
- clientParams: ParameterDetails[];
95
- clientDetails: ClientDetails;
96
- }
97
-
98
- function writeImports(
99
- sourceFile: SourceFile,
100
- hasLro: boolean,
101
- importedModels: Set<string>,
102
- hasCredentials: boolean
103
- ) {
104
- const { useCoreV2 } = getAutorestOptions();
105
-
106
- if (!useCoreV2) {
107
- sourceFile.addImportDeclaration({
108
- namespaceImport: "coreHttp",
109
- moduleSpecifier: "@azure/core-http"
110
- });
111
- } else {
112
- sourceFile.addImportDeclaration({
113
- namespaceImport: "coreClient",
114
- moduleSpecifier: "@azure/core-client"
115
- });
116
- if (hasCredentials) {
117
- sourceFile.addImportDeclaration({
118
- namespaceImport: "coreAuth",
119
- moduleSpecifier: "@azure/core-auth"
120
- });
121
- }
122
- }
123
-
124
- if (importedModels.size) {
125
- sourceFile.addImportDeclaration({
126
- namedImports: [...importedModels],
127
- moduleSpecifier: "./models"
128
- });
129
- }
130
- }
131
-
132
- function writePackageInfo(
133
- sourceFile: SourceFile,
134
- packageDetails: PackageDetails
135
- ) {
136
- sourceFile.addStatements([
137
- `\n\n`,
138
- `const packageName = "${packageDetails.name || ""}";`,
139
- `const packageVersion = "${packageDetails.version || ""}";`
140
- ]);
141
- }
142
-
143
- function writeClassProperties(
144
- contextClass: ClassDeclaration,
145
- clientParams: ParameterDetails[],
146
- importedModels: Set<string>
147
- ) {
148
- const params = clientParams.filter(p => !p.isSynthetic);
149
- params.forEach(({ typeDetails }) =>
150
- typeDetails.usedModels.forEach(model => importedModels.add(model))
151
- );
152
- contextClass.addProperties(
153
- params.map(param => {
154
- return {
155
- name: param.name,
156
- type: param.typeDetails.typeName,
157
- hasQuestionToken: !param.required
158
- } as PropertyDeclarationStructure;
159
- })
160
- );
161
- }
162
-
163
- function writeConstructorBody(
164
- classConstructor: ConstructorDeclaration,
165
- { clientParams, clientDetails }: WriteConstructorBodyParameters,
166
- hasLro: boolean
167
- ) {
168
- const { useCoreV2 } = getAutorestOptions();
169
-
170
- const requiredParams = getRequiredParameters(clientParams);
171
- const addBlankLine = true;
172
- const requiredParameters = getRequiredParamAssignments(requiredParams);
173
- const constantParameters = getConstantClientParamAssignments(clientParams);
174
- classConstructor.addStatements([
175
- writeStatements(getRequiredParamChecks(requiredParams), addBlankLine),
176
- writeStatement(
177
- writeDefaultOptions(
178
- clientParams.some(p => p.name === "credentials"),
179
- hasLro,
180
- clientDetails
181
- )
182
- )
183
- ]);
184
-
185
- !useCoreV2 &&
186
- classConstructor.addStatements([
187
- writeStatement(getEndpointStatement(clientDetails.endpoint), addBlankLine)
188
- ]);
189
-
190
- classConstructor.addStatements([
191
- requiredParameters.length ? "// Parameter assignments" : "",
192
- writeStatements(getRequiredParamAssignments(requiredParams), addBlankLine),
193
- constantParameters.length
194
- ? "// Assigning values to Constant parameters"
195
- : "",
196
- writeStatements(constantParameters, addBlankLine)
197
- ]);
198
- }
199
-
200
- const writeStatement = (content: string, shouldAddBlankLine = false) => (
201
- writer: CodeBlockWriter
202
- ) => {
203
- if (content) {
204
- writer.writeLine(content);
205
- shouldAddBlankLine && writer.blankLine();
206
- }
207
- };
208
-
209
- const writeStatements = (lines: string[], shouldAddBlankLine = false) => (
210
- writer: CodeBlockWriter
211
- ) => {
212
- lines.forEach(line => writer.writeLine(line));
213
- shouldAddBlankLine && writer.blankLine();
214
- };
215
-
216
- function getCredentialScopesValue(credentialScopes?: string | string[]) {
217
- if (Array.isArray(credentialScopes)) {
218
- return `[${credentialScopes.map(scope => `"${scope}"`).join()}]`;
219
- } else if (typeof credentialScopes === "string") {
220
- return `"${credentialScopes}"`;
221
- }
222
-
223
- return credentialScopes;
224
- }
225
-
226
- function writeDefaultOptions(
227
- hasCredentials: boolean,
228
- hasLro: boolean,
229
- clientDetails: ClientDetails
230
- ) {
231
- const { useCoreV2, credentialScopes, packageDetails } = getAutorestOptions();
232
-
233
- const credentialScopesValues = getCredentialScopesValue(credentialScopes);
234
- const addScopes = credentialScopes
235
- ? `if(!options.credentialScopes) {
236
- options.credentialScopes = ${credentialScopesValues}
237
- }`
238
- : "";
239
-
240
- const defaults = !hasCredentials
241
- ? `const defaults: ${clientDetails.className}OptionalParams = {
242
- requestContentType: "application/json; charset=utf-8"
243
- };`
244
- : `const defaults: ${clientDetails.className}OptionalParams = {
245
- requestContentType: "application/json; charset=utf-8",
246
- credential: credentials
247
- };`;
248
-
249
- return !useCoreV2
250
- ? `// Initializing default values for options
251
- if (!options) {
252
- options = {};
253
- }
254
-
255
- const defaultUserAgent = \`azsdk-js-\${packageName.replace("@azure/","")}/\${packageVersion} \${coreHttp.getDefaultUserAgentValue()}\`;
256
-
257
- ${addScopes}
258
-
259
- super(${hasCredentials ? "credentials" : `undefined`}, {
260
- ...options,
261
- userAgent: options.userAgent
262
- ? \`\${options.userAgent} \${defaultUserAgent}\`
263
- : \`\${defaultUserAgent}\`
264
- });
265
-
266
- this.requestContentType = "application/json; charset=utf-8";
267
-
268
- `
269
- : `// Initializing default values for options
270
- if (!options) {
271
- options = {};
272
- }
273
- ${defaults}
274
-
275
- const packageDetails = \`azsdk-js-${packageDetails.name.replace(
276
- "@azure/",
277
- ""
278
- )}/${packageDetails.version}\`;
279
- const userAgentPrefix =
280
- options.userAgentOptions && options.userAgentOptions.userAgentPrefix
281
- ? \`\${options.userAgentOptions.userAgentPrefix} \${packageDetails}\`
282
- : \`\${packageDetails}\`;
283
-
284
- ${addScopes}
285
- const optionsWithDefaults = {
286
- ...defaults,
287
- ...options,
288
- userAgentOptions: {
289
- userAgentPrefix
290
- },
291
- baseUri: ${getEndpoint(clientDetails.endpoint)}
292
- };
293
- super(optionsWithDefaults);
294
- `;
295
- }
296
-
297
- function buildClass(sourceFile: SourceFile, clientContextClassName: string) {
298
- const { useCoreV2 } = getAutorestOptions();
299
-
300
- return sourceFile.addClass({
301
- name: clientContextClassName,
302
- extends: !useCoreV2 ? "coreHttp.ServiceClient" : "coreClient.ServiceClient",
303
- isExported: true
304
- });
305
- }
306
-
307
- interface BuildContructorParams {
308
- clientContextClassName: string;
309
- clientClassName: string;
310
- clientParams: ParameterDetails[];
311
- importedModels: Set<string>;
312
- }
313
-
314
- function buildConstructor(
315
- contextClass: ClassDeclaration,
316
- {
317
- clientContextClassName,
318
- clientParams,
319
- clientClassName,
320
- importedModels
321
- }: BuildContructorParams
322
- ) {
323
- const requiredParams = getRequiredParameters(clientParams);
324
- const hasClientOptionalParams = clientParams.some(p => !p.required);
325
- const docs = [
326
- `Initializes a new instance of the ${clientContextClassName} class.`,
327
- ...formatJsDocParam(requiredParams),
328
- `@param options The parameter options`
329
- ]
330
- .filter(d => !!d)
331
- .join("\n");
332
-
333
- let clientOptionsParameterType = "coreHttp.ServiceClientOptions";
334
-
335
- if (hasClientOptionalParams) {
336
- const typeName = `${clientClassName}OptionalParams`;
337
- importedModels.add(typeName);
338
- clientOptionsParameterType = typeName;
339
- }
340
-
341
- requiredParams.forEach(({ typeDetails }) =>
342
- typeDetails.usedModels.forEach(model => importedModels.add(model))
343
- );
344
-
345
- return contextClass.addConstructor({
346
- docs: [docs],
347
- parameters: [
348
- ...requiredParams.map(p => ({
349
- name: p.name,
350
- type: p.typeDetails.typeName
351
- })),
352
- {
353
- name: "options",
354
- hasQuestionToken: true,
355
- type: clientOptionsParameterType
356
- }
357
- ]
358
- });
359
- }
360
-
361
- function getRequiredParameters(parameters: ParameterDetails[]) {
362
- /**
363
- * Getting parameters that are marked as required, and also don't have a defaultValue.
364
- * Constants are also exluded since they have defined value
365
- */
366
- return parameters.filter(
367
- p => p.required && p.schemaType !== SchemaType.Constant && !p.defaultValue
368
- );
369
- }
370
-
371
- function getEndpointStatement({ endpoint }: EndpointDetails) {
372
- return `this.baseUri = options.endpoint ${
373
- endpoint ? ` || "${endpoint}"` : ""
374
- };`;
375
- }
376
-
377
- function getConstantClientParamAssignments(
378
- clientParameters: ParameterDetails[]
379
- ) {
380
- return clientParameters
381
- .filter(p => !!p.defaultValue || p.schemaType === SchemaType.Constant)
382
- .map(
383
- ({ name, defaultValue }) =>
384
- `this.${name} = options.${name} || ${defaultValue}`
385
- );
386
- }
387
-
388
- function getRequiredParamChecks(requiredParameters: ParameterDetails[]) {
389
- return requiredParameters.map(
390
- ({ name }) => `if(${name} === undefined) {
391
- throw new Error("'${name}' cannot be null");
392
- }`
393
- );
394
- }
395
-
396
- function getRequiredParamAssignments(requiredParameters: ParameterDetails[]) {
397
- const disallowedClientParameters = ["credentials"];
398
- return requiredParameters
399
- .filter(({ name }) => !disallowedClientParameters.includes(name))
400
- .map(({ name }) => `this.${name} = ${name};`);
401
- }
402
-
403
- function getEndpoint({ endpoint }: EndpointDetails) {
404
- return `options.endpoint ${endpoint ? ` || "${endpoint}"` : ""}`;
405
- }
@@ -1,82 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- import {
5
- failureStates,
6
- LroResourceLocationConfig,
7
- LongRunningOperation,
8
- LroBody,
9
- LroResponse,
10
- LroStatus,
11
- RawResponse,
12
- successStates
13
- } from "./models";
14
- import { isUnexpectedPollingResponse } from "./requestUtils";
15
-
16
- function getResponseStatus(rawResponse: RawResponse): string {
17
- const { status } = (rawResponse.body as LroBody) ?? {};
18
- return status?.toLowerCase() ?? "succeeded";
19
- }
20
-
21
- function isAzureAsyncPollingDone(rawResponse: RawResponse): boolean {
22
- const state = getResponseStatus(rawResponse);
23
- if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
24
- throw new Error(`Operation status: ${state}`);
25
- }
26
- return successStates.includes(state);
27
- }
28
-
29
- async function sendFinalRequest<TResult>(
30
- lro: LongRunningOperation<TResult>,
31
- lroResourceLocationConfig?: LroResourceLocationConfig,
32
- resourceLocation?: string
33
- ): Promise<LroResponse<TResult> | undefined> {
34
- switch (lroResourceLocationConfig) {
35
- case "original-uri":
36
- return lro.retrieveAzureAsyncResource();
37
- case "azure-async-operation":
38
- return Promise.resolve(undefined);
39
- case "location":
40
- default:
41
- return lro.retrieveAzureAsyncResource(resourceLocation);
42
- }
43
- }
44
-
45
- export function processAzureAsyncOperationResult<TResult>(
46
- lro: LongRunningOperation<TResult>,
47
- resourceLocation?: string,
48
- lroResourceLocationConfig?: LroResourceLocationConfig
49
- ): (rawResponse: RawResponse, flatResponse: TResult) => LroStatus<TResult> {
50
- return (rawResponse: RawResponse, flatResponse: TResult): LroStatus<TResult> => {
51
- if (isAzureAsyncPollingDone(rawResponse)) {
52
- if (resourceLocation === undefined) {
53
- return { rawResponse, flatResponse, done: true };
54
- } else {
55
- return {
56
- rawResponse,
57
- flatResponse,
58
- done: false,
59
- next: async () => {
60
- const finalResponse = await sendFinalRequest(
61
- lro,
62
- lroResourceLocationConfig,
63
- resourceLocation
64
- );
65
- return {
66
- ...(finalResponse ?? {
67
- rawResponse,
68
- flatResponse
69
- }),
70
- done: true
71
- };
72
- }
73
- };
74
- }
75
- }
76
- return {
77
- rawResponse,
78
- flatResponse,
79
- done: false
80
- };
81
- };
82
- }
@@ -1,34 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- import { failureStates, LroBody, LroStatus, RawResponse, successStates } from "./models";
5
- import { isUnexpectedPollingResponse } from "./requestUtils";
6
-
7
- function getProvisioningState(rawResponse: RawResponse): string {
8
- const { properties, provisioningState } = (rawResponse.body as LroBody) ?? {};
9
- const state: string | undefined = properties?.provisioningState ?? provisioningState;
10
- return state?.toLowerCase() ?? "succeeded";
11
- }
12
-
13
- export function isBodyPollingDone(rawResponse: RawResponse): boolean {
14
- const state = getProvisioningState(rawResponse);
15
- if (isUnexpectedPollingResponse(rawResponse) || failureStates.includes(state)) {
16
- throw new Error(`The long running operation has failed. The provisioning state: ${state}.`);
17
- }
18
- return successStates.includes(state);
19
- }
20
-
21
- /**
22
- * Creates a polling strategy based on BodyPolling which uses the provisioning state
23
- * from the result to determine the current operation state
24
- */
25
- export function processBodyPollingOperationResult<TResult>(
26
- rawResponse: RawResponse,
27
- flatResponse: TResult
28
- ): LroStatus<TResult> {
29
- return {
30
- rawResponse,
31
- flatResponse,
32
- done: isBodyPollingDone(rawResponse)
33
- };
34
- }
package/src/lro/index.ts DELETED
@@ -1,18 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- export { LroEngine } from "./lroEngine";
5
- export { createGetLroStatusFromResponse } from "./stateMachine";
6
- export {
7
- LroResourceLocationConfig,
8
- GetLroStatusFromResponse,
9
- RawResponse,
10
- LongRunningOperation,
11
- LroConfig,
12
- LroMode,
13
- LroResponse,
14
- LroStatus,
15
- LroTerminalState,
16
- LroInProgressState,
17
- LroEngineOptions
18
- } from "./models";
@@ -1,20 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- import { LroStatus, RawResponse } from "./models";
5
- import { isUnexpectedPollingResponse } from "./requestUtils";
6
-
7
- function isLocationPollingDone(rawResponse: RawResponse): boolean {
8
- return !isUnexpectedPollingResponse(rawResponse) && rawResponse.statusCode !== 202;
9
- }
10
-
11
- export function processLocationPollingOperationResult<TResult>(
12
- rawResponse: RawResponse,
13
- flatResponse: TResult
14
- ): LroStatus<TResult> {
15
- return {
16
- rawResponse,
17
- flatResponse,
18
- done: isLocationPollingDone(rawResponse)
19
- };
20
- }
@@ -1,53 +0,0 @@
1
- // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
3
-
4
- import { Poller, PollOperationState } from "@azure/core-lro";
5
- import {
6
- LongRunningOperation,
7
- LroEngineOptions,
8
- ResumablePollOperationState
9
- } from "./models";
10
- import { GenericPollOperation } from "./operation";
11
-
12
- /**
13
- * The LRO Engine, a class that performs polling.
14
- */
15
- export class LroEngine<
16
- TResult,
17
- TState extends PollOperationState<TResult>
18
- > extends Poller<TState, TResult> {
19
- private intervalInMs: number;
20
-
21
- constructor(lro: LongRunningOperation<TResult>, options?: LroEngineOptions) {
22
- const { intervalInMs = 2000, resumeFrom } = options || {};
23
- function deserializeState(
24
- resumeFrom: string
25
- ): TState & ResumablePollOperationState<TResult> {
26
- try {
27
- return JSON.parse(resumeFrom).state;
28
- } catch (e) {
29
- throw new Error(
30
- `LroEngine: Unable to deserialize state: ${resumeFrom}`
31
- );
32
- }
33
- }
34
- const state: TState & ResumablePollOperationState<TResult> = resumeFrom
35
- ? deserializeState(resumeFrom)
36
- : ({} as any);
37
-
38
- const operation = new GenericPollOperation(state, lro);
39
- super(operation);
40
-
41
- this.intervalInMs = intervalInMs;
42
- operation.setPollerConfig(this as any);
43
- }
44
-
45
- /**
46
- * The method used by the poller to wait before attempting to update its operation.
47
- */
48
- delay(): Promise<void> {
49
- return new Promise(resolve =>
50
- setTimeout(() => resolve(), this.intervalInMs)
51
- );
52
- }
53
- }