@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
@@ -12,11 +12,12 @@ import { formatting } from '../../../../utils/formatting.js';
12
12
  import { spo } from '../../../../utils/spo.js';
13
13
  import { urlUtil } from '../../../../utils/urlUtil.js';
14
14
  import { validation } from '../../../../utils/validation.js';
15
- import aadO365GroupSetCommand from '../../../aad/commands/o365group/o365group-set.js';
15
+ import aadM365GroupSetCommand from '../../../aad/commands/m365group/m365group-set.js';
16
16
  import SpoCommand from '../../../base/SpoCommand.js';
17
17
  import commands from '../../commands.js';
18
18
  import { SharingCapabilities } from '../site/SharingCapabilities.js';
19
19
  import spoSiteDesignApplyCommand from '../sitedesign/sitedesign-apply.js';
20
+ import { FlowsPolicy } from './FlowsPolicy.js';
20
21
  class SpoSiteSetCommand extends SpoCommand {
21
22
  get name() {
22
23
  return commands.SITE_SET;
@@ -83,89 +84,69 @@ class SpoSiteSetCommand extends SpoCommand {
83
84
  await logger.logToStderr('Site is not group connected');
84
85
  }
85
86
  if (typeof args.options.isPublic !== 'undefined') {
86
- return Promise.reject(`The isPublic option can't be set on a site that is not groupified`);
87
+ throw `The isPublic option can't be set on a site that is not groupified`;
87
88
  }
88
- return this.updateSiteDescription(logger, args)
89
- .then(_ => this.updateSiteOwners(logger, args));
89
+ await this.updateSiteDescription(logger, args);
90
+ await this.updateSiteOwners(logger, args);
90
91
  }
91
- waitForSiteUpdateCompletion(logger, args, res) {
92
- return new Promise((resolve, reject) => {
93
- if (!res) {
94
- resolve();
95
- return;
96
- }
97
- const json = JSON.parse(res);
98
- const response = json[0];
99
- if (response.ErrorInfo) {
100
- reject(response.ErrorInfo.ErrorMessage);
101
- }
102
- else {
103
- const operation = json[json.length - 1];
104
- const isComplete = operation.IsComplete;
105
- if (!args.options.wait || isComplete) {
106
- resolve();
107
- return;
108
- }
109
- setTimeout(() => {
110
- spo.waitUntilFinished({
111
- operationId: JSON.stringify(operation._ObjectIdentity_),
112
- siteUrl: this.spoAdminUrl,
113
- resolve,
114
- reject,
115
- logger,
116
- currentContext: this.context,
117
- debug: this.debug,
118
- verbose: this.verbose
119
- });
120
- }, operation.PollingInterval);
121
- }
92
+ async waitForSiteUpdateCompletion(logger, args, response) {
93
+ if (!response) {
94
+ return;
95
+ }
96
+ const json = JSON.parse(response);
97
+ const responseContent = json[0];
98
+ if (responseContent.ErrorInfo) {
99
+ throw responseContent.ErrorInfo.ErrorMessage;
100
+ }
101
+ const operation = json[json.length - 1];
102
+ const isComplete = operation.IsComplete;
103
+ if (!args.options.wait || isComplete) {
104
+ return;
105
+ }
106
+ await new Promise((resolve, reject) => {
107
+ setTimeout(() => {
108
+ spo.waitUntilFinished({
109
+ operationId: JSON.stringify(operation._ObjectIdentity_),
110
+ siteUrl: this.spoAdminUrl,
111
+ resolve,
112
+ reject,
113
+ logger,
114
+ currentContext: this.context,
115
+ debug: this.debug,
116
+ verbose: this.verbose
117
+ });
118
+ }, operation.PollingInterval);
122
119
  });
123
120
  }
124
121
  async updateSiteOwners(logger, args) {
125
122
  if (!args.options.owners) {
126
- return Promise.resolve();
123
+ return;
127
124
  }
128
- return new Promise(async (resolve, reject) => {
129
- if (this.verbose) {
130
- await logger.logToStderr(`Updating site owners ${args.options.url}...`);
131
- }
132
- Promise.all(args.options.owners.split(',').map(o => {
133
- return this.setAdmin(args.options.url, o.trim());
134
- }))
135
- .then(() => {
136
- resolve();
137
- }, (err) => {
138
- reject(err);
139
- });
140
- });
125
+ if (this.verbose) {
126
+ await logger.logToStderr(`Updating site owners ${args.options.url}...`);
127
+ }
128
+ await Promise.all(args.options.owners.split(',').map(o => {
129
+ return this.setAdmin(args.options.url, o.trim());
130
+ }));
141
131
  }
142
- setAdmin(siteUrl, principal) {
143
- return new Promise((resolve, reject) => {
144
- const requestOptions = {
145
- url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
146
- headers: {
147
- 'X-RequestDigest': this.context.FormDigestValue
148
- },
149
- data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="48" ObjectPathId="47" /></Actions><ObjectPaths><Method Id="47" ParentId="34" Name="SetSiteAdmin"><Parameters><Parameter Type="String">${formatting.escapeXml(siteUrl)}</Parameter><Parameter Type="String">${formatting.escapeXml(principal)}</Parameter><Parameter Type="Boolean">true</Parameter></Parameters></Method><Constructor Id="34" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /></ObjectPaths></Request>`
150
- };
151
- return request.post(requestOptions)
152
- .then((res) => {
153
- const json = JSON.parse(res);
154
- const response = json[0];
155
- if (response.ErrorInfo) {
156
- reject(response.ErrorInfo.ErrorMessage);
157
- }
158
- else {
159
- resolve();
160
- }
161
- }, (err) => {
162
- reject(err);
163
- });
164
- });
132
+ async setAdmin(siteUrl, principal) {
133
+ const requestOptions = {
134
+ url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
135
+ headers: {
136
+ 'X-RequestDigest': this.context.FormDigestValue
137
+ },
138
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="48" ObjectPathId="47" /></Actions><ObjectPaths><Method Id="47" ParentId="34" Name="SetSiteAdmin"><Parameters><Parameter Type="String">${formatting.escapeXml(siteUrl)}</Parameter><Parameter Type="String">${formatting.escapeXml(principal)}</Parameter><Parameter Type="Boolean">true</Parameter></Parameters></Method><Constructor Id="34" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /></ObjectPaths></Request>`
139
+ };
140
+ const response = await request.post(requestOptions);
141
+ const json = JSON.parse(response);
142
+ const responseContent = json[0];
143
+ if (responseContent.ErrorInfo) {
144
+ throw responseContent.ErrorInfo.ErrorMessage;
145
+ }
165
146
  }
166
147
  async updateSiteDescription(logger, args) {
167
148
  if (!args.options.description) {
168
- return Promise.resolve(undefined);
149
+ return;
169
150
  }
170
151
  if (this.verbose) {
171
152
  await logger.logToStderr(`Setting site description ${args.options.url}...`);
@@ -184,11 +165,11 @@ class SpoSiteSetCommand extends SpoCommand {
184
165
  },
185
166
  json: true
186
167
  };
187
- return request.post(requestOptions);
168
+ await request.post(requestOptions);
188
169
  }
189
170
  async updateSiteLockState(logger, args) {
190
171
  if (!args.options.lockState) {
191
- return Promise.resolve(undefined);
172
+ return;
192
173
  }
193
174
  if (this.verbose) {
194
175
  await logger.logToStderr(`Setting site lock state ${args.options.url}...`);
@@ -206,52 +187,44 @@ class SpoSiteSetCommand extends SpoCommand {
206
187
  if (this.debug) {
207
188
  await logger.logToStderr(`Site attached to group ${this.groupId}`);
208
189
  }
209
- return new Promise((resolve, reject) => {
210
- if (typeof args.options.title === 'undefined' &&
211
- typeof args.options.description === 'undefined' &&
212
- typeof args.options.isPublic === 'undefined' &&
213
- typeof args.options.owners === 'undefined') {
214
- return resolve();
215
- }
216
- const promises = [];
217
- if (typeof args.options.title !== 'undefined') {
218
- const requestOptions = {
219
- url: `${this.spoAdminUrl}/_api/SPOGroup/UpdateGroupPropertiesBySiteId`,
220
- headers: {
221
- accept: 'application/json;odata=nometadata',
222
- 'content-type': 'application/json;charset=utf-8',
223
- 'X-RequestDigest': this.context.FormDigestValue
224
- },
225
- data: {
226
- groupId: this.groupId,
227
- siteId: this.siteId,
228
- displayName: args.options.title
229
- },
230
- responseType: 'json'
231
- };
232
- promises.push(request.post(requestOptions));
233
- }
234
- if (typeof args.options.isPublic !== 'undefined') {
235
- const commandOptions = {
236
- id: this.groupId,
237
- isPrivate: (args.options.isPublic === false),
238
- debug: this.debug,
239
- verbose: this.verbose
240
- };
241
- promises.push(Cli.executeCommand(aadO365GroupSetCommand, { options: { ...commandOptions, _: [] } }));
242
- }
243
- if (args.options.description) {
244
- promises.push(this.setGroupifiedSiteDescription(args.options.description));
245
- }
246
- promises.push(this.setGroupifiedSiteOwners(logger, args));
247
- Promise
248
- .all(promises)
249
- .then(() => {
250
- resolve();
251
- }, (error) => {
252
- reject(error);
253
- });
254
- });
190
+ if (typeof args.options.title === 'undefined' &&
191
+ typeof args.options.description === 'undefined' &&
192
+ typeof args.options.isPublic === 'undefined' &&
193
+ typeof args.options.owners === 'undefined') {
194
+ return;
195
+ }
196
+ const promises = [];
197
+ if (typeof args.options.title !== 'undefined') {
198
+ const requestOptions = {
199
+ url: `${this.spoAdminUrl}/_api/SPOGroup/UpdateGroupPropertiesBySiteId`,
200
+ headers: {
201
+ accept: 'application/json;odata=nometadata',
202
+ 'content-type': 'application/json;charset=utf-8',
203
+ 'X-RequestDigest': this.context.FormDigestValue
204
+ },
205
+ data: {
206
+ groupId: this.groupId,
207
+ siteId: this.siteId,
208
+ displayName: args.options.title
209
+ },
210
+ responseType: 'json'
211
+ };
212
+ promises.push(request.post(requestOptions));
213
+ }
214
+ if (typeof args.options.isPublic !== 'undefined') {
215
+ const commandOptions = {
216
+ id: this.groupId,
217
+ isPrivate: (args.options.isPublic === false),
218
+ debug: this.debug,
219
+ verbose: this.verbose
220
+ };
221
+ promises.push(Cli.executeCommand(aadM365GroupSetCommand, { options: { ...commandOptions, _: [] } }));
222
+ }
223
+ if (args.options.description) {
224
+ promises.push(this.setGroupifiedSiteDescription(args.options.description));
225
+ }
226
+ promises.push(this.setGroupifiedSiteOwners(logger, args));
227
+ await Promise.all(promises);
255
228
  }
256
229
  setGroupifiedSiteDescription(description) {
257
230
  const requestOptions = {
@@ -267,7 +240,7 @@ class SpoSiteSetCommand extends SpoCommand {
267
240
  }
268
241
  async setGroupifiedSiteOwners(logger, args) {
269
242
  if (typeof args.options.owners === 'undefined') {
270
- return Promise.resolve();
243
+ return;
271
244
  }
272
245
  const owners = args.options.owners.split(',').map(o => o.trim());
273
246
  if (this.verbose) {
@@ -280,28 +253,25 @@ class SpoSiteSetCommand extends SpoCommand {
280
253
  },
281
254
  responseType: 'json'
282
255
  };
283
- return request.get(requestOptions)
284
- .then((res) => {
285
- if (res.value.length === 0) {
286
- return Promise.resolve();
287
- }
288
- return Promise.all(res.value.map(user => {
289
- const requestOptions = {
290
- url: `${this.spoAdminUrl}/_api/SP.Directory.DirectorySession/Group('${this.groupId}')/Owners/Add(objectId='${user.id}', principalName='')`,
291
- headers: {
292
- 'content-type': 'application/json;odata=verbose'
293
- }
294
- };
295
- return request.post(requestOptions);
296
- }));
297
- });
256
+ const response = await request.get(requestOptions);
257
+ if (response.value.length === 0) {
258
+ return;
259
+ }
260
+ await Promise.all(response.value.map(user => {
261
+ const requestOptions = {
262
+ url: `${this.spoAdminUrl}/_api/SP.Directory.DirectorySession/Group('${this.groupId}')/Owners/Add(objectId='${user.id}', principalName='')`,
263
+ headers: {
264
+ 'content-type': 'application/json;odata=verbose'
265
+ }
266
+ };
267
+ return request.post(requestOptions);
268
+ }));
298
269
  }
299
- updateSiteProperties(logger, args) {
270
+ async updateSiteProperties(logger, args) {
300
271
  const isGroupConnectedSite = this.isGroupConnectedSite();
301
272
  const sharedProperties = ['classification', 'disableFlows', 'socialBarOnSitePagesDisabled', 'shareByEmailEnabled', 'sharingCapability', 'noScriptSite'];
302
273
  const siteProperties = ['title', 'resourceQuota', 'resourceQuotaWarningLevel', 'storageQuota', 'storageQuotaWarningLevel', 'allowSelfServiceUpgrade'];
303
274
  let properties = sharedProperties;
304
- properties = properties;
305
275
  if (!isGroupConnectedSite) {
306
276
  properties = properties.concat(siteProperties);
307
277
  }
@@ -313,71 +283,84 @@ class SpoSiteSetCommand extends SpoCommand {
313
283
  }
314
284
  }
315
285
  if (!updatedProperties) {
316
- return Promise.resolve(undefined);
317
- }
318
- return spo
319
- .ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug)
320
- .then(async (res) => {
321
- this.context = res;
322
- if (this.verbose) {
323
- await logger.logToStderr(`Updating site ${args.options.url} properties...`);
324
- }
325
- let propertyId = 27;
326
- const payload = [];
327
- if (!isGroupConnectedSite) {
328
- if (args.options.title) {
329
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="Title"><Parameter Type="String">${formatting.escapeXml(args.options.title)}</Parameter></SetProperty>`);
330
- }
331
- if (args.options.resourceQuota) {
332
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="UserCodeMaximumLevel"><Parameter Type="Double">${args.options.resourceQuota}</Parameter></SetProperty>`);
333
- }
334
- if (args.options.resourceQuotaWarningLevel) {
335
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="UserCodeWarningLevel"><Parameter Type="Double">${args.options.resourceQuotaWarningLevel}</Parameter></SetProperty>`);
336
- }
337
- if (args.options.storageQuota) {
338
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="StorageMaximumLevel"><Parameter Type="Int64">${args.options.storageQuota}</Parameter></SetProperty>`);
339
- }
340
- if (args.options.storageQuotaWarningLevel) {
341
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="StorageWarningLevel"><Parameter Type="Int64">${args.options.storageQuotaWarningLevel}</Parameter></SetProperty>`);
342
- }
343
- if (typeof args.options.allowSelfServiceUpgrade !== 'undefined') {
344
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="AllowSelfServiceUpgrade"><Parameter Type="Boolean">${args.options.allowSelfServiceUpgrade}</Parameter></SetProperty>`);
345
- }
346
- }
347
- if (typeof args.options.classification === 'string') {
348
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="Classification"><Parameter Type="String">${formatting.escapeXml(args.options.classification)}</Parameter></SetProperty>`);
286
+ return;
287
+ }
288
+ this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
289
+ if (this.verbose) {
290
+ await logger.logToStderr(`Updating site ${args.options.url} properties...`);
291
+ }
292
+ let propertyId = 27;
293
+ const payload = [];
294
+ const sitePropertiesPayload = [];
295
+ if (!isGroupConnectedSite) {
296
+ if (args.options.title) {
297
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="Title"><Parameter Type="String">${formatting.escapeXml(args.options.title)}</Parameter></SetProperty>`);
349
298
  }
350
- if (typeof args.options.disableFlows !== 'undefined') {
351
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="DisableFlows"><Parameter Type="Boolean">${args.options.disableFlows}</Parameter></SetProperty>`);
299
+ if (args.options.resourceQuota) {
300
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="UserCodeMaximumLevel"><Parameter Type="Double">${args.options.resourceQuota}</Parameter></SetProperty>`);
352
301
  }
353
- if (typeof args.options.socialBarOnSitePagesDisabled !== 'undefined') {
354
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="SocialBarOnSitePagesDisabled"><Parameter Type="Boolean">${args.options.socialBarOnSitePagesDisabled}</Parameter></SetProperty>`);
302
+ if (args.options.resourceQuotaWarningLevel) {
303
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="UserCodeWarningLevel"><Parameter Type="Double">${args.options.resourceQuotaWarningLevel}</Parameter></SetProperty>`);
355
304
  }
356
- if (typeof args.options.shareByEmailEnabled !== 'undefined') {
357
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="ShareByEmailEnabled"><Parameter Type="Boolean">${args.options.shareByEmailEnabled}</Parameter></SetProperty>`);
305
+ if (args.options.storageQuota) {
306
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="StorageMaximumLevel"><Parameter Type="Int64">${args.options.storageQuota}</Parameter></SetProperty>`);
358
307
  }
359
- if (args.options.sharingCapability) {
360
- const sharingCapability = SharingCapabilities[args.options.sharingCapability];
361
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="SharingCapability"><Parameter Type="Enum">${sharingCapability}</Parameter></SetProperty>`);
308
+ if (args.options.storageQuotaWarningLevel) {
309
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="StorageWarningLevel"><Parameter Type="Int64">${args.options.storageQuotaWarningLevel}</Parameter></SetProperty>`);
362
310
  }
363
- if (typeof args.options.noScriptSite !== 'undefined') {
364
- const noScriptSite = args.options.noScriptSite ? 2 : 1;
365
- payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="DenyAddAndCustomizePages"><Parameter Type="Enum">${noScriptSite}</Parameter></SetProperty>`);
311
+ if (args.options.allowSelfServiceUpgrade !== undefined) {
312
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="AllowSelfServiceUpgrade"><Parameter Type="Boolean">${args.options.allowSelfServiceUpgrade}</Parameter></SetProperty>`);
366
313
  }
314
+ }
315
+ if (typeof args.options.classification === 'string') {
316
+ sitePropertiesPayload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="Classification"><Parameter Type="String">${formatting.escapeXml(args.options.classification)}</Parameter></SetProperty>`);
317
+ }
318
+ if (args.options.disableFlows !== undefined) {
319
+ const flowsPolicy = args.options.disableFlows ? FlowsPolicy.Disabled : FlowsPolicy.Enabled;
320
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="DisableFlows"><Parameter Type="Enum">${flowsPolicy}</Parameter></SetProperty>`);
321
+ }
322
+ if (typeof args.options.socialBarOnSitePagesDisabled !== 'undefined') {
323
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="SocialBarOnSitePagesDisabled"><Parameter Type="Boolean">${args.options.socialBarOnSitePagesDisabled}</Parameter></SetProperty>`);
324
+ }
325
+ if (args.options.shareByEmailEnabled !== undefined) {
326
+ sitePropertiesPayload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="ShareByEmailEnabled"><Parameter Type="Boolean">${args.options.shareByEmailEnabled}</Parameter></SetProperty>`);
327
+ }
328
+ if (args.options.sharingCapability) {
329
+ const sharingCapability = SharingCapabilities[args.options.sharingCapability];
330
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="SharingCapability"><Parameter Type="Enum">${sharingCapability}</Parameter></SetProperty>`);
331
+ }
332
+ if (args.options.noScriptSite !== undefined) {
333
+ const noScriptSite = args.options.noScriptSite ? 2 : 1;
334
+ payload.push(`<SetProperty Id="${propertyId++}" ObjectPathId="5" Name="DenyAddAndCustomizePages"><Parameter Type="Enum">${noScriptSite}</Parameter></SetProperty>`);
335
+ }
336
+ let response;
337
+ let sitePropertiesResponse;
338
+ if (sitePropertiesPayload.length > 0) {
339
+ const requestOptions = {
340
+ url: `${args.options.url}/_vti_bin/client.svc/ProcessQuery`,
341
+ headers: {
342
+ 'X-RequestDigest': this.context.FormDigestValue
343
+ },
344
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions>${sitePropertiesPayload.join('')}</Actions><ObjectPaths><StaticProperty Id="1" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" /><Property Id="5" ParentId="1" Name="Site" /></ObjectPaths></Request>`
345
+ };
346
+ sitePropertiesResponse = await request.post(requestOptions);
347
+ }
348
+ if (payload.length > 0) {
367
349
  const pos = this.tenantId.indexOf('|') + 1;
368
350
  const requestOptions = {
369
351
  url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
370
352
  headers: {
371
- 'X-RequestDigest': res.FormDigestValue
353
+ 'X-RequestDigest': this.context.FormDigestValue
372
354
  },
373
355
  data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions>${payload.join('')}<ObjectPath Id="14" ObjectPathId="13" /><ObjectIdentityQuery Id="15" ObjectPathId="5" /><Query Id="16" ObjectPathId="13"><Query SelectAllProperties="false"><Properties><Property Name="IsComplete" ScalarProperty="true" /><Property Name="PollingInterval" ScalarProperty="true" /></Properties></Query></Query></Actions><ObjectPaths><Identity Id="5" Name="53d8499e-d0d2-5000-cb83-9ade5be42ca4|${this.tenantId.substr(pos, this.tenantId.indexOf('&') - pos)}&#xA;SiteProperties&#xA;${formatting.encodeQueryParameter(args.options.url)}" /><Method Id="13" ParentId="5" Name="Update" /></ObjectPaths></Request>`
374
356
  };
375
- return request.post(requestOptions);
376
- });
357
+ response = await request.post(requestOptions);
358
+ }
359
+ return response || sitePropertiesResponse;
377
360
  }
378
- applySiteDesign(logger, args) {
361
+ async applySiteDesign(logger, args) {
379
362
  if (typeof args.options.siteDesignId === 'undefined') {
380
- return Promise.resolve();
363
+ return;
381
364
  }
382
365
  const options = {
383
366
  webUrl: args.options.url,
@@ -399,16 +382,12 @@ class SpoSiteSetCommand extends SpoCommand {
399
382
  },
400
383
  responseType: 'json'
401
384
  };
402
- return request
403
- .get(requestOptions)
404
- .then(async (siteInfo) => {
405
- this.groupId = siteInfo.GroupId;
406
- this.siteId = siteInfo.Id;
407
- if (this.debug) {
408
- await logger.logToStderr(`Retrieved site IDs. siteId: ${this.siteId}, groupId: ${this.groupId}`);
409
- }
410
- return Promise.resolve();
411
- });
385
+ const siteInfo = await request.get(requestOptions);
386
+ this.groupId = siteInfo.GroupId;
387
+ this.siteId = siteInfo.Id;
388
+ if (this.debug) {
389
+ await logger.logToStderr(`Retrieved site IDs. siteId: ${this.siteId}, groupId: ${this.groupId}`);
390
+ }
412
391
  }
413
392
  isGroupConnectedSite() {
414
393
  return this.groupId !== '00000000-0000-0000-0000-000000000000';
@@ -75,7 +75,7 @@ class SpoTenantAppCatalogAddCommand extends SpoCommand {
75
75
  url: url,
76
76
  skipRecycleBin: true,
77
77
  wait: true,
78
- confirm: true,
78
+ force: true,
79
79
  verbose: this.verbose,
80
80
  debug: this.debug
81
81
  };
@@ -11,6 +11,7 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
11
11
  import { validation } from '../../../../utils/validation.js';
12
12
  import SpoCommand from '../../../base/SpoCommand.js';
13
13
  import commands from '../../commands.js';
14
+ import { Cli } from '../../../../cli/Cli.js';
14
15
  class SpoTenantApplicationCustomizerGetCommand extends SpoCommand {
15
16
  get name() {
16
17
  return commands.TENANT_APPLICATIONCUSTOMIZER_GET;
@@ -37,7 +38,7 @@ class SpoTenantApplicationCustomizerGetCommand extends SpoCommand {
37
38
  filter = `Title eq '${args.options.title}'`;
38
39
  }
39
40
  else if (args.options.id) {
40
- filter = `GUID eq '${args.options.id}'`;
41
+ filter = `Id eq '${args.options.id}'`;
41
42
  }
42
43
  else {
43
44
  filter = `TenantWideExtensionComponentId eq '${args.options.clientSideComponentId}'`;
@@ -48,11 +49,15 @@ class SpoTenantApplicationCustomizerGetCommand extends SpoCommand {
48
49
  if (listItemInstances.length === 0) {
49
50
  throw 'The specified application customizer was not found';
50
51
  }
52
+ listItemInstances.forEach(v => delete v['ID']);
51
53
  if (listItemInstances.length > 1) {
52
- throw `Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found. Please disambiguate (IDs): ${listItemInstances.map(item => item.GUID).join(', ')}`;
54
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('Id', listItemInstances);
55
+ const result = await Cli.handleMultipleResultsFound(`Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found.`, resultAsKeyValuePair);
56
+ await logger.log(result);
57
+ }
58
+ else {
59
+ await logger.log(listItemInstances[0]);
53
60
  }
54
- listItemInstances.forEach(v => delete v['ID']);
55
- await logger.log(listItemInstances[0]);
56
61
  }
57
62
  else {
58
63
  throw 'The specified application customizer was not found';
@@ -77,12 +82,12 @@ _SpoTenantApplicationCustomizerGetCommand_instances = new WeakSet(), _SpoTenantA
77
82
  }, {
78
83
  option: '-i, --id [id]'
79
84
  }, {
80
- option: '-c, --clientSideComponentId [clientSideComponentId]'
85
+ option: '-c, --clientSideComponentId [clientSideComponentId]'
81
86
  });
82
87
  }, _SpoTenantApplicationCustomizerGetCommand_initValidators = function _SpoTenantApplicationCustomizerGetCommand_initValidators() {
83
88
  this.validators.push(async (args) => {
84
- if (args.options.id && !validation.isValidGuid(args.options.id)) {
85
- return `${args.options.id} is not a valid GUID`;
89
+ if (args.options.id && isNaN(parseInt(args.options.id))) {
90
+ return `${args.options.id} is not a number`;
86
91
  }
87
92
  if (args.options.clientSideComponentId && !validation.isValidGuid(args.options.clientSideComponentId)) {
88
93
  return `${args.options.clientSideComponentId} is not a valid GUID`;
@@ -22,8 +22,9 @@ class SpoTenantApplicationCustomizerListCommand extends SpoCommand {
22
22
  }
23
23
  const listServerRelativeUrl = urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
24
24
  try {
25
- const response = await odata.getAllItems(`${appCatalogUrl}/_api/web/GetList('${formatting.encodeQueryParameter(listServerRelativeUrl)}')/items?$filter=TenantWideExtensionLocation eq 'ClientSideExtension.ApplicationCustomizer'`);
26
- await logger.log(response);
25
+ const listItems = await odata.getAllItems(`${appCatalogUrl}/_api/web/GetList('${formatting.encodeQueryParameter(listServerRelativeUrl)}')/items?$filter=TenantWideExtensionLocation eq 'ClientSideExtension.ApplicationCustomizer'`);
26
+ listItems.forEach(i => delete i.ID);
27
+ await logger.log(listItems);
27
28
  }
28
29
  catch (err) {
29
30
  this.handleRejectedODataJsonPromise(err);
@@ -66,7 +66,8 @@ class SpoTenantApplicationCustomizerRemoveCommand extends SpoCommand {
66
66
  throw 'The specified application customizer was not found';
67
67
  }
68
68
  if (listItemInstances.length > 1) {
69
- throw `Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found. Please disambiguate (IDs): ${listItemInstances.map(item => item.Id).join(', ')}`;
69
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('Id', listItemInstances);
70
+ listItemInstances[0] = await Cli.handleMultipleResultsFound(`Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found.`, resultAsKeyValuePair);
70
71
  }
71
72
  return listItemInstances[0].Id;
72
73
  }
@@ -4,7 +4,6 @@ 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 _SpoTenantApplicationCustomizerSetCommand_instances, _SpoTenantApplicationCustomizerSetCommand_initTelemetry, _SpoTenantApplicationCustomizerSetCommand_initOptions, _SpoTenantApplicationCustomizerSetCommand_initValidators, _SpoTenantApplicationCustomizerSetCommand_initOptionSets;
7
- import os from 'os';
8
7
  import { Cli } from '../../../../cli/Cli.js';
9
8
  import request from '../../../../request.js';
10
9
  import { formatting } from '../../../../utils/formatting.js';
@@ -69,7 +68,9 @@ class SpoTenantApplicationCustomizerSetCommand extends SpoCommand {
69
68
  throw 'The specified application customizer was not found';
70
69
  }
71
70
  if (listItemInstances.length > 1) {
72
- throw `Multiple application customizers with ${title ? `title '${title}'` : `ClientSideComponentId '${clientSideComponentId}'`} found. Please disambiguate using IDs: ${os.EOL}${listItemInstances.map(item => `- ${item.Id}`).join(os.EOL)}`;
71
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('Id', listItemInstances);
72
+ const result = await Cli.handleMultipleResultsFound(`Multiple application customizers with ${title ? `title '${title}'` : `ClientSideComponentId '${clientSideComponentId}'`} found.`, resultAsKeyValuePair);
73
+ return result.Id;
73
74
  }
74
75
  return listItemInstances[0].Id;
75
76
  }