@pnp/cli-microsoft365 7.0.0-beta.f1037e1 → 7.0.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 (422) hide show
  1. package/.eslintrc.cjs +1 -3
  2. package/README.md +4 -4
  3. package/dist/Auth.js +12 -2
  4. package/dist/Command.js +3 -3
  5. package/dist/GlobalOptions.js +1 -7
  6. package/dist/cli/Cli.js +24 -7
  7. package/dist/m365/aad/commands/app/app-add.js +8 -8
  8. package/dist/m365/aad/commands/app/app-get.js +4 -1
  9. package/dist/m365/aad/commands/app/app-remove.js +3 -1
  10. package/dist/m365/aad/commands/app/app-role-add.js +9 -6
  11. package/dist/m365/aad/commands/app/app-role-list.js +4 -1
  12. package/dist/m365/aad/commands/app/app-role-remove.js +5 -2
  13. package/dist/m365/aad/commands/app/app-set.js +13 -10
  14. package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +11 -6
  15. package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +4 -4
  16. package/dist/m365/aad/commands/group/group-get.js +4 -4
  17. package/dist/m365/aad/commands/group/group-list.js +1 -23
  18. package/dist/m365/aad/commands/group/group-remove.js +98 -0
  19. package/dist/m365/aad/commands/{o365group/o365group-add.js → m365group/m365group-add.js} +38 -29
  20. package/dist/m365/aad/commands/{o365group/o365group-conversation-list.js → m365group/m365group-conversation-list.js} +15 -10
  21. package/dist/m365/aad/commands/{o365group/o365group-conversation-post-list.js → m365group/m365group-conversation-post-list.js} +18 -14
  22. package/dist/m365/aad/commands/{o365group/o365group-get.js → m365group/m365group-get.js} +14 -10
  23. package/dist/m365/aad/commands/{o365group/o365group-list.js → m365group/m365group-list.js} +13 -28
  24. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-clear.js → m365group/m365group-recyclebinitem-clear.js} +15 -15
  25. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-list.js → m365group/m365group-recyclebinitem-list.js} +10 -10
  26. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-remove.js → m365group/m365group-recyclebinitem-remove.js} +17 -15
  27. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-restore.js → m365group/m365group-recyclebinitem-restore.js} +18 -15
  28. package/dist/m365/aad/commands/{o365group/o365group-remove.js → m365group/m365group-remove.js} +17 -12
  29. package/dist/m365/aad/commands/{o365group/o365group-renew.js → m365group/m365group-renew.js} +15 -10
  30. package/dist/m365/aad/commands/{o365group/o365group-report-activitycounts.js → m365group/m365group-report-activitycounts.js} +4 -4
  31. package/dist/m365/aad/commands/{o365group/o365group-report-activitydetail.js → m365group/m365group-report-activitydetail.js} +4 -4
  32. package/dist/m365/aad/commands/{o365group/o365group-report-activityfilecounts.js → m365group/m365group-report-activityfilecounts.js} +4 -4
  33. package/dist/m365/aad/commands/{o365group/o365group-report-activitygroupcounts.js → m365group/m365group-report-activitygroupcounts.js} +4 -4
  34. package/dist/m365/aad/commands/{o365group/o365group-report-activitystorage.js → m365group/m365group-report-activitystorage.js} +4 -4
  35. package/dist/m365/aad/commands/{o365group/o365group-set.js → m365group/m365group-set.js} +22 -17
  36. package/dist/m365/aad/commands/{o365group/o365group-teamify.js → m365group/m365group-teamify.js} +28 -20
  37. package/dist/m365/aad/commands/{o365group/o365group-user-add.js → m365group/m365group-user-add.js} +19 -14
  38. package/dist/m365/aad/commands/{o365group/o365group-user-list.js → m365group/m365group-user-list.js} +17 -12
  39. package/dist/m365/aad/commands/{o365group/o365group-user-remove.js → m365group/m365group-user-remove.js} +19 -14
  40. package/dist/m365/aad/commands/{o365group/o365group-user-set.js → m365group/m365group-user-set.js} +20 -15
  41. package/dist/m365/aad/commands/policy/policy-list.js +5 -5
  42. package/dist/m365/aad/commands/sp/sp-add.js +4 -1
  43. package/dist/m365/aad/commands/sp/sp-get.js +4 -1
  44. package/dist/m365/aad/commands/user/user-get.js +7 -2
  45. package/dist/m365/aad/commands.js +23 -22
  46. package/dist/m365/booking/commands/business/business-get.js +4 -1
  47. package/dist/m365/cli/commands/cli-issue.js +5 -5
  48. package/dist/m365/cli/commands/config/config-get.js +5 -5
  49. package/dist/m365/cli/commands/config/config-list.js +16 -0
  50. package/dist/m365/cli/commands/config/config-reset.js +5 -5
  51. package/dist/m365/cli/commands/config/config-set.js +5 -5
  52. package/dist/m365/cli/commands.js +1 -0
  53. package/dist/m365/commands/login.js +7 -7
  54. package/dist/m365/commands/request.js +1 -1
  55. package/dist/m365/flow/commands/flow-export.js +13 -13
  56. package/dist/m365/flow/commands/owner/owner-ensure.js +5 -5
  57. package/dist/m365/graph/commands/subscription/subscription-add.js +5 -5
  58. package/dist/m365/outlook/commands/message/message-list.js +4 -2
  59. package/dist/m365/outlook/commands/message/message-move.js +4 -2
  60. package/dist/m365/pa/commands/app/app-export.js +7 -7
  61. package/dist/m365/pa/commands/app/app-owner-set.js +5 -5
  62. package/dist/m365/pa/commands/app/app-permission-ensure.js +162 -0
  63. package/dist/m365/pa/commands/app/app-permission-list.js +2 -2
  64. package/dist/m365/pa/commands/app/app-permission-remove.js +153 -0
  65. package/dist/m365/pa/commands/connector/connector-export.js +5 -5
  66. package/dist/m365/pa/commands.js +3 -4
  67. package/dist/m365/planner/commands/bucket/bucket-add.js +6 -3
  68. package/dist/m365/planner/commands/bucket/bucket-get.js +11 -4
  69. package/dist/m365/planner/commands/bucket/bucket-list.js +6 -3
  70. package/dist/m365/planner/commands/bucket/bucket-remove.js +9 -4
  71. package/dist/m365/planner/commands/bucket/bucket-set.js +10 -4
  72. package/dist/m365/planner/commands/plan/plan-add.js +4 -1
  73. package/dist/m365/planner/commands/plan/plan-get.js +5 -3
  74. package/dist/m365/planner/commands/plan/plan-list.js +8 -6
  75. package/dist/m365/planner/commands/plan/plan-remove.js +4 -1
  76. package/dist/m365/planner/commands/plan/plan-set.js +6 -3
  77. package/dist/m365/planner/commands/roster/roster-get.js +4 -1
  78. package/dist/m365/planner/commands/roster/roster-member-add.js +4 -1
  79. package/dist/m365/planner/commands/roster/roster-member-get.js +4 -1
  80. package/dist/m365/planner/commands/roster/roster-member-list.js +4 -1
  81. package/dist/m365/planner/commands/roster/roster-member-remove.js +4 -1
  82. package/dist/m365/planner/commands/roster/roster-plan-list.js +4 -1
  83. package/dist/m365/planner/commands/roster/roster-remove.js +4 -1
  84. package/dist/m365/planner/commands/task/task-add.js +21 -12
  85. package/dist/m365/planner/commands/task/task-checklistitem-add.js +4 -1
  86. package/dist/m365/planner/commands/task/task-checklistitem-list.js +4 -1
  87. package/dist/m365/planner/commands/task/task-checklistitem-remove.js +4 -1
  88. package/dist/m365/planner/commands/task/task-get.js +46 -28
  89. package/dist/m365/planner/commands/task/task-list.js +34 -19
  90. package/dist/m365/planner/commands/task/task-reference-add.js +4 -1
  91. package/dist/m365/planner/commands/task/task-reference-list.js +4 -1
  92. package/dist/m365/planner/commands/task/task-reference-remove.js +4 -1
  93. package/dist/m365/planner/commands/task/task-remove.js +49 -38
  94. package/dist/m365/planner/commands/task/task-set.js +38 -23
  95. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-get.js +4 -1
  96. package/dist/m365/pp/commands/card/card-get.js +3 -5
  97. package/dist/m365/pp/commands/chatbot/chatbot-get.js +3 -1
  98. package/dist/m365/pp/commands/chatbot/chatbot-list.js +2 -2
  99. package/dist/m365/pp/commands/managementapp/managementapp-add.js +4 -1
  100. package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +14 -14
  101. package/dist/m365/search/commands/externalconnection/externalconnection-remove.js +3 -1
  102. package/dist/m365/spfx/commands/package/package-generate.js +15 -15
  103. package/dist/m365/spfx/commands/project/DeployWorkflow.js +55 -0
  104. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.18.0-beta.1.js → doctor-1.18.0.js} +2 -2
  105. package/dist/m365/spfx/commands/project/project-doctor.js +9 -9
  106. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +2 -2
  107. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +157 -0
  108. package/dist/m365/spfx/commands/project/project-github-workflow-model.js +2 -0
  109. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001022_DEP_office_ui_fabric_react.js +1 -1
  110. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002028_DEVDEP_microsoft_rush_stack_compiler_4_7.js +13 -0
  111. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
  112. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.18.0-beta.1.js → upgrade-1.18.0.js} +35 -27
  113. package/dist/m365/spfx/commands/project/project-upgrade.js +26 -28
  114. package/dist/m365/spfx/commands/spfx-doctor.js +76 -106
  115. package/dist/m365/spfx/commands.js +1 -0
  116. package/dist/m365/spo/commands/app/SpoAppBaseCommand.js +27 -26
  117. package/dist/m365/spo/commands/app/app-add.js +9 -9
  118. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +5 -5
  119. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +5 -3
  120. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-list.js +5 -5
  121. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-remove.js +2 -2
  122. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-set.js +3 -2
  123. package/dist/m365/spo/commands/commandset/commandset-add.js +11 -11
  124. package/dist/m365/spo/commands/commandset/commandset-get.js +12 -10
  125. package/dist/m365/spo/commands/commandset/commandset-list.js +5 -5
  126. package/dist/m365/spo/commands/commandset/commandset-remove.js +7 -6
  127. package/dist/m365/spo/commands/commandset/commandset-set.js +14 -12
  128. package/dist/m365/spo/commands/customaction/customaction-get.js +5 -2
  129. package/dist/m365/spo/commands/customaction/customaction-remove.js +3 -1
  130. package/dist/m365/spo/commands/eventreceiver/eventreceiver-get.js +3 -1
  131. package/dist/m365/spo/commands/file/file-add.js +13 -13
  132. package/dist/m365/spo/commands/file/file-checkin.js +1 -1
  133. package/dist/m365/spo/commands/file/file-checkout.js +1 -1
  134. package/dist/m365/spo/commands/file/file-copy.js +36 -4
  135. package/dist/m365/spo/commands/file/file-get.js +11 -8
  136. package/dist/m365/spo/commands/file/file-list.js +4 -4
  137. package/dist/m365/spo/commands/file/file-move.js +74 -98
  138. package/dist/m365/spo/commands/file/file-remove.js +8 -8
  139. package/dist/m365/spo/commands/file/file-rename.js +2 -2
  140. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +1 -1
  141. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +1 -1
  142. package/dist/m365/spo/commands/file/file-roleassignment-add.js +1 -1
  143. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +1 -1
  144. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +1 -1
  145. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
  146. package/dist/m365/spo/commands/file/file-sharinglink-add.js +8 -8
  147. package/dist/m365/spo/commands/file/file-sharinglink-list.js +5 -5
  148. package/dist/m365/spo/commands/file/file-version-clear.js +3 -3
  149. package/dist/m365/spo/commands/file/file-version-get.js +3 -3
  150. package/dist/m365/spo/commands/file/file-version-list.js +3 -3
  151. package/dist/m365/spo/commands/file/file-version-remove.js +3 -3
  152. package/dist/m365/spo/commands/file/file-version-restore.js +3 -3
  153. package/dist/m365/spo/commands/folder/folder-add.js +2 -4
  154. package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
  155. package/dist/m365/spo/commands/folder/folder-get.js +1 -1
  156. package/dist/m365/spo/commands/folder/folder-list.js +2 -2
  157. package/dist/m365/spo/commands/folder/folder-move.js +89 -47
  158. package/dist/m365/spo/commands/folder/folder-remove.js +7 -4
  159. package/dist/m365/spo/commands/folder/folder-rename.js +13 -17
  160. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +1 -1
  161. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +1 -1
  162. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +1 -1
  163. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
  164. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +1 -1
  165. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +1 -1
  166. package/dist/m365/spo/commands/group/group-list.js +0 -1
  167. package/dist/m365/spo/commands/group/group-member-add.js +24 -24
  168. package/dist/m365/spo/commands/hubsite/hubsite-connect.js +7 -4
  169. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +4 -1
  170. package/dist/m365/spo/commands/hubsite/hubsite-get.js +3 -1
  171. package/dist/m365/spo/commands/list/list-add.js +4 -4
  172. package/dist/m365/spo/commands/list/list-retentionlabel-ensure.js +2 -24
  173. package/dist/m365/spo/commands/list/list-set.js +4 -4
  174. package/dist/m365/spo/commands/listitem/listitem-add.js +1 -0
  175. package/dist/m365/spo/commands/listitem/listitem-attachment-add.js +127 -0
  176. package/dist/m365/spo/commands/listitem/listitem-attachment-get.js +97 -0
  177. package/dist/m365/spo/commands/listitem/listitem-attachment-remove.js +121 -0
  178. package/dist/m365/spo/commands/listitem/listitem-attachment-set.js +115 -0
  179. package/dist/m365/spo/commands/listitem/listitem-set.js +3 -2
  180. package/dist/m365/spo/commands/navigation/navigation-node-set.js +2 -2
  181. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +34 -5
  182. package/dist/m365/spo/commands/page/clientsidepages.js +19 -81
  183. package/dist/m365/spo/commands/page/page-get.js +1 -0
  184. package/dist/m365/spo/commands/page/page-list.js +4 -3
  185. package/dist/m365/spo/commands/page/page-section-add.js +56 -21
  186. package/dist/m365/spo/commands/page/page-set.js +13 -2
  187. package/dist/m365/spo/commands/propertybag/propertybag-base.js +63 -59
  188. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +28 -31
  189. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +30 -32
  190. package/dist/m365/spo/commands/site/FlowsPolicy.js +7 -0
  191. package/dist/m365/spo/commands/site/site-add.js +114 -161
  192. package/dist/m365/spo/commands/site/site-apppermission-add.js +15 -18
  193. package/dist/m365/spo/commands/site/site-apppermission-remove.js +34 -38
  194. package/dist/m365/spo/commands/site/site-apppermission-set.js +11 -14
  195. package/dist/m365/spo/commands/site/site-commsite-enable.js +34 -5
  196. package/dist/m365/spo/commands/site/site-ensure.js +14 -67
  197. package/dist/m365/spo/commands/site/site-hubsite-disconnect.js +22 -22
  198. package/dist/m365/spo/commands/site/site-list.js +25 -43
  199. package/dist/m365/spo/commands/site/site-recyclebinitem-list.js +6 -6
  200. package/dist/m365/spo/commands/site/site-remove.js +166 -210
  201. package/dist/m365/spo/commands/site/site-set.js +178 -199
  202. package/dist/m365/spo/commands/tenant/tenant-appcatalog-add.js +1 -1
  203. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-get.js +12 -7
  204. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-list.js +3 -2
  205. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-remove.js +2 -1
  206. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +3 -2
  207. package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +8 -8
  208. package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +8 -3
  209. package/dist/m365/spo/commands/tenant/tenant-commandset-list.js +3 -2
  210. package/dist/m365/spo/commands/tenant/tenant-commandset-remove.js +3 -1
  211. package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +8 -8
  212. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +4 -4
  213. package/dist/m365/spo/commands/term/term-get.js +6 -6
  214. package/dist/m365/spo/commands/theme/theme-list.js +1 -9
  215. package/dist/m365/spo/commands/theme/theme-remove.js +24 -24
  216. package/dist/m365/spo/commands/theme/theme-set.js +0 -1
  217. package/dist/m365/spo/commands/user/user-get.js +10 -10
  218. package/dist/m365/spo/commands/user/user-remove.js +27 -27
  219. package/dist/m365/spo/commands/web/web-reindex.js +35 -42
  220. package/dist/m365/spo/commands/web/web-remove.js +21 -21
  221. package/dist/m365/spo/commands/web/web-roleassignment-add.js +16 -31
  222. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +33 -44
  223. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +18 -18
  224. package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +19 -19
  225. package/dist/m365/spo/commands/web/web-set.js +5 -5
  226. package/dist/m365/spo/commands.js +4 -0
  227. package/dist/m365/teams/commands/app/app-list.js +5 -5
  228. package/dist/m365/teams/commands/app/app-remove.js +49 -15
  229. package/dist/m365/teams/commands/channel/channel-add.js +5 -1
  230. package/dist/m365/teams/commands/channel/channel-member-add.js +12 -10
  231. package/dist/m365/teams/commands/channel/channel-member-remove.js +3 -1
  232. package/dist/m365/teams/commands/channel/channel-member-set.js +4 -1
  233. package/dist/m365/teams/commands/chat/chat-get.js +7 -10
  234. package/dist/m365/teams/commands/chat/chat-member-add.js +5 -5
  235. package/dist/m365/teams/commands/chat/chat-message-send.js +8 -10
  236. package/dist/m365/teams/commands/funsettings/funsettings-set.js +4 -4
  237. package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +4 -4
  238. package/dist/m365/teams/commands/meeting/meeting-list.js +101 -51
  239. package/dist/m365/teams/commands/membersettings/membersettings-set.js +4 -4
  240. package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +5 -5
  241. package/dist/m365/teams/commands/team/team-clone.js +5 -10
  242. package/dist/m365/teams/commands/team/team-list.js +94 -30
  243. package/dist/m365/teams/commands/team/team-set.js +3 -3
  244. package/dist/m365/tenant/commands/info/info-get.js +83 -0
  245. package/dist/m365/tenant/commands.js +1 -0
  246. package/dist/m365/todo/commands/task/task-add.js +6 -6
  247. package/dist/m365/yammer/commands/message/message-like-set.js +27 -28
  248. package/dist/m365/yammer/commands/message/message-list.js +67 -86
  249. package/dist/m365/yammer/commands/message/message-remove.js +18 -18
  250. package/dist/m365/yammer/commands/yammer-search.js +58 -74
  251. package/dist/utils/aadGroup.js +39 -3
  252. package/dist/utils/formatting.js +7 -0
  253. package/dist/utils/fsUtil.js +5 -0
  254. package/dist/utils/planner.js +4 -3
  255. package/dist/utils/powerPlatform.js +1 -1
  256. package/dist/utils/spo.js +595 -54
  257. package/dist/utils/validation.js +0 -3
  258. package/docs/docs/_clisettings.mdx +2 -2
  259. package/docs/docs/cmd/_global.mdx +1 -1
  260. package/docs/docs/cmd/aad/app/app-set.mdx +15 -15
  261. package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +9 -9
  262. package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +10 -10
  263. package/docs/docs/cmd/aad/group/group-get.mdx +5 -5
  264. package/docs/docs/cmd/aad/group/group-list.mdx +0 -11
  265. package/docs/docs/cmd/aad/group/group-remove.mdx +44 -0
  266. package/docs/docs/cmd/aad/{o365group/o365group-add.mdx → m365group/m365group-add.mdx} +25 -15
  267. package/docs/docs/cmd/aad/{o365group/o365group-conversation-list.mdx → m365group/m365group-conversation-list.mdx} +4 -4
  268. package/docs/docs/cmd/aad/{o365group/o365group-conversation-post-list.mdx → m365group/m365group-conversation-post-list.mdx} +8 -8
  269. package/docs/docs/cmd/aad/{o365group/o365group-get.mdx → m365group/m365group-get.mdx} +6 -6
  270. package/docs/docs/cmd/aad/{o365group/o365group-list.mdx → m365group/m365group-list.mdx} +12 -29
  271. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-clear.mdx → m365group/m365group-recyclebinitem-clear.mdx} +5 -5
  272. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-list.mdx → m365group/m365group-recyclebinitem-list.mdx} +8 -8
  273. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-remove.mdx → m365group/m365group-recyclebinitem-remove.mdx} +6 -6
  274. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-restore.mdx → m365group/m365group-recyclebinitem-restore.mdx} +6 -6
  275. package/docs/docs/cmd/aad/{o365group/o365group-remove.mdx → m365group/m365group-remove.mdx} +6 -6
  276. package/docs/docs/cmd/aad/{o365group/o365group-renew.mdx → m365group/m365group-renew.mdx} +4 -4
  277. package/docs/docs/cmd/aad/{o365group/o365group-report-activitycounts.mdx → m365group/m365group-report-activitycounts.mdx} +6 -6
  278. package/docs/docs/cmd/aad/{o365group/o365group-report-activitydetail.mdx → m365group/m365group-report-activitydetail.mdx} +7 -7
  279. package/docs/docs/cmd/aad/{o365group/o365group-report-activityfilecounts.mdx → m365group/m365group-report-activityfilecounts.mdx} +6 -6
  280. package/docs/docs/cmd/aad/{o365group/o365group-report-activitygroupcounts.mdx → m365group/m365group-report-activitygroupcounts.mdx} +6 -6
  281. package/docs/docs/cmd/aad/{o365group/o365group-report-activitystorage.mdx → m365group/m365group-report-activitystorage.mdx} +6 -6
  282. package/docs/docs/cmd/aad/{o365group/o365group-set.mdx → m365group/m365group-set.mdx} +8 -8
  283. package/docs/docs/cmd/aad/{o365group/o365group-teamify.mdx → m365group/m365group-teamify.mdx} +5 -5
  284. package/docs/docs/cmd/aad/{o365group/o365group-user-add.mdx → m365group/m365group-user-add.mdx} +5 -5
  285. package/docs/docs/cmd/aad/{o365group/o365group-user-list.mdx → m365group/m365group-user-list.mdx} +7 -7
  286. package/docs/docs/cmd/aad/{o365group/o365group-user-remove.mdx → m365group/m365group-user-remove.mdx} +5 -5
  287. package/docs/docs/cmd/aad/{o365group/o365group-user-set.mdx → m365group/m365group-user-set.mdx} +5 -5
  288. package/docs/docs/cmd/aad/policy/policy-list.mdx +5 -5
  289. package/docs/docs/cmd/aad/user/user-set.mdx +1 -1
  290. package/docs/docs/cmd/cli/config/config-list.mdx +78 -0
  291. package/docs/docs/cmd/flow/flow-enable.mdx +2 -2
  292. package/docs/docs/cmd/flow/flow-export.mdx +11 -11
  293. package/docs/docs/cmd/graph/subscription/subscription-add.mdx +10 -10
  294. package/docs/docs/cmd/login.mdx +6 -0
  295. package/docs/docs/cmd/pa/app/app-export.mdx +5 -5
  296. package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +85 -0
  297. package/docs/docs/cmd/pa/app/app-permission-remove.mdx +74 -0
  298. package/docs/docs/cmd/pa/connector/connector-export.mdx +3 -3
  299. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  300. package/docs/docs/cmd/planner/task/task-add.mdx +22 -7
  301. package/docs/docs/cmd/planner/task/task-get.mdx +13 -4
  302. package/docs/docs/cmd/planner/task/task-list.mdx +22 -7
  303. package/docs/docs/cmd/planner/task/task-remove.mdx +25 -8
  304. package/docs/docs/cmd/planner/task/task-set.mdx +22 -7
  305. package/docs/docs/cmd/pp/chatbot/chatbot-list.mdx +4 -4
  306. package/docs/docs/cmd/pp/dataverse/dataverse-table-get.mdx +2 -2
  307. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.mdx +2 -2
  308. package/docs/docs/cmd/pp/dataverse/dataverse-table-remove.mdx +3 -3
  309. package/docs/docs/cmd/pp/solution/solution-publisher-get.mdx +2 -2
  310. package/docs/docs/cmd/pp/solution/solution-publisher-remove.mdx +2 -2
  311. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +94 -0
  312. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  313. package/docs/docs/cmd/spo/file/file-add.mdx +1 -1
  314. package/docs/docs/cmd/spo/file/file-checkin.mdx +1 -1
  315. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -9
  316. package/docs/docs/cmd/spo/file/file-checkout.mdx +1 -1
  317. package/docs/docs/cmd/spo/file/file-copy.mdx +20 -16
  318. package/docs/docs/cmd/spo/file/file-get.mdx +3 -3
  319. package/docs/docs/cmd/spo/file/file-list.mdx +2 -2
  320. package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
  321. package/docs/docs/cmd/spo/file/file-remove.mdx +10 -10
  322. package/docs/docs/cmd/spo/file/file-rename.mdx +3 -3
  323. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +2 -2
  324. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +3 -3
  325. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  326. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  327. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +1 -1
  328. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +1 -1
  329. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +1 -1
  330. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +1 -1
  331. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +1 -1
  332. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +1 -1
  333. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +1 -1
  334. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +1 -1
  335. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +1 -1
  336. package/docs/docs/cmd/spo/file/file-version-clear.mdx +3 -3
  337. package/docs/docs/cmd/spo/file/file-version-get.mdx +3 -3
  338. package/docs/docs/cmd/spo/file/file-version-list.mdx +3 -3
  339. package/docs/docs/cmd/spo/file/file-version-remove.mdx +3 -3
  340. package/docs/docs/cmd/spo/file/file-version-restore.mdx +3 -3
  341. package/docs/docs/cmd/spo/folder/folder-add.mdx +76 -1
  342. package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
  343. package/docs/docs/cmd/spo/folder/folder-get.mdx +1 -1
  344. package/docs/docs/cmd/spo/folder/folder-list.mdx +1 -1
  345. package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
  346. package/docs/docs/cmd/spo/folder/folder-remove.mdx +1 -1
  347. package/docs/docs/cmd/spo/folder/folder-rename.mdx +5 -1
  348. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  349. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  350. package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +2 -2
  351. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
  352. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.mdx +1 -1
  353. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.mdx +1 -1
  354. package/docs/docs/cmd/spo/group/group-member-add.mdx +27 -27
  355. package/docs/docs/cmd/spo/list/list-contenttype-remove.mdx +1 -1
  356. package/docs/docs/cmd/spo/list/list-retentionlabel-ensure.mdx +2 -11
  357. package/docs/docs/cmd/spo/listitem/listitem-add.mdx +2 -5
  358. package/docs/docs/cmd/spo/listitem/listitem-attachment-add.mdx +110 -0
  359. package/docs/docs/cmd/spo/listitem/listitem-attachment-get.mdx +104 -0
  360. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.mdx +1 -1
  361. package/docs/docs/cmd/spo/listitem/listitem-attachment-remove.mdx +58 -0
  362. package/docs/docs/cmd/spo/listitem/listitem-attachment-set.mdx +58 -0
  363. package/docs/docs/cmd/spo/listitem/listitem-set.mdx +2 -5
  364. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +14 -1
  365. package/docs/docs/cmd/spo/page/page-get.mdx +0 -1
  366. package/docs/docs/cmd/spo/page/page-list.mdx +0 -1
  367. package/docs/docs/cmd/spo/page/page-section-add.mdx +25 -1
  368. package/docs/docs/cmd/spo/page/page-set.mdx +23 -0
  369. package/docs/docs/cmd/spo/site/site-add.mdx +1 -1
  370. package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +11 -2
  371. package/docs/docs/cmd/spo/site/site-ensure.mdx +1 -1
  372. package/docs/docs/cmd/spo/site/site-list.mdx +3 -78
  373. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.mdx +1 -1
  374. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-get.mdx +2 -2
  375. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.mdx +3 -5
  376. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-remove.mdx +1 -1
  377. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
  378. package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +2 -4
  379. package/docs/docs/cmd/spo/tenant/tenant-commandset-remove.mdx +1 -1
  380. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  381. package/docs/docs/cmd/spo/user/user-get.mdx +8 -8
  382. package/docs/docs/cmd/teams/app/app-remove.mdx +9 -6
  383. package/docs/docs/cmd/teams/channel/channel-member-add.mdx +4 -4
  384. package/docs/docs/cmd/teams/meeting/meeting-list.mdx +135 -92
  385. package/docs/docs/cmd/teams/team/team-add.mdx +1 -1
  386. package/docs/docs/cmd/teams/team/team-clone.mdx +3 -3
  387. package/docs/docs/cmd/teams/team/team-list.mdx +47 -22
  388. package/docs/docs/cmd/tenant/info/info-get.mdx +101 -0
  389. package/docs/docs/cmd/yammer/network/network-list.mdx +1 -1
  390. package/npm-shrinkwrap.json +310 -1433
  391. package/package.json +23 -28
  392. package/dist/m365/pa/cds-project-mutator.js +0 -91
  393. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/generated/ManifestTypes.d.ts +0 -11
  394. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_ControlManifest.Input.xml +0 -31
  395. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_index.ts +0 -51
  396. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/generated/ManifestTypes.d.ts +0 -12
  397. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_ControlManifest.Input.xml +0 -37
  398. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_index.ts +0 -48
  399. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/index.ts +0 -0
  400. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_ControlManifest.Input.xml +0 -31
  401. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_index.tsx +0 -58
  402. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_ControlManifest.Input.xml +0 -37
  403. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_index.tsx +0 -55
  404. package/dist/m365/pa/commands/pcf/pcf-init/assets/package.json +0 -19
  405. package/dist/m365/pa/commands/pcf/pcf-init/assets/pcfconfig.json +0 -3
  406. package/dist/m365/pa/commands/pcf/pcf-init/assets/template_.gitignore +0 -14
  407. package/dist/m365/pa/commands/pcf/pcf-init/assets/template_pcfprojecttype.pcfproj +0 -45
  408. package/dist/m365/pa/commands/pcf/pcf-init/pcf-init-variables.js +0 -2
  409. package/dist/m365/pa/commands/pcf/pcf-init.js +0 -120
  410. package/dist/m365/pa/commands/solution/solution-init/assets/Other/Customizations.xml +0 -18
  411. package/dist/m365/pa/commands/solution/solution-init/assets/Other/Relationships.xml +0 -2
  412. package/dist/m365/pa/commands/solution/solution-init/assets/Other/template_Solution.xml +0 -94
  413. package/dist/m365/pa/commands/solution/solution-init/assets/template_.gitignore +0 -2
  414. package/dist/m365/pa/commands/solution/solution-init/assets/template_solutionprojecttype.cdsproj +0 -44
  415. package/dist/m365/pa/commands/solution/solution-init/solution-init-variables.js +0 -2
  416. package/dist/m365/pa/commands/solution/solution-init.js +0 -126
  417. package/dist/m365/pa/commands/solution/solution-reference-add.js +0 -88
  418. package/dist/m365/pa/template-instantiator.js +0 -57
  419. package/docs/docs/cmd/pa/pcf/pcf-init.mdx +0 -56
  420. package/docs/docs/cmd/pa/solution/solution-init.mdx +0 -46
  421. package/docs/docs/cmd/pa/solution/solution-reference-add.mdx +0 -42
  422. /package/dist/m365/aad/commands/{o365group → m365group}/GroupExtended.js +0 -0
@@ -49,7 +49,7 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand {
49
49
  this.handleRejectedODataJsonPromise(err);
50
50
  }
51
51
  }
52
- addRoleAssignment(logger, options) {
52
+ async addRoleAssignment(logger, options) {
53
53
  const requestOptions = {
54
54
  url: `${options.webUrl}/_api/web/roleassignments/addroleassignment(principalid='${options.principalId}',roledefid='${options.roleDefinitionId}')`,
55
55
  method: 'POST',
@@ -59,14 +59,11 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand {
59
59
  },
60
60
  responseType: 'json'
61
61
  };
62
- return request
63
- .post(requestOptions)
64
- .then(_ => Promise.resolve())
65
- .catch((err) => Promise.reject(err));
62
+ await request.post(requestOptions);
66
63
  }
67
- getRoleDefinitionId(options) {
64
+ async getRoleDefinitionId(options) {
68
65
  if (!options.roleDefinitionName) {
69
- return Promise.resolve(options.roleDefinitionId);
66
+ return options.roleDefinitionId;
70
67
  }
71
68
  const roleDefinitionListCommandOptions = {
72
69
  webUrl: options.webUrl,
@@ -74,16 +71,12 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand {
74
71
  debug: this.debug,
75
72
  verbose: this.verbose
76
73
  };
77
- return Cli.executeCommandWithOutput(spoRoleDefinitionListCommand, { options: { ...roleDefinitionListCommandOptions, _: [] } })
78
- .then((output) => {
79
- const getRoleDefinitionListOutput = JSON.parse(output.stdout);
80
- const roleDefinitionId = getRoleDefinitionListOutput.find((role) => role.Name === options.roleDefinitionName).Id;
81
- return Promise.resolve(roleDefinitionId);
82
- }, (err) => {
83
- return Promise.reject(err);
84
- });
74
+ const output = await Cli.executeCommandWithOutput(spoRoleDefinitionListCommand, { options: { ...roleDefinitionListCommandOptions, _: [] } });
75
+ const getRoleDefinitionListOutput = JSON.parse(output.stdout);
76
+ const roleDefinitionId = getRoleDefinitionListOutput.find((role) => role.Name === options.roleDefinitionName).Id;
77
+ return roleDefinitionId;
85
78
  }
86
- getGroupPrincipalId(options) {
79
+ async getGroupPrincipalId(options) {
87
80
  const groupGetCommandOptions = {
88
81
  webUrl: options.webUrl,
89
82
  name: options.groupName,
@@ -91,15 +84,11 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand {
91
84
  debug: this.debug,
92
85
  verbose: this.verbose
93
86
  };
94
- return Cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } })
95
- .then((output) => {
96
- const getGroupOutput = JSON.parse(output.stdout);
97
- return Promise.resolve(getGroupOutput.Id);
98
- }, (err) => {
99
- return Promise.reject(err);
100
- });
87
+ const output = await Cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
88
+ const getGroupOutput = JSON.parse(output.stdout);
89
+ return getGroupOutput.Id;
101
90
  }
102
- getUserPrincipalId(options) {
91
+ async getUserPrincipalId(options) {
103
92
  const userGetCommandOptions = {
104
93
  webUrl: options.webUrl,
105
94
  email: options.upn,
@@ -108,13 +97,9 @@ class SpoWebRoleAssignmentAddCommand extends SpoCommand {
108
97
  debug: this.debug,
109
98
  verbose: this.verbose
110
99
  };
111
- return Cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } })
112
- .then((output) => {
113
- const getUserOutput = JSON.parse(output.stdout);
114
- return Promise.resolve(getUserOutput.Id);
115
- }, (err) => {
116
- return Promise.reject(err);
117
- });
100
+ const output = await Cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
101
+ const getUserOutput = JSON.parse(output.stdout);
102
+ return getUserOutput.Id;
118
103
  }
119
104
  }
120
105
  _SpoWebRoleAssignmentAddCommand_instances = new WeakSet(), _SpoWebRoleAssignmentAddCommand_initTelemetry = function _SpoWebRoleAssignmentAddCommand_initTelemetry() {
@@ -27,29 +27,8 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand {
27
27
  __classPrivateFieldGet(this, _SpoWebRoleAssignmentRemoveCommand_instances, "m", _SpoWebRoleAssignmentRemoveCommand_initOptionSets).call(this);
28
28
  }
29
29
  async commandAction(logger, args) {
30
- const removeRoleAssignment = async () => {
31
- if (this.verbose) {
32
- await logger.logToStderr(`Removing role assignment from web ${args.options.webUrl}...`);
33
- }
34
- try {
35
- if (args.options.upn) {
36
- args.options.principalId = await this.getUserPrincipalId(args.options);
37
- await this.removeRoleAssignment(logger, args.options);
38
- }
39
- else if (args.options.groupName) {
40
- args.options.principalId = await this.getGroupPrincipalId(args.options);
41
- await this.removeRoleAssignment(logger, args.options);
42
- }
43
- else {
44
- await this.removeRoleAssignment(logger, args.options);
45
- }
46
- }
47
- catch (err) {
48
- this.handleRejectedODataJsonPromise(err);
49
- }
50
- };
51
30
  if (args.options.force) {
52
- await removeRoleAssignment();
31
+ await this.removeRoleAssignment(logger, args.options);
53
32
  }
54
33
  else {
55
34
  const result = await Cli.prompt({
@@ -59,11 +38,32 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand {
59
38
  message: `Are you sure you want to remove role assignment from web ${args.options.webUrl}?`
60
39
  });
61
40
  if (result.continue) {
62
- await removeRoleAssignment();
41
+ await this.removeRoleAssignment(logger, args.options);
63
42
  }
64
43
  }
65
44
  }
66
- removeRoleAssignment(logger, options) {
45
+ async removeRoleAssignment(logger, options) {
46
+ if (this.verbose) {
47
+ await logger.logToStderr(`Removing role assignment from web ${options.webUrl}...`);
48
+ }
49
+ try {
50
+ if (options.upn) {
51
+ options.principalId = await this.getUserPrincipalId(options);
52
+ await this.removeRoleAssignmentWithOptions(logger, options);
53
+ }
54
+ else if (options.groupName) {
55
+ options.principalId = await this.getGroupPrincipalId(options);
56
+ await this.removeRoleAssignmentWithOptions(logger, options);
57
+ }
58
+ else {
59
+ await this.removeRoleAssignmentWithOptions(logger, options);
60
+ }
61
+ }
62
+ catch (err) {
63
+ this.handleRejectedODataJsonPromise(err);
64
+ }
65
+ }
66
+ async removeRoleAssignmentWithOptions(logger, options) {
67
67
  const requestOptions = {
68
68
  url: `${options.webUrl}/_api/web/roleassignments/removeroleassignment(principalid='${options.principalId}')`,
69
69
  method: 'POST',
@@ -73,12 +73,9 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand {
73
73
  },
74
74
  responseType: 'json'
75
75
  };
76
- return request
77
- .post(requestOptions)
78
- .then(_ => Promise.resolve())
79
- .catch((err) => Promise.reject(err));
76
+ await request.post(requestOptions);
80
77
  }
81
- getGroupPrincipalId(options) {
78
+ async getGroupPrincipalId(options) {
82
79
  const groupGetCommandOptions = {
83
80
  webUrl: options.webUrl,
84
81
  name: options.groupName,
@@ -86,15 +83,11 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand {
86
83
  debug: this.debug,
87
84
  verbose: this.verbose
88
85
  };
89
- return Cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } })
90
- .then((output) => {
91
- const getGroupOutput = JSON.parse(output.stdout);
92
- return Promise.resolve(getGroupOutput.Id);
93
- }, (err) => {
94
- return Promise.reject(err);
95
- });
86
+ const output = await Cli.executeCommandWithOutput(spoGroupGetCommand, { options: { ...groupGetCommandOptions, _: [] } });
87
+ const getGroupOutput = JSON.parse(output.stdout);
88
+ return getGroupOutput.Id;
96
89
  }
97
- getUserPrincipalId(options) {
90
+ async getUserPrincipalId(options) {
98
91
  const userGetCommandOptions = {
99
92
  webUrl: options.webUrl,
100
93
  email: options.upn,
@@ -103,13 +96,9 @@ class SpoWebRoleAssignmentRemoveCommand extends SpoCommand {
103
96
  debug: this.debug,
104
97
  verbose: this.verbose
105
98
  };
106
- return Cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } })
107
- .then((output) => {
108
- const getUserOutput = JSON.parse(output.stdout);
109
- return Promise.resolve(getUserOutput.Id);
110
- }, (err) => {
111
- return Promise.reject(err);
112
- });
99
+ const output = await Cli.executeCommandWithOutput(spoUserGetCommand, { options: { ...userGetCommandOptions, _: [] } });
100
+ const getUserOutput = JSON.parse(output.stdout);
101
+ return getUserOutput.Id;
113
102
  }
114
103
  }
115
104
  _SpoWebRoleAssignmentRemoveCommand_instances = new WeakSet(), _SpoWebRoleAssignmentRemoveCommand_initTelemetry = function _SpoWebRoleAssignmentRemoveCommand_initTelemetry() {
@@ -27,24 +27,8 @@ class SpoWebRoleInheritanceBreakCommand extends SpoCommand {
27
27
  if (this.verbose) {
28
28
  await logger.logToStderr(`Break role inheritance of subsite with URL ${args.options.webUrl}...`);
29
29
  }
30
- const breakroleInheritance = async () => {
31
- const requestOptions = {
32
- url: `${args.options.webUrl}/_api/web/breakroleinheritance(${!args.options.clearExistingPermissions})`,
33
- headers: {
34
- 'accept': 'application/json;odata=nometadata',
35
- 'content-type': 'application/json'
36
- },
37
- responseType: 'json'
38
- };
39
- try {
40
- await request.post(requestOptions);
41
- }
42
- catch (err) {
43
- this.handleRejectedODataJsonPromise(err);
44
- }
45
- };
46
30
  if (args.options.force) {
47
- await breakroleInheritance();
31
+ await this.breakRoleInheritance(args.options);
48
32
  }
49
33
  else {
50
34
  const result = await Cli.prompt({
@@ -54,10 +38,26 @@ class SpoWebRoleInheritanceBreakCommand extends SpoCommand {
54
38
  message: `Are you sure you want to break the role inheritance of subsite ${args.options.webUrl}`
55
39
  });
56
40
  if (result.continue) {
57
- await breakroleInheritance();
41
+ await this.breakRoleInheritance(args.options);
58
42
  }
59
43
  }
60
44
  }
45
+ async breakRoleInheritance(options) {
46
+ const requestOptions = {
47
+ url: `${options.webUrl}/_api/web/breakroleinheritance(${!options.clearExistingPermissions})`,
48
+ headers: {
49
+ 'accept': 'application/json;odata=nometadata',
50
+ 'content-type': 'application/json'
51
+ },
52
+ responseType: 'json'
53
+ };
54
+ try {
55
+ await request.post(requestOptions);
56
+ }
57
+ catch (err) {
58
+ this.handleRejectedODataJsonPromise(err);
59
+ }
60
+ }
61
61
  }
62
62
  _SpoWebRoleInheritanceBreakCommand_instances = new WeakSet(), _SpoWebRoleInheritanceBreakCommand_initTelemetry = function _SpoWebRoleInheritanceBreakCommand_initTelemetry() {
63
63
  this.telemetry.push((args) => {
@@ -27,25 +27,8 @@ class SpoWebRoleInheritanceResetCommand extends SpoCommand {
27
27
  if (this.verbose) {
28
28
  await logger.logToStderr(`Restore role inheritance of subsite at ${args.options.webUrl}...`);
29
29
  }
30
- const resetWebRoleInheritance = async () => {
31
- try {
32
- const requestOptions = {
33
- url: `${args.options.webUrl}/_api/web/resetroleinheritance`,
34
- method: 'POST',
35
- headers: {
36
- 'accept': 'application/json;odata=nometadata',
37
- 'content-type': 'application/json'
38
- },
39
- responseType: 'json'
40
- };
41
- await request.post(requestOptions);
42
- }
43
- catch (err) {
44
- this.handleRejectedODataJsonPromise(err);
45
- }
46
- };
47
30
  if (args.options.force) {
48
- await resetWebRoleInheritance();
31
+ await this.resetWebRoleInheritance(args.options);
49
32
  }
50
33
  else {
51
34
  const result = await Cli.prompt({
@@ -55,10 +38,27 @@ class SpoWebRoleInheritanceResetCommand extends SpoCommand {
55
38
  message: `Are you sure you want to reset the role inheritance of ${args.options.webUrl}`
56
39
  });
57
40
  if (result.continue) {
58
- await resetWebRoleInheritance();
41
+ await this.resetWebRoleInheritance(args.options);
59
42
  }
60
43
  }
61
44
  }
45
+ async resetWebRoleInheritance(options) {
46
+ try {
47
+ const requestOptions = {
48
+ url: `${options.webUrl}/_api/web/resetroleinheritance`,
49
+ method: 'POST',
50
+ headers: {
51
+ 'accept': 'application/json;odata=nometadata',
52
+ 'content-type': 'application/json'
53
+ },
54
+ responseType: 'json'
55
+ };
56
+ await request.post(requestOptions);
57
+ }
58
+ catch (err) {
59
+ this.handleRejectedODataJsonPromise(err);
60
+ }
61
+ }
62
62
  }
63
63
  _SpoWebRoleInheritanceResetCommand_instances = new WeakSet(), _SpoWebRoleInheritanceResetCommand_initTelemetry = function _SpoWebRoleInheritanceResetCommand_initTelemetry() {
64
64
  this.telemetry.push((args) => {
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _SpoWebSetCommand_instances, _SpoWebSetCommand_initTelemetry, _SpoWebSetCommand_initOptions, _SpoWebSetCommand_initTypes, _SpoWebSetCommand_initValidators;
6
+ var _SpoWebSetCommand_instances, _a, _SpoWebSetCommand_initTelemetry, _SpoWebSetCommand_initOptions, _SpoWebSetCommand_initTypes, _SpoWebSetCommand_initValidators;
7
7
  import request from '../../../../request.js';
8
8
  import { validation } from '../../../../utils/validation.js';
9
9
  import SpoCommand from '../../../base/SpoCommand.js';
@@ -55,7 +55,7 @@ class SpoWebSetCommand extends SpoCommand {
55
55
  }
56
56
  if (typeof args.options.searchScope !== 'undefined') {
57
57
  const searchScope = args.options.searchScope.toLowerCase();
58
- payload.SearchScope = SpoWebSetCommand.searchScopeOptions.indexOf(searchScope);
58
+ payload.SearchScope = _a.searchScopeOptions.indexOf(searchScope);
59
59
  }
60
60
  try {
61
61
  const requestOptions = {
@@ -97,7 +97,7 @@ class SpoWebSetCommand extends SpoCommand {
97
97
  return true;
98
98
  }
99
99
  }
100
- _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = function _SpoWebSetCommand_initTelemetry() {
100
+ _a = SpoWebSetCommand, _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = function _SpoWebSetCommand_initTelemetry() {
101
101
  this.telemetry.push((args) => {
102
102
  Object.assign(this.telemetryProperties, {
103
103
  description: typeof args.options.description !== 'undefined',
@@ -143,7 +143,7 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
143
143
  autocomplete: ['true', 'false']
144
144
  }, {
145
145
  option: '--searchScope [searchScope]',
146
- autocomplete: SpoWebSetCommand.searchScopeOptions
146
+ autocomplete: _a.searchScopeOptions
147
147
  }, {
148
148
  option: '--welcomePage [welcomePage]'
149
149
  });
@@ -170,7 +170,7 @@ _SpoWebSetCommand_instances = new WeakSet(), _SpoWebSetCommand_initTelemetry = f
170
170
  }
171
171
  if (typeof args.options.searchScope !== 'undefined') {
172
172
  const searchScope = args.options.searchScope.toString().toLowerCase();
173
- if (SpoWebSetCommand.searchScopeOptions.indexOf(searchScope) < 0) {
173
+ if (_a.searchScopeOptions.indexOf(searchScope) < 0) {
174
174
  return `${args.options.searchScope} is not a valid value for searchScope. Allowed values are DefaultScope|Tenant|Hub|Site`;
175
175
  }
176
176
  }
@@ -156,7 +156,11 @@ export default {
156
156
  LIST_WEBHOOK_REMOVE: `${prefix} list webhook remove`,
157
157
  LIST_WEBHOOK_SET: `${prefix} list webhook set`,
158
158
  LISTITEM_ADD: `${prefix} listitem add`,
159
+ LISTITEM_ATTACHMENT_ADD: `${prefix} listitem attachment add`,
160
+ LISTITEM_ATTACHMENT_GET: `${prefix} listitem attachment get`,
159
161
  LISTITEM_ATTACHMENT_LIST: `${prefix} listitem attachment list`,
162
+ LISTITEM_ATTACHMENT_REMOVE: `${prefix} listitem attachment remove`,
163
+ LISTITEM_ATTACHMENT_SET: `${prefix} listitem attachment set`,
160
164
  LISTITEM_BATCH_ADD: `${prefix} listitem batch add`,
161
165
  LISTITEM_BATCH_SET: `${prefix} listitem batch set`,
162
166
  LISTITEM_GET: `${prefix} listitem get`,
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _TeamsAppListCommand_instances, _TeamsAppListCommand_initTelemetry, _TeamsAppListCommand_initOptions, _TeamsAppListCommand_initValidators;
6
+ var _TeamsAppListCommand_instances, _a, _TeamsAppListCommand_initTelemetry, _TeamsAppListCommand_initOptions, _TeamsAppListCommand_initValidators;
7
7
  import { odata } from '../../../../utils/odata.js';
8
8
  import GraphCommand from '../../../base/GraphCommand.js';
9
9
  import commands from '../../commands.js';
@@ -38,7 +38,7 @@ class TeamsAppListCommand extends GraphCommand {
38
38
  }
39
39
  }
40
40
  }
41
- _TeamsAppListCommand_instances = new WeakSet(), _TeamsAppListCommand_initTelemetry = function _TeamsAppListCommand_initTelemetry() {
41
+ _a = TeamsAppListCommand, _TeamsAppListCommand_instances = new WeakSet(), _TeamsAppListCommand_initTelemetry = function _TeamsAppListCommand_initTelemetry() {
42
42
  this.telemetry.push((args) => {
43
43
  Object.assign(this.telemetryProperties, {
44
44
  distributionMethod: args.options.distributionMethod || false
@@ -47,13 +47,13 @@ _TeamsAppListCommand_instances = new WeakSet(), _TeamsAppListCommand_initTelemet
47
47
  }, _TeamsAppListCommand_initOptions = function _TeamsAppListCommand_initOptions() {
48
48
  this.options.unshift({
49
49
  option: '--distributionMethod [distributionMethod]',
50
- autocomplete: TeamsAppListCommand.allowedDistributionMethods
50
+ autocomplete: _a.allowedDistributionMethods
51
51
  });
52
52
  }, _TeamsAppListCommand_initValidators = function _TeamsAppListCommand_initValidators() {
53
53
  this.validators.push(async (args) => {
54
54
  if (args.options.distributionMethod &&
55
- TeamsAppListCommand.allowedDistributionMethods.indexOf(args.options.distributionMethod) < 0) {
56
- return `'${args.options.distributionMethod}' is not a valid distributionMethod. Allowed distribution methods are: ${TeamsAppListCommand.allowedDistributionMethods.join(', ')}`;
55
+ _a.allowedDistributionMethods.indexOf(args.options.distributionMethod) < 0) {
56
+ return `'${args.options.distributionMethod}' is not a valid distributionMethod. Allowed distribution methods are: ${_a.allowedDistributionMethods.join(', ')}`;
57
57
  }
58
58
  return true;
59
59
  });
@@ -3,9 +3,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _TeamsAppRemoveCommand_instances, _TeamsAppRemoveCommand_initTelemetry, _TeamsAppRemoveCommand_initOptions, _TeamsAppRemoveCommand_initValidators;
6
+ var _TeamsAppRemoveCommand_instances, _TeamsAppRemoveCommand_initTelemetry, _TeamsAppRemoveCommand_initOptions, _TeamsAppRemoveCommand_initValidators, _TeamsAppRemoveCommand_initOptionSets;
7
7
  import { Cli } from '../../../../cli/Cli.js';
8
8
  import request from '../../../../request.js';
9
+ import { formatting } from '../../../../utils/formatting.js';
9
10
  import { validation } from '../../../../utils/validation.js';
10
11
  import GraphCommand from '../../../base/GraphCommand.js';
11
12
  import commands from '../../commands.js';
@@ -22,20 +23,21 @@ class TeamsAppRemoveCommand extends GraphCommand {
22
23
  __classPrivateFieldGet(this, _TeamsAppRemoveCommand_instances, "m", _TeamsAppRemoveCommand_initTelemetry).call(this);
23
24
  __classPrivateFieldGet(this, _TeamsAppRemoveCommand_instances, "m", _TeamsAppRemoveCommand_initOptions).call(this);
24
25
  __classPrivateFieldGet(this, _TeamsAppRemoveCommand_instances, "m", _TeamsAppRemoveCommand_initValidators).call(this);
26
+ __classPrivateFieldGet(this, _TeamsAppRemoveCommand_instances, "m", _TeamsAppRemoveCommand_initOptionSets).call(this);
25
27
  }
26
28
  async commandAction(logger, args) {
27
- const { id: appId } = args.options;
28
29
  const removeApp = async () => {
29
- if (this.verbose) {
30
- await logger.logToStderr(`Removing app with ID ${args.options.id}`);
31
- }
32
- const requestOptions = {
33
- url: `${this.resource}/v1.0/appCatalogs/teamsApps/${appId}`,
34
- headers: {
35
- accept: 'application/json;odata.metadata=none'
36
- }
37
- };
38
30
  try {
31
+ const appId = await this.getAppId(args.options, logger);
32
+ if (this.verbose) {
33
+ await logger.logToStderr(`Removing app with ID ${appId}`);
34
+ }
35
+ const requestOptions = {
36
+ url: `${this.resource}/v1.0/appCatalogs/teamsApps/${appId}`,
37
+ headers: {
38
+ accept: 'application/json;odata.metadata=none'
39
+ }
40
+ };
39
41
  await request.delete(requestOptions);
40
42
  }
41
43
  catch (err) {
@@ -50,33 +52,65 @@ class TeamsAppRemoveCommand extends GraphCommand {
50
52
  type: 'confirm',
51
53
  name: 'continue',
52
54
  default: false,
53
- message: `Are you sure you want to remove the Teams app ${appId} from the app catalog?`
55
+ message: `Are you sure you want to remove the Teams app ${args.options.id || args.options.name} from the app catalog?`
54
56
  });
55
57
  if (result.continue) {
56
58
  await removeApp();
57
59
  }
58
60
  }
59
61
  }
62
+ async getAppId(options, logger) {
63
+ if (options.id) {
64
+ return options.id;
65
+ }
66
+ if (this.verbose) {
67
+ await logger.logToStderr(`Retrieving app Id...`);
68
+ }
69
+ const requestOptions = {
70
+ url: `${this.resource}/v1.0/appCatalogs/teamsApps?$filter=displayName eq '${formatting.encodeQueryParameter(options.name)}'&$select=id`,
71
+ headers: {
72
+ accept: 'application/json;odata.metadata=none'
73
+ },
74
+ responseType: 'json'
75
+ };
76
+ const response = await request.get(requestOptions);
77
+ const app = response.value[0];
78
+ if (!app) {
79
+ throw `The specified Teams app does not exist`;
80
+ }
81
+ if (response.value.length > 1) {
82
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
83
+ const result = await Cli.handleMultipleResultsFound(`Multiple Teams apps with name '${options.name}' found.`, resultAsKeyValuePair);
84
+ return result.id;
85
+ }
86
+ return app.id;
87
+ }
60
88
  }
61
89
  _TeamsAppRemoveCommand_instances = new WeakSet(), _TeamsAppRemoveCommand_initTelemetry = function _TeamsAppRemoveCommand_initTelemetry() {
62
90
  this.telemetry.push((args) => {
63
91
  Object.assign(this.telemetryProperties, {
64
- force: (!(!args.options.force)).toString()
92
+ force: (!(!args.options.force)).toString(),
93
+ id: typeof args.options.id !== 'undefined',
94
+ name: typeof args.options.name !== 'undefined'
65
95
  });
66
96
  });
67
97
  }, _TeamsAppRemoveCommand_initOptions = function _TeamsAppRemoveCommand_initOptions() {
68
98
  this.options.unshift({
69
- option: '-i, --id <id>'
99
+ option: '-i, --id [id]'
100
+ }, {
101
+ option: '-n, --name [name]'
70
102
  }, {
71
103
  option: '-f, --force'
72
104
  });
73
105
  }, _TeamsAppRemoveCommand_initValidators = function _TeamsAppRemoveCommand_initValidators() {
74
106
  this.validators.push(async (args) => {
75
- if (!validation.isValidGuid(args.options.id)) {
107
+ if (args.options.id && !validation.isValidGuid(args.options.id)) {
76
108
  return `${args.options.id} is not a valid GUID`;
77
109
  }
78
110
  return true;
79
111
  });
112
+ }, _TeamsAppRemoveCommand_initOptionSets = function _TeamsAppRemoveCommand_initOptionSets() {
113
+ this.optionSets.push({ options: ['id', 'name'] });
80
114
  };
81
115
  export default new TeamsAppRemoveCommand();
82
116
  //# sourceMappingURL=app-remove.js.map
@@ -8,6 +8,8 @@ import request from '../../../../request.js';
8
8
  import { validation } from '../../../../utils/validation.js';
9
9
  import GraphCommand from "../../../base/GraphCommand.js";
10
10
  import commands from '../../commands.js';
11
+ import { Cli } from '../../../../cli/Cli.js';
12
+ import { formatting } from '../../../../utils/formatting.js';
11
13
  class TeamsChannelAddCommand extends GraphCommand {
12
14
  get name() {
13
15
  return commands.CHANNEL_ADD;
@@ -42,7 +44,9 @@ class TeamsChannelAddCommand extends GraphCommand {
42
44
  throw `The specified team does not exist in the Microsoft Teams`;
43
45
  }
44
46
  if (matchingTeams.length > 1) {
45
- throw `Multiple Microsoft Teams teams with name ${args.options.teamName} found: ${matchingTeams.join(', ')}`;
47
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
48
+ const result = await Cli.handleMultipleResultsFound(`Multiple Microsoft Teams teams with name ${args.options.teamName} found.`, resultAsKeyValuePair);
49
+ return result.id;
46
50
  }
47
51
  return matchingTeams[0];
48
52
  }
@@ -4,13 +4,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _TeamsChannelMemberAddCommand_instances, _TeamsChannelMemberAddCommand_initTelemetry, _TeamsChannelMemberAddCommand_initOptions, _TeamsChannelMemberAddCommand_initValidators, _TeamsChannelMemberAddCommand_initOptionSets;
7
- import os from 'os';
8
7
  import request from '../../../../request.js';
9
8
  import { aadGroup } from '../../../../utils/aadGroup.js';
10
9
  import { formatting } from '../../../../utils/formatting.js';
11
10
  import { validation } from '../../../../utils/validation.js';
12
11
  import GraphCommand from '../../../base/GraphCommand.js';
13
12
  import commands from '../../commands.js';
13
+ import { Cli } from '../../../../cli/Cli.js';
14
14
  class TeamsChannelMemberAddCommand extends GraphCommand {
15
15
  get name() {
16
16
  return commands.CHANNEL_MEMBER_ADD;
@@ -91,11 +91,11 @@ class TeamsChannelMemberAddCommand extends GraphCommand {
91
91
  return channelItem.id;
92
92
  }
93
93
  async getUserId(args) {
94
- if (args.options.userId) {
95
- return args.options.userId.split(',').map(u => u.trim());
94
+ if (args.options.userIds) {
95
+ return args.options.userIds.split(',').map(u => u.trim());
96
96
  }
97
97
  const tasks = [];
98
- const userDisplayNames = args.options.userDisplayName && args.options.userDisplayName.split(',').map(u => u.trim());
98
+ const userDisplayNames = args.options.userDisplayNames && args.options.userDisplayNames.split(',').map(u => u.trim());
99
99
  for (const userName of userDisplayNames) {
100
100
  tasks.push(this.getSingleUser(userName));
101
101
  }
@@ -115,7 +115,9 @@ class TeamsChannelMemberAddCommand extends GraphCommand {
115
115
  throw `The specified user '${userDisplayName}' does not exist`;
116
116
  }
117
117
  if (response.value.length > 1) {
118
- throw `Multiple users with display name '${userDisplayName}' found. Please disambiguate:${os.EOL}${response.value.map(x => `- ${x.id}`).join(os.EOL)}`;
118
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
119
+ const result = await Cli.handleMultipleResultsFound(`Multiple users with display name '${userDisplayName}' found.`, resultAsKeyValuePair);
120
+ return result.id;
119
121
  }
120
122
  return userItem.id;
121
123
  }
@@ -127,8 +129,8 @@ _TeamsChannelMemberAddCommand_instances = new WeakSet(), _TeamsChannelMemberAddC
127
129
  teamName: typeof args.options.teamName !== 'undefined',
128
130
  channelId: typeof args.options.channelId !== 'undefined',
129
131
  channelName: typeof args.options.channelName !== 'undefined',
130
- userId: typeof args.options.userId !== 'undefined',
131
- userDisplayName: typeof args.options.userDisplayName !== 'undefined',
132
+ userIds: typeof args.options.userIds !== 'undefined',
133
+ userDisplayNames: typeof args.options.userDisplayNames !== 'undefined',
132
134
  owner: args.options.owner
133
135
  });
134
136
  });
@@ -142,9 +144,9 @@ _TeamsChannelMemberAddCommand_instances = new WeakSet(), _TeamsChannelMemberAddC
142
144
  }, {
143
145
  option: '--channelName [channelName]'
144
146
  }, {
145
- option: '--userId [userId]'
147
+ option: '--userIds [userIds]'
146
148
  }, {
147
- option: '--userDisplayName [userDisplayName]'
149
+ option: '--userDisplayNames [userDisplayNames]'
148
150
  }, {
149
151
  option: '--owner'
150
152
  });
@@ -159,7 +161,7 @@ _TeamsChannelMemberAddCommand_instances = new WeakSet(), _TeamsChannelMemberAddC
159
161
  return true;
160
162
  });
161
163
  }, _TeamsChannelMemberAddCommand_initOptionSets = function _TeamsChannelMemberAddCommand_initOptionSets() {
162
- this.optionSets.push({ options: ['teamId', 'teamName'] }, { options: ['channelId', 'channelName'] }, { options: ['userId', 'userDisplayName'] });
164
+ this.optionSets.push({ options: ['teamId', 'teamName'] }, { options: ['channelId', 'channelName'] }, { options: ['userIds', 'userDisplayNames'] });
163
165
  };
164
166
  export default new TeamsChannelMemberAddCommand();
165
167
  //# sourceMappingURL=channel-member-add.js.map
@@ -123,7 +123,9 @@ class TeamsChannelMemberRemoveCommand extends GraphCommand {
123
123
  throw 'The specified member does not exist in the Microsoft Teams channel';
124
124
  }
125
125
  if (conversationMembers.length > 1) {
126
- throw `Multiple Microsoft Teams channel members with name ${args.options.userName} found: ${response.value.map(x => x.userId)}`;
126
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', conversationMembers);
127
+ const result = await Cli.handleMultipleResultsFound(`Multiple Microsoft Teams channel members with name ${args.options.userName} found.`, resultAsKeyValuePair);
128
+ return result.id;
127
129
  }
128
130
  return conversationMember.id;
129
131
  }
@@ -10,6 +10,7 @@ import { formatting } from '../../../../utils/formatting.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
12
12
  import commands from '../../commands.js';
13
+ import { Cli } from '../../../../cli/Cli.js';
13
14
  class TeamsChannelMemberSetCommand extends GraphCommand {
14
15
  get name() {
15
16
  return commands.CHANNEL_MEMBER_SET;
@@ -101,7 +102,9 @@ class TeamsChannelMemberSetCommand extends GraphCommand {
101
102
  throw 'The specified member does not exist in the Microsoft Teams channel';
102
103
  }
103
104
  if (conversationMembers.length > 1) {
104
- throw `Multiple Microsoft Teams channel members with name ${args.options.userName} found: ${response.value.map(x => x.userId)}`;
105
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', conversationMembers);
106
+ const result = await Cli.handleMultipleResultsFound(`Multiple Microsoft Teams channel members with name ${args.options.userName} found.`, resultAsKeyValuePair);
107
+ return result.id;
105
108
  }
106
109
  return conversationMember.id;
107
110
  }