@microsoft/teamsfx-core 3.1.3 → 3.1.4-alpha.1df35c7d32.0

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 (376) hide show
  1. package/build/client/devPortalClient.d.ts +43 -0
  2. package/build/client/devPortalClient.d.ts.map +1 -0
  3. package/build/client/devPortalClient.js +626 -0
  4. package/build/client/devPortalClient.js.map +1 -0
  5. package/build/client/graphClient.d.ts +1 -0
  6. package/build/client/graphClient.d.ts.map +1 -1
  7. package/build/client/graphClient.js +17 -2
  8. package/build/client/graphClient.js.map +1 -1
  9. package/build/client/teamsDevPortalClient.d.ts +14 -21
  10. package/build/client/teamsDevPortalClient.d.ts.map +1 -1
  11. package/build/client/teamsDevPortalClient.js +65 -112
  12. package/build/client/teamsDevPortalClient.js.map +1 -1
  13. package/build/client/teamsDevPortalClientProvider.d.ts +6 -0
  14. package/build/client/teamsDevPortalClientProvider.d.ts.map +1 -0
  15. package/build/client/teamsDevPortalClientProvider.js +76 -0
  16. package/build/client/teamsDevPortalClientProvider.js.map +1 -0
  17. package/build/common/featureFlags.d.ts +7 -2
  18. package/build/common/featureFlags.d.ts.map +1 -1
  19. package/build/common/featureFlags.js +8 -3
  20. package/build/common/featureFlags.js.map +1 -1
  21. package/build/common/localizeUtils.d.ts +1 -0
  22. package/build/common/localizeUtils.d.ts.map +1 -1
  23. package/build/common/localizeUtils.js +10 -0
  24. package/build/common/localizeUtils.js.map +1 -1
  25. package/build/common/templates-config.json +4 -4
  26. package/build/common/tools.js +2 -2
  27. package/build/common/tools.js.map +1 -1
  28. package/build/common/utils.d.ts.map +1 -1
  29. package/build/common/utils.js +1 -0
  30. package/build/common/utils.js.map +1 -1
  31. package/build/common/wrappedAxiosClient.d.ts.map +1 -1
  32. package/build/common/wrappedAxiosClient.js +87 -27
  33. package/build/common/wrappedAxiosClient.js.map +1 -1
  34. package/build/component/configManager/actionInjector.d.ts +13 -3
  35. package/build/component/configManager/actionInjector.d.ts.map +1 -1
  36. package/build/component/configManager/actionInjector.js +88 -5
  37. package/build/component/configManager/actionInjector.js.map +1 -1
  38. package/build/component/driver/interface/commonArgs.d.ts +1 -0
  39. package/build/component/driver/interface/commonArgs.d.ts.map +1 -1
  40. package/build/component/driver/teamsApp/appStudio.d.ts.map +1 -1
  41. package/build/component/driver/teamsApp/appStudio.js +10 -6
  42. package/build/component/driver/teamsApp/appStudio.js.map +1 -1
  43. package/build/component/driver/teamsApp/configure.d.ts.map +1 -1
  44. package/build/component/driver/teamsApp/configure.js +12 -8
  45. package/build/component/driver/teamsApp/configure.js.map +1 -1
  46. package/build/component/driver/teamsApp/constants.d.ts +1 -0
  47. package/build/component/driver/teamsApp/constants.d.ts.map +1 -1
  48. package/build/component/driver/teamsApp/constants.js +1 -0
  49. package/build/component/driver/teamsApp/constants.js.map +1 -1
  50. package/build/component/driver/teamsApp/create.d.ts.map +1 -1
  51. package/build/component/driver/teamsApp/create.js +28 -26
  52. package/build/component/driver/teamsApp/create.js.map +1 -1
  53. package/build/component/driver/teamsApp/createAppPackage.js +1 -1
  54. package/build/component/driver/teamsApp/createAppPackage.js.map +1 -1
  55. package/build/component/driver/teamsApp/interfaces/appdefinitions/appUser.d.ts +1 -0
  56. package/build/component/driver/teamsApp/interfaces/appdefinitions/appUser.d.ts.map +1 -1
  57. package/build/component/driver/teamsApp/utils/telemetry.d.ts +0 -1
  58. package/build/component/driver/teamsApp/utils/telemetry.d.ts.map +1 -1
  59. package/build/component/driver/teamsApp/utils/telemetry.js +0 -1
  60. package/build/component/driver/teamsApp/utils/telemetry.js.map +1 -1
  61. package/build/component/driver/teamsApp/utils/utils.d.ts.map +1 -1
  62. package/build/component/driver/teamsApp/utils/utils.js +1 -18
  63. package/build/component/driver/teamsApp/utils/utils.js.map +1 -1
  64. package/build/component/driver/teamsApp/validateAppPackage.js +3 -3
  65. package/build/component/driver/teamsApp/validateAppPackage.js.map +1 -1
  66. package/build/component/driver/teamsApp/validateTestCases.js +4 -4
  67. package/build/component/driver/teamsApp/validateTestCases.js.map +1 -1
  68. package/build/component/driver/util/utils.d.ts.map +1 -1
  69. package/build/component/driver/util/utils.js +1 -0
  70. package/build/component/driver/util/utils.js.map +1 -1
  71. package/build/component/feature/collaboration.js +4 -4
  72. package/build/component/feature/collaboration.js.map +1 -1
  73. package/build/component/generator/openApiSpec/helper.d.ts +2 -2
  74. package/build/component/generator/openApiSpec/helper.d.ts.map +1 -1
  75. package/build/component/generator/openApiSpec/helper.js +65 -5
  76. package/build/component/generator/openApiSpec/helper.js.map +1 -1
  77. package/build/component/generator/openPlugin/authResolver.d.ts +2 -2
  78. package/build/component/generator/openPlugin/authResolver.d.ts.map +1 -1
  79. package/build/component/generator/openPlugin/authResolver.js +17 -7
  80. package/build/component/generator/openPlugin/authResolver.js.map +1 -1
  81. package/build/component/generator/openPlugin/errors.d.ts +4 -0
  82. package/build/component/generator/openPlugin/errors.d.ts.map +1 -0
  83. package/build/component/generator/openPlugin/errors.js +13 -0
  84. package/build/component/generator/openPlugin/errors.js.map +1 -0
  85. package/build/component/generator/openPlugin/exporter.d.ts +9 -6
  86. package/build/component/generator/openPlugin/exporter.d.ts.map +1 -1
  87. package/build/component/generator/openPlugin/exporter.js +502 -53
  88. package/build/component/generator/openPlugin/exporter.js.map +1 -1
  89. package/build/component/generator/openPlugin/fileSystem.d.ts +28 -0
  90. package/build/component/generator/openPlugin/fileSystem.d.ts.map +1 -0
  91. package/build/component/generator/openPlugin/fileSystem.js +181 -0
  92. package/build/component/generator/openPlugin/fileSystem.js.map +1 -0
  93. package/build/component/generator/openPlugin/iconStrategy.d.ts.map +1 -1
  94. package/build/component/generator/openPlugin/iconStrategy.js +30 -14
  95. package/build/component/generator/openPlugin/iconStrategy.js.map +1 -1
  96. package/build/component/generator/openPlugin/importer.d.ts.map +1 -1
  97. package/build/component/generator/openPlugin/importer.js +75 -12
  98. package/build/component/generator/openPlugin/importer.js.map +1 -1
  99. package/build/component/generator/openPlugin/mapper.d.ts +3 -2
  100. package/build/component/generator/openPlugin/mapper.d.ts.map +1 -1
  101. package/build/component/generator/openPlugin/mapper.js +188 -29
  102. package/build/component/generator/openPlugin/mapper.js.map +1 -1
  103. package/build/component/generator/openPlugin/parser.d.ts.map +1 -1
  104. package/build/component/generator/openPlugin/parser.js +264 -70
  105. package/build/component/generator/openPlugin/parser.js.map +1 -1
  106. package/build/component/generator/openPlugin/skillValidation.d.ts +2 -0
  107. package/build/component/generator/openPlugin/skillValidation.d.ts.map +1 -0
  108. package/build/component/generator/openPlugin/skillValidation.js +63 -0
  109. package/build/component/generator/openPlugin/skillValidation.js.map +1 -0
  110. package/build/component/generator/openPlugin/spec.d.ts +67 -0
  111. package/build/component/generator/openPlugin/spec.d.ts.map +1 -0
  112. package/build/component/generator/openPlugin/spec.js +157 -0
  113. package/build/component/generator/openPlugin/spec.js.map +1 -0
  114. package/build/component/generator/openPlugin/textUtils.d.ts +1 -1
  115. package/build/component/generator/openPlugin/textUtils.d.ts.map +1 -1
  116. package/build/component/generator/openPlugin/textUtils.js +8 -7
  117. package/build/component/generator/openPlugin/textUtils.js.map +1 -1
  118. package/build/component/generator/openPlugin/types.d.ts +76 -14
  119. package/build/component/generator/openPlugin/types.d.ts.map +1 -1
  120. package/build/component/generator/openPlugin/validation.d.ts +17 -0
  121. package/build/component/generator/openPlugin/validation.d.ts.map +1 -0
  122. package/build/component/generator/openPlugin/validation.js +563 -0
  123. package/build/component/generator/openPlugin/validation.js.map +1 -0
  124. package/build/component/generator/v4TemplateBridge.d.ts +1 -1
  125. package/build/component/generator/v4TemplateBridge.d.ts.map +1 -1
  126. package/build/component/generator/v4TemplateBridge.js +1 -4
  127. package/build/component/generator/v4TemplateBridge.js.map +1 -1
  128. package/build/component/middleware/questionMW.d.ts.map +1 -1
  129. package/build/component/middleware/questionMW.js +2 -0
  130. package/build/component/middleware/questionMW.js.map +1 -1
  131. package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js +4 -4
  132. package/build/component/resource/botService/botRegistration/botFrameworkRegistration.js.map +1 -1
  133. package/build/component/utils/common.d.ts +1 -9
  134. package/build/component/utils/common.d.ts.map +1 -1
  135. package/build/component/utils/common.js +7 -37
  136. package/build/component/utils/common.js.map +1 -1
  137. package/build/component/utils/envFunctionUtils.d.ts +3 -8
  138. package/build/component/utils/envFunctionUtils.d.ts.map +1 -1
  139. package/build/component/utils/envFunctionUtils.js +46 -131
  140. package/build/component/utils/envFunctionUtils.js.map +1 -1
  141. package/build/component/utils/envUtil.d.ts.map +1 -1
  142. package/build/component/utils/envUtil.js +7 -6
  143. package/build/component/utils/envUtil.js.map +1 -1
  144. package/build/component/utils/mcpAuthScaffolder.d.ts +6 -0
  145. package/build/component/utils/mcpAuthScaffolder.d.ts.map +1 -1
  146. package/build/component/utils/mcpAuthScaffolder.js +17 -7
  147. package/build/component/utils/mcpAuthScaffolder.js.map +1 -1
  148. package/build/core/FxCore.d.ts +3 -2
  149. package/build/core/FxCore.d.ts.map +1 -1
  150. package/build/core/FxCore.declarativeAgent.d.ts +8 -2
  151. package/build/core/FxCore.declarativeAgent.d.ts.map +1 -1
  152. package/build/core/FxCore.declarativeAgent.js +109 -6
  153. package/build/core/FxCore.declarativeAgent.js.map +1 -1
  154. package/build/core/FxCore.js +49 -9
  155. package/build/core/FxCore.js.map +1 -1
  156. package/build/core/FxCore.openPlugin.d.ts +7 -6
  157. package/build/core/FxCore.openPlugin.d.ts.map +1 -1
  158. package/build/core/FxCore.openPlugin.js +7 -6
  159. package/build/core/FxCore.openPlugin.js.map +1 -1
  160. package/build/error/common.d.ts +9 -0
  161. package/build/error/common.d.ts.map +1 -1
  162. package/build/error/common.js +40 -1
  163. package/build/error/common.js.map +1 -1
  164. package/build/index.d.ts +2 -2
  165. package/build/index.d.ts.map +1 -1
  166. package/build/index.js +6 -5
  167. package/build/index.js.map +1 -1
  168. package/build/question/generator.d.ts.map +1 -1
  169. package/build/question/generator.js +9 -9
  170. package/build/question/generator.js.map +1 -1
  171. package/build/question/inputs/AddAuthActionInputs.d.ts +6 -0
  172. package/build/question/inputs/AddAuthActionInputs.d.ts.map +1 -1
  173. package/build/question/inputs/AddPluginInputs.d.ts +15 -1
  174. package/build/question/inputs/AddPluginInputs.d.ts.map +1 -1
  175. package/build/question/options/AddAuthActionOptions.d.ts.map +1 -1
  176. package/build/question/options/AddAuthActionOptions.js +19 -0
  177. package/build/question/options/AddAuthActionOptions.js.map +1 -1
  178. package/build/question/options/AddPluginOptions.d.ts.map +1 -1
  179. package/build/question/options/AddPluginOptions.js +45 -1
  180. package/build/question/options/AddPluginOptions.js.map +1 -1
  181. package/build/question/options/ExportOpenPluginOptions.js +2 -2
  182. package/build/question/options/ExportOpenPluginOptions.js.map +1 -1
  183. package/build/question/options/ImportOpenPluginOptions.js +4 -4
  184. package/build/question/options/ImportOpenPluginOptions.js.map +1 -1
  185. package/build/question/other.d.ts +2 -0
  186. package/build/question/other.d.ts.map +1 -1
  187. package/build/question/other.js +174 -8
  188. package/build/question/other.js.map +1 -1
  189. package/build/question/questionNames.d.ts +6 -0
  190. package/build/question/questionNames.d.ts.map +1 -1
  191. package/build/question/questionNames.js +6 -0
  192. package/build/question/questionNames.js.map +1 -1
  193. package/build/question/scaffold/vsc/CapabilityOptions.d.ts.map +1 -1
  194. package/build/question/scaffold/vsc/CapabilityOptions.js +5 -2
  195. package/build/question/scaffold/vsc/CapabilityOptions.js.map +1 -1
  196. package/build/question/scaffold/vsc/rootNode.js +1 -1
  197. package/build/question/scaffold/vsc/rootNode.js.map +1 -1
  198. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts +2 -0
  199. package/build/question/scaffold/vsc/teamsProjectTypeNode.d.ts.map +1 -1
  200. package/build/question/scaffold/vsc/teamsProjectTypeNode.js +31 -1
  201. package/build/question/scaffold/vsc/teamsProjectTypeNode.js.map +1 -1
  202. package/build/question/share.js +2 -2
  203. package/build/question/share.js.map +1 -1
  204. package/build/ui/visitor.d.ts.map +1 -1
  205. package/build/ui/visitor.js +1 -0
  206. package/build/ui/visitor.js.map +1 -1
  207. package/build/v4/collectInputs/collectInputs.d.ts.map +1 -1
  208. package/build/v4/collectInputs/collectInputs.js +91 -215
  209. package/build/v4/collectInputs/collectInputs.js.map +1 -1
  210. package/build/v4/distribution/declarativePackage.d.ts +2 -2
  211. package/build/v4/distribution/declarativePackage.d.ts.map +1 -1
  212. package/build/v4/distribution/declarativePackage.js +2 -1
  213. package/build/v4/distribution/declarativePackage.js.map +1 -1
  214. package/build/v4/distribution/descriptorLanguages.d.ts +9 -0
  215. package/build/v4/distribution/descriptorLanguages.d.ts.map +1 -0
  216. package/build/v4/distribution/descriptorLanguages.js +44 -0
  217. package/build/v4/distribution/descriptorLanguages.js.map +1 -0
  218. package/build/v4/distribution/packageDir.d.ts +6 -1
  219. package/build/v4/distribution/packageDir.d.ts.map +1 -1
  220. package/build/v4/distribution/packageDir.js +6 -1
  221. package/build/v4/distribution/packageDir.js.map +1 -1
  222. package/build/v4/engineVersion.d.ts +1 -1
  223. package/build/v4/engineVersion.js +1 -1
  224. package/build/v4/mcp/mcpAuthAction.d.ts +2 -1
  225. package/build/v4/mcp/mcpAuthAction.d.ts.map +1 -1
  226. package/build/v4/mcp/mcpAuthAction.js +32 -5
  227. package/build/v4/mcp/mcpAuthAction.js.map +1 -1
  228. package/build/v4/mcp/mcpAuthScaffold.d.ts +3 -0
  229. package/build/v4/mcp/mcpAuthScaffold.d.ts.map +1 -1
  230. package/build/v4/mcp/mcpAuthScaffold.js +63 -40
  231. package/build/v4/mcp/mcpAuthScaffold.js.map +1 -1
  232. package/build/v4/pipeline/defineStep.d.ts +10 -0
  233. package/build/v4/pipeline/defineStep.d.ts.map +1 -0
  234. package/build/v4/pipeline/defineStep.js +28 -0
  235. package/build/v4/pipeline/defineStep.js.map +1 -0
  236. package/build/v4/pipeline/runScaffoldPipeline.d.ts +2 -0
  237. package/build/v4/pipeline/runScaffoldPipeline.d.ts.map +1 -1
  238. package/build/v4/pipeline/runScaffoldPipeline.js +5 -4
  239. package/build/v4/pipeline/runScaffoldPipeline.js.map +1 -1
  240. package/build/v4/pipeline/stepParams.d.ts +4 -0
  241. package/build/v4/pipeline/stepParams.d.ts.map +1 -0
  242. package/build/v4/pipeline/stepParams.js +17 -0
  243. package/build/v4/pipeline/stepParams.js.map +1 -0
  244. package/build/v4/providers/createLanguageOptionsProvider.d.ts +13 -0
  245. package/build/v4/providers/createLanguageOptionsProvider.d.ts.map +1 -0
  246. package/build/v4/providers/createLanguageOptionsProvider.js +60 -0
  247. package/build/v4/providers/createLanguageOptionsProvider.js.map +1 -0
  248. package/build/v4/providers/createOptionsProviders.d.ts +2 -1
  249. package/build/v4/providers/createOptionsProviders.d.ts.map +1 -1
  250. package/build/v4/providers/createOptionsProviders.js +5 -1
  251. package/build/v4/providers/createOptionsProviders.js.map +1 -1
  252. package/build/v4/runtime/compatibility/index.d.ts +4 -0
  253. package/build/v4/runtime/compatibility/index.d.ts.map +1 -0
  254. package/build/v4/runtime/compatibility/index.js +11 -0
  255. package/build/v4/runtime/compatibility/index.js.map +1 -0
  256. package/build/v4/runtime/compatibility/legacyOpenApiSearch.d.ts +4 -0
  257. package/build/v4/runtime/compatibility/legacyOpenApiSearch.d.ts.map +1 -0
  258. package/build/v4/runtime/compatibility/legacyOpenApiSearch.js +26 -0
  259. package/build/v4/runtime/compatibility/legacyOpenApiSearch.js.map +1 -0
  260. package/build/v4/runtime/functions/assets/officeAddin.json +48 -0
  261. package/build/v4/runtime/functions/generic.d.ts +10 -0
  262. package/build/v4/runtime/functions/generic.d.ts.map +1 -0
  263. package/build/v4/runtime/functions/generic.js +25 -0
  264. package/build/v4/runtime/functions/generic.js.map +1 -0
  265. package/build/v4/runtime/functions/mcp.d.ts +8 -0
  266. package/build/v4/runtime/functions/mcp.d.ts.map +1 -0
  267. package/build/v4/runtime/functions/mcp.js +28 -0
  268. package/build/v4/runtime/functions/mcp.js.map +1 -0
  269. package/build/v4/runtime/functions/officeAddin.d.ts +27 -0
  270. package/build/v4/runtime/functions/officeAddin.d.ts.map +1 -0
  271. package/build/v4/runtime/functions/officeAddin.js +120 -0
  272. package/build/v4/runtime/functions/officeAddin.js.map +1 -0
  273. package/build/v4/runtime/packageParse.d.ts +13 -8
  274. package/build/v4/runtime/packageParse.d.ts.map +1 -1
  275. package/build/v4/runtime/packageParse.js +13 -219
  276. package/build/v4/runtime/packageParse.js.map +1 -1
  277. package/build/v4/runtime/renderFragment.d.ts +2 -0
  278. package/build/v4/runtime/renderFragment.d.ts.map +1 -0
  279. package/build/v4/runtime/renderFragment.js +11 -0
  280. package/build/v4/runtime/renderFragment.js.map +1 -0
  281. package/build/v4/runtime/scaffold.d.ts +2 -0
  282. package/build/v4/runtime/scaffold.d.ts.map +1 -1
  283. package/build/v4/runtime/scaffold.js +15 -12
  284. package/build/v4/runtime/scaffold.js.map +1 -1
  285. package/build/v4/runtime/scaffoldFromPackageDir.d.ts.map +1 -1
  286. package/build/v4/runtime/scaffoldFromPackageDir.js +1 -4
  287. package/build/v4/runtime/scaffoldFromPackageDir.js.map +1 -1
  288. package/build/v4/runtime/selectLanguageContent.d.ts +1 -0
  289. package/build/v4/runtime/selectLanguageContent.d.ts.map +1 -1
  290. package/build/v4/runtime/selectLanguageContent.js +5 -1
  291. package/build/v4/runtime/selectLanguageContent.js.map +1 -1
  292. package/build/v4/runtime/steps/assets/metaOs.json +197 -0
  293. package/build/v4/runtime/steps/assets/openApiAuth.json +33 -0
  294. package/build/v4/runtime/steps/assets/openApiCustomApi.json +141 -0
  295. package/build/v4/runtime/steps/daAction.d.ts.map +1 -1
  296. package/build/v4/runtime/steps/daAction.js +14 -18
  297. package/build/v4/runtime/steps/daAction.js.map +1 -1
  298. package/build/v4/runtime/steps/daSensitivity.d.ts.map +1 -1
  299. package/build/v4/runtime/steps/daSensitivity.js +10 -11
  300. package/build/v4/runtime/steps/daSensitivity.js.map +1 -1
  301. package/build/v4/runtime/steps/mcpAuth.d.ts.map +1 -1
  302. package/build/v4/runtime/steps/mcpAuth.js +40 -48
  303. package/build/v4/runtime/steps/mcpAuth.js.map +1 -1
  304. package/build/v4/runtime/steps/mcpLocal.d.ts.map +1 -1
  305. package/build/v4/runtime/steps/mcpLocal.js +17 -30
  306. package/build/v4/runtime/steps/mcpLocal.js.map +1 -1
  307. package/build/v4/runtime/steps/mcpStatic.d.ts.map +1 -1
  308. package/build/v4/runtime/steps/mcpStatic.js +31 -38
  309. package/build/v4/runtime/steps/mcpStatic.js.map +1 -1
  310. package/build/v4/runtime/steps/metaOs.d.ts.map +1 -1
  311. package/build/v4/runtime/steps/metaOs.js +43 -167
  312. package/build/v4/runtime/steps/metaOs.js.map +1 -1
  313. package/build/v4/runtime/steps/officeAddin.d.ts.map +1 -1
  314. package/build/v4/runtime/steps/officeAddin.js +14 -19
  315. package/build/v4/runtime/steps/officeAddin.js.map +1 -1
  316. package/build/v4/runtime/steps/openApi.d.ts.map +1 -1
  317. package/build/v4/runtime/steps/openApi.js +41 -101
  318. package/build/v4/runtime/steps/openApi.js.map +1 -1
  319. package/build/v4/runtime/steps/openApiAuth.d.ts +9 -0
  320. package/build/v4/runtime/steps/openApiAuth.d.ts.map +1 -0
  321. package/build/v4/runtime/steps/openApiAuth.js +51 -0
  322. package/build/v4/runtime/steps/openApiAuth.js.map +1 -0
  323. package/build/v4/runtime/steps/openApiCustomApi.d.ts.map +1 -1
  324. package/build/v4/runtime/steps/openApiCustomApi.js +9 -119
  325. package/build/v4/runtime/steps/openApiCustomApi.js.map +1 -1
  326. package/build/v4/runtime/whitelist.d.ts +4 -38
  327. package/build/v4/runtime/whitelist.d.ts.map +1 -1
  328. package/build/v4/runtime/whitelist.js +30 -190
  329. package/build/v4/runtime/whitelist.js.map +1 -1
  330. package/build/v4/surface/createFloorTail.d.ts +2 -2
  331. package/build/v4/surface/createFloorTail.d.ts.map +1 -1
  332. package/build/v4/surface/createFloorTail.js +5 -22
  333. package/build/v4/surface/createFloorTail.js.map +1 -1
  334. package/build/v4/surface/createInputs.d.ts +2 -2
  335. package/build/v4/surface/createInputs.d.ts.map +1 -1
  336. package/build/v4/surface/createInputs.js +11 -44
  337. package/build/v4/surface/createInputs.js.map +1 -1
  338. package/build/v4/surface/createSelectorWalk.d.ts.map +1 -1
  339. package/build/v4/surface/createSelectorWalk.js +17 -3
  340. package/build/v4/surface/createSelectorWalk.js.map +1 -1
  341. package/build/v4/surface/localizePrompt.d.ts +2 -0
  342. package/build/v4/surface/localizePrompt.d.ts.map +1 -1
  343. package/build/v4/surface/localizePrompt.js +0 -1
  344. package/build/v4/surface/localizePrompt.js.map +1 -1
  345. package/build/v4/validation/capabilityCatalog.d.ts +1 -1
  346. package/build/v4/validation/capabilityCatalog.d.ts.map +1 -1
  347. package/build/v4/validation/capabilityCatalog.js +11 -1
  348. package/build/v4/validation/capabilityCatalog.js.map +1 -1
  349. package/build/v4/validation/packageParse.d.ts +27 -0
  350. package/build/v4/validation/packageParse.d.ts.map +1 -0
  351. package/build/v4/validation/packageParse.js +247 -0
  352. package/build/v4/validation/packageParse.js.map +1 -0
  353. package/build/v4/validation/templateArchiveValidation.d.ts +2 -2
  354. package/build/v4/validation/templateArchiveValidation.d.ts.map +1 -1
  355. package/build/v4/validation/templateArchiveValidation.js +7 -2
  356. package/build/v4/validation/templateArchiveValidation.js.map +1 -1
  357. package/build/v4/validation/validateTemplatePackage.d.ts +1 -1
  358. package/build/v4/validation/validateTemplatePackage.d.ts.map +1 -1
  359. package/build/v4/validation/validateTemplatePackage.js +23 -3
  360. package/build/v4/validation/validateTemplatePackage.js.map +1 -1
  361. package/package.json +37 -37
  362. package/resource/package.nls.json +35 -1
  363. package/templates/configs/local/typescript/.gitignore +1 -0
  364. package/templates/configs/playground/typescript/.gitignore +4 -0
  365. package/templates/fallback/common.zip +0 -0
  366. package/templates/fallback/csharp.zip +0 -0
  367. package/templates/fallback/js.zip +0 -0
  368. package/templates/fallback/python.zip +0 -0
  369. package/templates/fallback/ts.zip +0 -0
  370. package/templates/metadata.zip +0 -0
  371. package/templates/ui/tdpNode.json +1 -1
  372. package/templates/ui/wizardNode.json +1 -1
  373. package/templates/v4/create-selector.json +2 -2
  374. package/templates/v4/floor.json +1 -1
  375. package/templates/v4/templates-metadata.zip +0 -0
  376. package/templates/v4/templates.zip +0 -0
@@ -0,0 +1,43 @@
1
+ import { AsyncAppValidationDetailsResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationDetailsResponse";
2
+ import { AsyncAppValidationResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationResponse";
3
+ import { AsyncAppValidationResultsResponse } from "../component/driver/teamsApp/interfaces/AsyncAppValidationResultsResponse";
4
+ import { IValidationResult } from "../component/driver/teamsApp/interfaces/appdefinitions/IValidationResult";
5
+ import { AppDefinition } from "../component/driver/teamsApp/interfaces/appdefinitions/appDefinition";
6
+ import { AppUser } from "../component/driver/teamsApp/interfaces/appdefinitions/appUser";
7
+ import { IBotRegistration } from "../component/resource/botService/appStudio/interfaces/IBotRegistration";
8
+ import { TeamsDevPortalClient } from "./teamsDevPortalClient";
9
+ export declare class DevPortalClient extends TeamsDevPortalClient {
10
+ private readonly appEtags;
11
+ setRegionEndpointByToken(authSvcToken: string): Promise<void>;
12
+ createApp(token: string, name: string): Promise<AppDefinition>;
13
+ updateApp(token: string, appId: string, file: Buffer): Promise<AppDefinition>;
14
+ listApps(token: string): Promise<AppDefinition[]>;
15
+ deleteApp(token: string, appId: string): Promise<boolean>;
16
+ getApp(token: string, appId: string): Promise<AppDefinition>;
17
+ getAppPackage(token: string, appId: string): Promise<any>;
18
+ checkExistsInTenant(token: string, appId: string): Promise<boolean>;
19
+ removePermission(token: string, appId: string, userToRemove: AppUser): Promise<void>;
20
+ grantPermission(token: string, appId: string, newUser: AppUser): Promise<void>;
21
+ partnerCenterAppPackageValidation(token: string, file: Buffer, signal?: AbortSignal): Promise<IValidationResult>;
22
+ submitAppValidationRequest(token: string, appId: string): Promise<AsyncAppValidationResponse>;
23
+ getAppValidationRequestList(token: string, appId: string): Promise<AsyncAppValidationDetailsResponse>;
24
+ private getAppValidationRequests;
25
+ private submitAppValidation;
26
+ getAppValidationById(token: string, appValidationId: string): Promise<AsyncAppValidationResultsResponse>;
27
+ getBotRegistration(token: string, botId: string): Promise<IBotRegistration | undefined>;
28
+ listBots(token: string): Promise<IBotRegistration[] | undefined>;
29
+ deleteBot(token: string, botId: string): Promise<void>;
30
+ createBotRegistration(token: string, registration: IBotRegistration, checkExistence?: boolean): Promise<void>;
31
+ updateBotRegistration(token: string, botReg: IBotRegistration): Promise<void>;
32
+ private resolveRegionEndpoint;
33
+ private createAppPackageForm;
34
+ private getAppResponse;
35
+ private resolveLegacyAppId;
36
+ private updateOwners;
37
+ private getBotRegistrationAtPath;
38
+ private getAppUsers;
39
+ private toAppUserPayload;
40
+ private toAppDefinition;
41
+ }
42
+ export declare const devPortalClient: DevPortalClient;
43
+ //# sourceMappingURL=devPortalClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devPortalClient.d.ts","sourceRoot":"","sources":["../../src/client/devPortalClient.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,iCAAiC,EAAE,MAAM,2EAA2E,CAAC;AAC9H,OAAO,EAAE,0BAA0B,EAAE,MAAM,oEAAoE,CAAC;AAChH,OAAO,EAAE,iCAAiC,EAAE,MAAM,2EAA2E,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,0EAA0E,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,MAAM,sEAAsE,CAAC;AACrG,OAAO,EAAE,OAAO,EAAE,MAAM,gEAAgE,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wEAAwE,CAAC;AAK1G,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AA4B9D,qBAAa,eAAgB,SAAQ,oBAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IAEvC,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA2B9D,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAmBpE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAmCjD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0BzD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoC5D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAiCzD,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUnE,gBAAgB,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IAUD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW9E,iCAAiC,CAC9C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAqBd,0BAA0B,CACvC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,0BAA0B,CAAC;IAmBvB,2BAA2B,CACxC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iCAAiC,CAAC;YAgB/B,wBAAwB;YAiCxB,mBAAmB;IAkBlB,oBAAoB,CACjC,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,iCAAiC,CAAC;IAa9B,kBAAkB,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAKzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,GAAG,SAAS,CAAC;IAiBhE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtD,qBAAqB,CAClC,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,gBAAgB,EAC9B,cAAc,UAAO,GACpB,OAAO,CAAC,IAAI,CAAC;IAsBD,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5F,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,oBAAoB;YASd,cAAc;YAQd,kBAAkB;YAKlB,YAAY;YA+BZ,wBAAwB;IAmBtC,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,eAAe;CA0DxB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,626 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT license.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.devPortalClient = exports.DevPortalClient = void 0;
6
+ const tslib_1 = require("tslib");
7
+ const hooks_1 = require("@feathersjs/hooks");
8
+ const form_data_1 = tslib_1.__importDefault(require("form-data"));
9
+ const constants_1 = require("../common/constants");
10
+ const globalVars_1 = require("../common/globalVars");
11
+ const localizeUtils_1 = require("../common/localizeUtils");
12
+ const retryHandler_1 = require("../common/retryHandler");
13
+ const wrappedAxiosClient_1 = require("../common/wrappedAxiosClient");
14
+ const commonConstant_1 = require("../component/constant/commonConstant");
15
+ const constants_2 = require("../component/driver/teamsApp/constants");
16
+ const common_1 = require("../component/resource/botService/common");
17
+ const errors_1 = require("../component/resource/botService/errors");
18
+ const messages_1 = require("../component/resource/botService/messages");
19
+ const strings_1 = require("../component/resource/botService/strings");
20
+ const teamsDevPortalClient_1 = require("./teamsDevPortalClient");
21
+ const newDeveloperPortalEndpoints = {
22
+ apac: "https://dev.teams.microsoft.com/cosmicprodapac",
23
+ amer: "https://dev.teams.microsoft.com/cosmicprodamer",
24
+ emea: "https://dev.teams.microsoft.com/cosmicprodemea",
25
+ };
26
+ class DevPortalClient extends teamsDevPortalClient_1.TeamsDevPortalClient {
27
+ appEtags = new Map();
28
+ async setRegionEndpointByToken(authSvcToken) {
29
+ if ((0, constants_1.getResourceServiceEndpoint)(constants_1.ResourceServiceType.TDP) === "https://dev-int.teams.microsoft.com") {
30
+ return;
31
+ }
32
+ const requester = wrappedAxiosClient_1.WrappedAxiosClient.create({
33
+ baseURL: (0, constants_1.getResourceServiceEndpoint)(constants_1.ResourceServiceType.AuthSvc),
34
+ });
35
+ requester.defaults.headers.common["Authorization"] = `Bearer ${authSvcToken}`;
36
+ requester.defaults.headers.common["Client-Source"] = "teamstoolkit";
37
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/users/region"));
38
+ const regionGtms = response?.data?.regionGtms;
39
+ this.regionEndpoint = this.resolveRegionEndpoint(regionGtms?.teamsDeveloperPortal, regionGtms?.teamsDevPortal);
40
+ }
41
+ async createApp(token, name) {
42
+ const requester = this.createRequesterWithToken(token);
43
+ try {
44
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/apps", {
45
+ appDetails: {
46
+ applicationManifest: {
47
+ manifestVersion: "1.15",
48
+ name: { short: name },
49
+ icons: {
50
+ color: "default-app-icons/images/color.png",
51
+ outline: "default-app-icons/images/outline.png",
52
+ },
53
+ },
54
+ },
55
+ }));
56
+ if (!response?.data) {
57
+ throw new Error("Cannot create Teams app");
58
+ }
59
+ return this.toAppDefinition(response.data);
60
+ }
61
+ catch (error) {
62
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.CREATE_APP);
63
+ }
64
+ }
65
+ async updateApp(token, appId, file) {
66
+ try {
67
+ const requester = this.createRequesterWithToken(token);
68
+ const response = await retryHandler_1.RetryHandler.Retry(() => {
69
+ const content = this.createAppPackageForm(file);
70
+ return requester.put(`/v1.0/apps/${appId}/apppackage`, content, {
71
+ headers: content.getHeaders(),
72
+ });
73
+ });
74
+ if (!response?.data) {
75
+ throw new Error(`Cannot update the app with app ID ${appId}`);
76
+ }
77
+ return this.toAppDefinition(response.data);
78
+ }
79
+ catch (error) {
80
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_APP);
81
+ }
82
+ }
83
+ async listApps(token) {
84
+ try {
85
+ const requester = this.createRequesterWithToken(token);
86
+ globalVars_1.TOOLS.logProvider.debug(`Sent API Request: GET ${this.getEndpoint()}/v1.0/apps`);
87
+ const apps = [];
88
+ let continuationToken;
89
+ do {
90
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get("/v1.0/apps", {
91
+ params: { pageSize: 100 },
92
+ headers: continuationToken ? { "x-ms-continuation": continuationToken } : undefined,
93
+ }));
94
+ const page = response?.data;
95
+ if (!page?.items) {
96
+ throw new Error("Cannot get the app definitions");
97
+ }
98
+ apps.push(...page.items.map((app) => ({
99
+ teamsAppId: app.appExternalId ?? app.appId,
100
+ appId: app.appId,
101
+ appName: app.appName,
102
+ version: app.appVersion,
103
+ updatedAt: app.updatedAt,
104
+ })));
105
+ continuationToken = page.continuationToken;
106
+ } while (continuationToken);
107
+ return apps;
108
+ }
109
+ catch (error) {
110
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.LIST_APPS);
111
+ }
112
+ }
113
+ async deleteApp(token, appId) {
114
+ try {
115
+ const requester = this.createRequesterWithToken(token);
116
+ globalVars_1.TOOLS.logProvider.debug(`Sent API Request: DELETE ${this.getEndpoint()}/v1.0/apps/${appId}`);
117
+ let response;
118
+ try {
119
+ response = await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/apps/${appId}`));
120
+ }
121
+ catch (error) {
122
+ if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
123
+ throw error;
124
+ const resolvedAppId = await this.resolveLegacyAppId(token, appId);
125
+ if (resolvedAppId === appId)
126
+ throw error;
127
+ response = await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/apps/${resolvedAppId}`));
128
+ }
129
+ if (response?.status === 204) {
130
+ return true;
131
+ }
132
+ }
133
+ catch (error) {
134
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.DELETE_APP);
135
+ }
136
+ throw this.wrapException(new Error("cannot delete the app: " + appId), constants_2.APP_STUDIO_API_NAMES.DELETE_APP);
137
+ }
138
+ async getApp(token, appId) {
139
+ try {
140
+ let response;
141
+ try {
142
+ response = await this.getAppResponse(token, appId);
143
+ }
144
+ catch (error) {
145
+ if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND) {
146
+ throw error;
147
+ }
148
+ const resolvedAppId = await this.resolveLegacyAppId(token, appId);
149
+ if (resolvedAppId === appId) {
150
+ throw error;
151
+ }
152
+ response = await this.getAppResponse(token, resolvedAppId);
153
+ }
154
+ if (response.data) {
155
+ const etag = response.headers?.etag;
156
+ if (etag) {
157
+ this.appEtags.set(appId, etag);
158
+ }
159
+ const app = this.toAppDefinition(response.data);
160
+ if (app.appId === appId || app.teamsAppId === appId) {
161
+ return app;
162
+ }
163
+ globalVars_1.TOOLS.logProvider?.error(`appId mismatch. Input: ${appId}. Got: ${app.appId}`);
164
+ }
165
+ }
166
+ catch (error) {
167
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP);
168
+ }
169
+ throw this.wrapException(new Error(`cannot get the app definition with app ID ${appId}`), constants_2.APP_STUDIO_API_NAMES.GET_APP);
170
+ }
171
+ async getAppPackage(token, appId) {
172
+ globalVars_1.TOOLS.logProvider?.info("Downloading app package for app " + appId);
173
+ const requester = this.createRequesterWithToken(token);
174
+ try {
175
+ let response;
176
+ try {
177
+ response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${appId}/appPackage`, { responseType: "arraybuffer" }));
178
+ }
179
+ catch (error) {
180
+ if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
181
+ throw error;
182
+ const resolvedAppId = await this.resolveLegacyAppId(token, appId);
183
+ if (resolvedAppId === appId)
184
+ throw error;
185
+ response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${resolvedAppId}/appPackage`, {
186
+ responseType: "arraybuffer",
187
+ }));
188
+ }
189
+ if (response?.data) {
190
+ globalVars_1.TOOLS.logProvider?.info("Download app package successfully");
191
+ return response.data;
192
+ }
193
+ throw this.wrapException(new Error((0, localizeUtils_1.getLocalizedString)("plugins.appstudio.emptyAppPackage", appId)), constants_2.APP_STUDIO_API_NAMES.GET_APP_PACKAGE);
194
+ }
195
+ catch (error) {
196
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_PACKAGE);
197
+ }
198
+ }
199
+ async checkExistsInTenant(token, appId) {
200
+ try {
201
+ const response = await this.getAppResponse(token, appId);
202
+ return response.data !== false;
203
+ }
204
+ catch (error) {
205
+ return false;
206
+ }
207
+ }
208
+ async removePermission(token, appId, userToRemove) {
209
+ const app = await this.getApp(token, appId);
210
+ if (!this.checkUser(app, userToRemove))
211
+ return;
212
+ const updatedUsers = (app.userList ?? [])
213
+ .map((user) => this.toAppUserPayload(user))
214
+ .filter((user) => user.aadId !== userToRemove.aadId);
215
+ await this.updateOwners(token, app.appId ?? appId, appId, updatedUsers);
216
+ }
217
+ async grantPermission(token, appId, newUser) {
218
+ const app = await this.getApp(token, appId);
219
+ if (this.checkUser(app, newUser))
220
+ return;
221
+ const updatedUsers = [
222
+ ...(app.userList ?? []).map((user) => this.toAppUserPayload(user)),
223
+ this.toAppUserPayload(newUser),
224
+ ];
225
+ await this.updateOwners(token, app.appId ?? appId, appId, updatedUsers);
226
+ }
227
+ async partnerCenterAppPackageValidation(token, file, signal) {
228
+ const requester = this.createRequesterWithToken(token);
229
+ try {
230
+ const response = await retryHandler_1.RetryHandler.Retry(() => {
231
+ const content = new form_data_1.default();
232
+ content.append("appPackage", file, {
233
+ filename: "appPackage.zip",
234
+ contentType: "application/zip",
235
+ });
236
+ return requester.post("/v1.0/appvalidation/apppackage/validate", content, {
237
+ headers: content.getHeaders(),
238
+ signal,
239
+ });
240
+ });
241
+ return response?.data;
242
+ }
243
+ catch (error) {
244
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.VALIDATE_APP_PACKAGE);
245
+ }
246
+ }
247
+ async submitAppValidationRequest(token, appId) {
248
+ try {
249
+ const requester = this.createRequesterWithToken(token);
250
+ let response;
251
+ try {
252
+ response = await this.submitAppValidation(requester, appId);
253
+ }
254
+ catch (error) {
255
+ if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
256
+ throw error;
257
+ const resolvedAppId = await this.resolveLegacyAppId(token, appId);
258
+ if (resolvedAppId === appId)
259
+ throw error;
260
+ response = await this.submitAppValidation(requester, resolvedAppId);
261
+ }
262
+ return response.data;
263
+ }
264
+ catch (error) {
265
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.SUBMIT_APP_VALIDATION);
266
+ }
267
+ }
268
+ async getAppValidationRequestList(token, appId) {
269
+ try {
270
+ const requester = this.createRequesterWithToken(token);
271
+ try {
272
+ return await this.getAppValidationRequests(requester, appId);
273
+ }
274
+ catch (error) {
275
+ if (error?.response?.status !== commonConstant_1.HttpStatusCode.NOTFOUND)
276
+ throw error;
277
+ const resolvedAppId = await this.resolveLegacyAppId(token, appId);
278
+ if (resolvedAppId === appId)
279
+ throw error;
280
+ return await this.getAppValidationRequests(requester, resolvedAppId);
281
+ }
282
+ }
283
+ catch (error) {
284
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_VALIDATION_REQUESTS);
285
+ }
286
+ }
287
+ async getAppValidationRequests(requester, appId) {
288
+ const items = [];
289
+ let continuationToken;
290
+ do {
291
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/appValidations/apps/${appId}`, {
292
+ params: { pageSize: 100 },
293
+ headers: continuationToken ? { "x-ms-continuation": continuationToken } : undefined,
294
+ }));
295
+ const page = response?.data;
296
+ if (!page?.items)
297
+ throw new Error("Cannot get app validation requests");
298
+ items.push(...page.items);
299
+ continuationToken =
300
+ page.continuationToken ??
301
+ response?.headers?.["x-continuation-token"];
302
+ } while (continuationToken);
303
+ return {
304
+ appValidations: items.map((item) => ({
305
+ id: item.appValidationId,
306
+ appId: item.appId,
307
+ appVersion: item.appVersion,
308
+ manifestVersion: item.manifestVersion,
309
+ status: item.status,
310
+ createdAt: item.submittedDate,
311
+ updatedAt: item.completedDate,
312
+ })),
313
+ };
314
+ }
315
+ async submitAppValidation(requester, appId) {
316
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/appvalidation/validate", {
317
+ appId,
318
+ appEnvironmentId: null,
319
+ testSuites: null,
320
+ }));
321
+ if (!response) {
322
+ throw new Error("App validation request returned no response.");
323
+ }
324
+ return response;
325
+ }
326
+ async getAppValidationById(token, appValidationId) {
327
+ try {
328
+ const requester = this.createRequesterWithToken(token);
329
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/appValidations/${appValidationId}`));
330
+ return response?.data;
331
+ }
332
+ catch (error) {
333
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.GET_APP_VALIDATION_RESULT);
334
+ }
335
+ }
336
+ async getBotRegistration(token, botId) {
337
+ return this.getBotRegistrationAtPath(token, `/v1.0/botregistrations/${botId}`);
338
+ }
339
+ async listBots(token) {
340
+ const requester = this.createRequesterWithToken(token);
341
+ try {
342
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get("/v1.0/botregistrations"));
343
+ if ((0, common_1.isHappyResponse)(response))
344
+ return response.data;
345
+ throw this.wrapException(this.wrapResponse(undefined, response), constants_2.APP_STUDIO_API_NAMES.LIST_BOT, (0, localizeUtils_1.getDefaultString)("error.appstudio.apiFailed.name.common"), "Failed to get data");
346
+ }
347
+ catch (error) {
348
+ this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.LIST_BOT);
349
+ }
350
+ }
351
+ async deleteBot(token, botId) {
352
+ try {
353
+ const requester = this.createRequesterWithToken(token);
354
+ await retryHandler_1.RetryHandler.Retry(() => requester.delete(`/v1.0/botregistrations/${botId}`));
355
+ }
356
+ catch (error) {
357
+ this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.DELETE_BOT);
358
+ }
359
+ }
360
+ async createBotRegistration(token, registration, checkExistence = true) {
361
+ if (registration.botId && checkExistence) {
362
+ const botRegistration = await this.getBotRegistration(token, registration.botId);
363
+ if (botRegistration) {
364
+ globalVars_1.TOOLS.logProvider.info(messages_1.Messages.BotResourceExist("Appstudio"));
365
+ return;
366
+ }
367
+ }
368
+ try {
369
+ const requester = this.createRequesterWithToken(token);
370
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.post("/v1.0/botregistrations", registration));
371
+ if (!(0, common_1.isHappyResponse)(response)) {
372
+ throw new errors_1.ProvisionError(strings_1.CommonStrings.APP_STUDIO_BOT_REGISTRATION);
373
+ }
374
+ }
375
+ catch (error) {
376
+ this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.CREATE_BOT);
377
+ }
378
+ }
379
+ async updateBotRegistration(token, botReg) {
380
+ try {
381
+ const requester = this.createRequesterWithToken(token);
382
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.put(`/v1.0/botregistrations/${botReg.botId}`, botReg));
383
+ if (!(0, common_1.isHappyResponse)(response)) {
384
+ throw new errors_1.ConfigUpdatingError(strings_1.ConfigNames.MESSAGE_ENDPOINT);
385
+ }
386
+ }
387
+ catch (error) {
388
+ this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_BOT);
389
+ }
390
+ }
391
+ resolveRegionEndpoint(teamsDeveloperPortal, teamsDevPortal) {
392
+ if (teamsDeveloperPortal?.startsWith("https://"))
393
+ return teamsDeveloperPortal;
394
+ const oldEndpointRegion = Object.keys(newDeveloperPortalEndpoints).find((region) => teamsDevPortal?.match(new RegExp(`/${region}(?:/api)?/?$`, "i")));
395
+ return newDeveloperPortalEndpoints[oldEndpointRegion ?? "amer"];
396
+ }
397
+ createAppPackageForm(file) {
398
+ const content = new form_data_1.default();
399
+ content.append("AppPackageZip", file, {
400
+ filename: "appPackage.zip",
401
+ contentType: "application/zip",
402
+ });
403
+ return content;
404
+ }
405
+ async getAppResponse(token, appId) {
406
+ const requester = this.createRequesterWithToken(token);
407
+ globalVars_1.TOOLS.logProvider.debug(`Sent API Request: GET ${this.getEndpoint()}/v1.0/apps/${appId}`);
408
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(`/v1.0/apps/${appId}`));
409
+ if (!response)
410
+ throw new Error(`Cannot get the app with app ID ${appId}`);
411
+ return response;
412
+ }
413
+ async resolveLegacyAppId(token, appId) {
414
+ const app = (await this.listApps(token)).find((item) => item.teamsAppId === appId);
415
+ return app?.appId ?? appId;
416
+ }
417
+ async updateOwners(token, resolvedAppId, requestedAppId, appUsers) {
418
+ try {
419
+ globalVars_1.TOOLS.logProvider.debug((0, localizeUtils_1.getLocalizedString)("core.common.SendingApiRequest", `${this.getEndpoint()}/v1.0/apps/{appId}/owners`, JSON.stringify({ appUsers })));
420
+ const requester = this.createRequesterWithToken(token);
421
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.post(`/v1.0/apps/${resolvedAppId}/owners`, { appUsers }, { headers: { "If-Match": this.appEtags.get(requestedAppId) ?? "*" } }));
422
+ globalVars_1.TOOLS.logProvider.debug((0, localizeUtils_1.getLocalizedString)("core.common.ReceiveApiResponse", JSON.stringify(response?.data)));
423
+ if (!response)
424
+ throw new Error(constants_2.ErrorMessages.GrantPermissionFailed);
425
+ }
426
+ catch (error) {
427
+ throw this.wrapException(error, constants_2.APP_STUDIO_API_NAMES.UPDATE_OWNER);
428
+ }
429
+ }
430
+ async getBotRegistrationAtPath(token, path) {
431
+ const requester = this.createRequesterWithToken(token);
432
+ try {
433
+ const response = await retryHandler_1.RetryHandler.Retry(() => requester.get(path));
434
+ if ((0, common_1.isHappyResponse)(response))
435
+ return response.data;
436
+ throw this.wrapException(this.wrapResponse(undefined, response), constants_2.APP_STUDIO_API_NAMES.GET_BOT, (0, localizeUtils_1.getDefaultString)("error.appstudio.apiFailed.name.common"), "Failed to get data");
437
+ }
438
+ catch (error) {
439
+ this.handleBotFrameworkError(error, constants_2.APP_STUDIO_API_NAMES.GET_BOT);
440
+ }
441
+ }
442
+ getAppUsers(app) {
443
+ const accessControl = app.appProfile?.appAccessControl;
444
+ if (Array.isArray(accessControl))
445
+ return accessControl;
446
+ return accessControl?.appUsers ?? accessControl?.users ?? [];
447
+ }
448
+ toAppUserPayload(user) {
449
+ return {
450
+ aadId: user.aadId,
451
+ tenantId: user.tenantId,
452
+ role: user.isAdministrator ? "Owner" : "Member",
453
+ };
454
+ }
455
+ toAppDefinition(app) {
456
+ if (app.teamsAppId)
457
+ return app;
458
+ const metadata = app.appProfile?.appMetadata ?? {};
459
+ const manifest = app.appProfile?.appDetails?.applicationManifest ?? {};
460
+ const appUsers = this.getAppUsers(app);
461
+ const owner = appUsers.find((user) => user.aadId === metadata.ownerAadId) ?? appUsers[0];
462
+ return {
463
+ teamsAppId: manifest.id ?? app.appId,
464
+ appId: app.appId,
465
+ tenantId: owner?.tenantId,
466
+ ownerAadId: metadata.ownerAadId,
467
+ userList: appUsers.map((user) => ({
468
+ aadId: user.aadId,
469
+ tenantId: user.tenantId,
470
+ role: user.role,
471
+ displayName: "",
472
+ userPrincipalName: "",
473
+ isAdministrator: user.role === "Owner",
474
+ })),
475
+ createdAt: metadata.createdAt,
476
+ updatedAt: metadata.updatedAt,
477
+ appName: manifest.name?.short,
478
+ version: manifest.version,
479
+ manifestVersion: manifest.manifestVersion,
480
+ packageName: manifest.packageName,
481
+ shortName: manifest.name?.short,
482
+ longName: manifest.name?.full,
483
+ developerName: manifest.developer?.name,
484
+ websiteUrl: manifest.developer?.websiteUrl,
485
+ privacyUrl: manifest.developer?.privacyUrl,
486
+ termsOfUseUrl: manifest.developer?.termsOfUseUrl,
487
+ mpnId: manifest.developer?.mpnId,
488
+ shortDescription: manifest.description?.short,
489
+ longDescription: manifest.description?.full,
490
+ colorIcon: manifest.icons?.color,
491
+ outlineIcon: manifest.icons?.outline,
492
+ accentColor: manifest.accentColor,
493
+ configurableTabs: manifest.configurableTabs,
494
+ staticTabs: manifest.staticTabs,
495
+ bots: manifest.bots,
496
+ connectors: manifest.connectors,
497
+ messagingExtensions: manifest.composeExtensions,
498
+ validDomains: manifest.validDomains,
499
+ webApplicationInfoId: manifest.webApplicationInfo?.id,
500
+ webApplicationInfoResource: manifest.webApplicationInfo?.resource,
501
+ devicePermissions: manifest.devicePermissions,
502
+ showLoadingIndicator: manifest.showLoadingIndicator,
503
+ isFullScreen: manifest.isFullScreen,
504
+ defaultInstallScope: manifest.defaultInstallScope,
505
+ defaultGroupCapability: manifest.defaultGroupCapability,
506
+ configurableProperties: manifest.configurableProperties,
507
+ meetingExtensionDefinition: manifest.meetingExtensionDefinition,
508
+ activities: manifest.activities,
509
+ authorization: manifest.authorization,
510
+ localizationInfo: manifest.localizationInfo,
511
+ supportsChannelFeatures: manifest.supportsChannelFeatures,
512
+ };
513
+ }
514
+ }
515
+ exports.DevPortalClient = DevPortalClient;
516
+ tslib_1.__decorate([
517
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
518
+ tslib_1.__metadata("design:type", Function),
519
+ tslib_1.__metadata("design:paramtypes", [String, String]),
520
+ tslib_1.__metadata("design:returntype", Promise)
521
+ ], DevPortalClient.prototype, "createApp", null);
522
+ tslib_1.__decorate([
523
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
524
+ tslib_1.__metadata("design:type", Function),
525
+ tslib_1.__metadata("design:paramtypes", [String, String, Buffer]),
526
+ tslib_1.__metadata("design:returntype", Promise)
527
+ ], DevPortalClient.prototype, "updateApp", null);
528
+ tslib_1.__decorate([
529
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
530
+ tslib_1.__metadata("design:type", Function),
531
+ tslib_1.__metadata("design:paramtypes", [String]),
532
+ tslib_1.__metadata("design:returntype", Promise)
533
+ ], DevPortalClient.prototype, "listApps", null);
534
+ tslib_1.__decorate([
535
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
536
+ tslib_1.__metadata("design:type", Function),
537
+ tslib_1.__metadata("design:paramtypes", [String, String]),
538
+ tslib_1.__metadata("design:returntype", Promise)
539
+ ], DevPortalClient.prototype, "deleteApp", null);
540
+ tslib_1.__decorate([
541
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
542
+ tslib_1.__metadata("design:type", Function),
543
+ tslib_1.__metadata("design:paramtypes", [String, String]),
544
+ tslib_1.__metadata("design:returntype", Promise)
545
+ ], DevPortalClient.prototype, "getApp", null);
546
+ tslib_1.__decorate([
547
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
548
+ tslib_1.__metadata("design:type", Function),
549
+ tslib_1.__metadata("design:paramtypes", [String, String]),
550
+ tslib_1.__metadata("design:returntype", Promise)
551
+ ], DevPortalClient.prototype, "getAppPackage", null);
552
+ tslib_1.__decorate([
553
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
554
+ tslib_1.__metadata("design:type", Function),
555
+ tslib_1.__metadata("design:paramtypes", [String, String]),
556
+ tslib_1.__metadata("design:returntype", Promise)
557
+ ], DevPortalClient.prototype, "checkExistsInTenant", null);
558
+ tslib_1.__decorate([
559
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
560
+ tslib_1.__metadata("design:type", Function),
561
+ tslib_1.__metadata("design:paramtypes", [String, String, Object]),
562
+ tslib_1.__metadata("design:returntype", Promise)
563
+ ], DevPortalClient.prototype, "removePermission", null);
564
+ tslib_1.__decorate([
565
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
566
+ tslib_1.__metadata("design:type", Function),
567
+ tslib_1.__metadata("design:paramtypes", [String, String, Object]),
568
+ tslib_1.__metadata("design:returntype", Promise)
569
+ ], DevPortalClient.prototype, "grantPermission", null);
570
+ tslib_1.__decorate([
571
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
572
+ tslib_1.__metadata("design:type", Function),
573
+ tslib_1.__metadata("design:paramtypes", [String, Buffer,
574
+ AbortSignal]),
575
+ tslib_1.__metadata("design:returntype", Promise)
576
+ ], DevPortalClient.prototype, "partnerCenterAppPackageValidation", null);
577
+ tslib_1.__decorate([
578
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
579
+ tslib_1.__metadata("design:type", Function),
580
+ tslib_1.__metadata("design:paramtypes", [String, String]),
581
+ tslib_1.__metadata("design:returntype", Promise)
582
+ ], DevPortalClient.prototype, "submitAppValidationRequest", null);
583
+ tslib_1.__decorate([
584
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
585
+ tslib_1.__metadata("design:type", Function),
586
+ tslib_1.__metadata("design:paramtypes", [String, String]),
587
+ tslib_1.__metadata("design:returntype", Promise)
588
+ ], DevPortalClient.prototype, "getAppValidationRequestList", null);
589
+ tslib_1.__decorate([
590
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
591
+ tslib_1.__metadata("design:type", Function),
592
+ tslib_1.__metadata("design:paramtypes", [String, String]),
593
+ tslib_1.__metadata("design:returntype", Promise)
594
+ ], DevPortalClient.prototype, "getAppValidationById", null);
595
+ tslib_1.__decorate([
596
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
597
+ tslib_1.__metadata("design:type", Function),
598
+ tslib_1.__metadata("design:paramtypes", [String, String]),
599
+ tslib_1.__metadata("design:returntype", Promise)
600
+ ], DevPortalClient.prototype, "getBotRegistration", null);
601
+ tslib_1.__decorate([
602
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
603
+ tslib_1.__metadata("design:type", Function),
604
+ tslib_1.__metadata("design:paramtypes", [String]),
605
+ tslib_1.__metadata("design:returntype", Promise)
606
+ ], DevPortalClient.prototype, "listBots", null);
607
+ tslib_1.__decorate([
608
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
609
+ tslib_1.__metadata("design:type", Function),
610
+ tslib_1.__metadata("design:paramtypes", [String, String]),
611
+ tslib_1.__metadata("design:returntype", Promise)
612
+ ], DevPortalClient.prototype, "deleteBot", null);
613
+ tslib_1.__decorate([
614
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
615
+ tslib_1.__metadata("design:type", Function),
616
+ tslib_1.__metadata("design:paramtypes", [String, Object, Object]),
617
+ tslib_1.__metadata("design:returntype", Promise)
618
+ ], DevPortalClient.prototype, "createBotRegistration", null);
619
+ tslib_1.__decorate([
620
+ (0, hooks_1.hooks)([(0, globalVars_1.ErrorContextMW)({ source: "Teams", component: "TeamsDevPortalClient" })]),
621
+ tslib_1.__metadata("design:type", Function),
622
+ tslib_1.__metadata("design:paramtypes", [String, Object]),
623
+ tslib_1.__metadata("design:returntype", Promise)
624
+ ], DevPortalClient.prototype, "updateBotRegistration", null);
625
+ exports.devPortalClient = new DevPortalClient();
626
+ //# sourceMappingURL=devPortalClient.js.map