@pnp/cli-microsoft365 10.0.0-beta.48e9f7d → 10.0.0-beta.558f289

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 (379) hide show
  1. package/.eslintrc.cjs +1 -0
  2. package/allCommands.json +1 -1
  3. package/allCommandsFull.json +1 -1
  4. package/dist/Auth.js +17 -16
  5. package/dist/AuthServer.js +7 -7
  6. package/dist/Command.js +4 -1
  7. package/dist/api.js +1 -1
  8. package/dist/appInsights.js +6 -4
  9. package/dist/cli/cli.js +14 -0
  10. package/dist/config.js +61 -5
  11. package/dist/m365/base/PowerAutomateCommand.js +1 -1
  12. package/dist/m365/base/SpoCommand.js +1 -1
  13. package/dist/m365/cli/commands/cli-consent.js +2 -2
  14. package/dist/m365/cli/commands/cli-doctor.js +4 -4
  15. package/dist/m365/cli/commands/config/config-set.js +12 -4
  16. package/dist/m365/cli/commands.js +1 -2
  17. package/dist/m365/commands/login.js +133 -61
  18. package/dist/m365/commands/setup.js +256 -33
  19. package/dist/m365/commands/setupPresets.js +2 -4
  20. package/dist/m365/connection/commands/connection-list.js +4 -4
  21. package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +0 -5
  22. package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +0 -5
  23. package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +0 -5
  24. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +0 -5
  25. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +0 -5
  26. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +0 -5
  27. package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +0 -5
  28. package/dist/m365/entra/commands/app/app-add.js +51 -292
  29. package/dist/m365/entra/commands/app/app-get.js +0 -5
  30. package/dist/m365/entra/commands/app/app-list.js +0 -5
  31. package/dist/m365/entra/commands/app/app-permission-add.js +0 -5
  32. package/dist/m365/entra/commands/app/app-remove.js +0 -5
  33. package/dist/m365/entra/commands/app/app-role-add.js +0 -5
  34. package/dist/m365/entra/commands/app/app-role-list.js +0 -5
  35. package/dist/m365/entra/commands/app/app-role-remove.js +0 -5
  36. package/dist/m365/entra/commands/app/app-set.js +0 -5
  37. package/dist/m365/entra/commands/approleassignment/approleassignment-add.js +0 -5
  38. package/dist/m365/entra/commands/approleassignment/approleassignment-list.js +0 -5
  39. package/dist/m365/entra/commands/approleassignment/approleassignment-remove.js +0 -5
  40. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +0 -5
  41. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +0 -5
  42. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +0 -5
  43. package/dist/m365/entra/commands/group/group-add.js +0 -4
  44. package/dist/m365/entra/commands/group/group-get.js +0 -5
  45. package/dist/m365/entra/commands/group/group-list.js +0 -5
  46. package/dist/m365/entra/commands/group/{group-user-add.js → group-member-add.js} +18 -18
  47. package/dist/m365/entra/commands/group/{group-user-list.js → group-member-list.js} +16 -21
  48. package/dist/m365/entra/commands/group/{group-user-set.js → group-member-set.js} +19 -19
  49. package/dist/m365/entra/commands/group/group-remove.js +0 -5
  50. package/dist/m365/entra/commands/groupsetting/groupsetting-add.js +0 -5
  51. package/dist/m365/entra/commands/groupsetting/groupsetting-get.js +0 -5
  52. package/dist/m365/entra/commands/groupsetting/groupsetting-list.js +0 -5
  53. package/dist/m365/entra/commands/groupsetting/groupsetting-remove.js +0 -5
  54. package/dist/m365/entra/commands/groupsetting/groupsetting-set.js +0 -5
  55. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-get.js +0 -5
  56. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-list.js +0 -5
  57. package/dist/m365/entra/commands/license/license-list.js +0 -5
  58. package/dist/m365/entra/commands/m365group/m365group-add.js +0 -5
  59. package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +0 -5
  60. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +0 -5
  61. package/dist/m365/entra/commands/m365group/m365group-get.js +0 -5
  62. package/dist/m365/entra/commands/m365group/m365group-list.js +0 -5
  63. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +0 -5
  64. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +0 -5
  65. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +0 -5
  66. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +0 -5
  67. package/dist/m365/entra/commands/m365group/m365group-remove.js +0 -5
  68. package/dist/m365/entra/commands/m365group/m365group-renew.js +0 -5
  69. package/dist/m365/entra/commands/m365group/m365group-report-activitycounts.js +0 -4
  70. package/dist/m365/entra/commands/m365group/m365group-report-activitydetail.js +0 -4
  71. package/dist/m365/entra/commands/m365group/m365group-report-activityfilecounts.js +0 -4
  72. package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +0 -4
  73. package/dist/m365/entra/commands/m365group/m365group-report-activitystorage.js +0 -4
  74. package/dist/m365/entra/commands/m365group/m365group-set.js +159 -86
  75. package/dist/m365/entra/commands/m365group/m365group-teamify.js +0 -5
  76. package/dist/m365/entra/commands/m365group/m365group-user-add.js +5 -18
  77. package/dist/m365/entra/commands/m365group/m365group-user-list.js +0 -5
  78. package/dist/m365/entra/commands/m365group/m365group-user-remove.js +84 -62
  79. package/dist/m365/entra/commands/m365group/m365group-user-set.js +3 -15
  80. package/dist/m365/entra/commands/oauth2grant/oauth2grant-add.js +0 -5
  81. package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +3 -17
  82. package/dist/m365/entra/commands/oauth2grant/oauth2grant-remove.js +0 -5
  83. package/dist/m365/entra/commands/oauth2grant/oauth2grant-set.js +0 -5
  84. package/dist/m365/entra/commands/policy/policy-list.js +0 -5
  85. package/dist/m365/entra/commands/siteclassification/siteclassification-disable.js +0 -5
  86. package/dist/m365/entra/commands/siteclassification/siteclassification-enable.js +0 -5
  87. package/dist/m365/entra/commands/siteclassification/siteclassification-get.js +0 -5
  88. package/dist/m365/entra/commands/siteclassification/siteclassification-set.js +0 -5
  89. package/dist/m365/entra/commands/user/user-add.js +0 -5
  90. package/dist/m365/entra/commands/user/user-get.js +0 -5
  91. package/dist/m365/entra/commands/user/user-guest-add.js +0 -5
  92. package/dist/m365/entra/commands/user/user-hibp.js +0 -5
  93. package/dist/m365/entra/commands/user/user-license-add.js +0 -5
  94. package/dist/m365/entra/commands/user/user-license-list.js +0 -5
  95. package/dist/m365/entra/commands/user/user-license-remove.js +0 -5
  96. package/dist/m365/entra/commands/user/user-list.js +0 -5
  97. package/dist/m365/entra/commands/user/user-password-validate.js +0 -5
  98. package/dist/m365/entra/commands/user/user-recyclebinitem-clear.js +0 -5
  99. package/dist/m365/entra/commands/user/user-recyclebinitem-list.js +0 -5
  100. package/dist/m365/entra/commands/user/user-recyclebinitem-remove.js +0 -5
  101. package/dist/m365/entra/commands/user/user-recyclebinitem-restore.js +0 -5
  102. package/dist/m365/entra/commands/user/user-registrationdetails-list.js +0 -4
  103. package/dist/m365/entra/commands/user/user-remove.js +0 -5
  104. package/dist/m365/entra/commands/user/user-set.js +0 -5
  105. package/dist/m365/entra/commands/user/user-signin-list.js +0 -5
  106. package/dist/m365/entra/commands.js +3 -3
  107. package/dist/m365/external/commands/item/item-add.js +2 -5
  108. package/dist/m365/file/commands/file-move.js +135 -0
  109. package/dist/m365/file/commands.js +2 -1
  110. package/dist/m365/flow/commands/environment/environment-get.js +1 -1
  111. package/dist/m365/flow/commands/environment/environment-list.js +2 -2
  112. package/dist/m365/flow/commands/flow-disable.js +1 -1
  113. package/dist/m365/flow/commands/flow-enable.js +1 -1
  114. package/dist/m365/flow/commands/flow-export.js +17 -16
  115. package/dist/m365/flow/commands/flow-get.js +1 -1
  116. package/dist/m365/flow/commands/flow-list.js +1 -1
  117. package/dist/m365/flow/commands/flow-remove.js +1 -1
  118. package/dist/m365/flow/commands/owner/owner-ensure.js +1 -1
  119. package/dist/m365/flow/commands/owner/owner-list.js +1 -1
  120. package/dist/m365/flow/commands/owner/owner-remove.js +1 -1
  121. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-list.js +47 -0
  122. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-restore.js +48 -0
  123. package/dist/m365/flow/commands/run/run-cancel.js +1 -1
  124. package/dist/m365/flow/commands/run/run-get.js +1 -1
  125. package/dist/m365/flow/commands/run/run-list.js +1 -1
  126. package/dist/m365/flow/commands/run/run-resubmit.js +2 -2
  127. package/dist/m365/flow/commands.js +2 -0
  128. package/dist/m365/pa/commands/app/app-list.js +1 -6
  129. package/dist/m365/pa/commands/connector/connector-list.js +1 -6
  130. package/dist/m365/pa/commands/environment/environment-list.js +1 -1
  131. package/dist/m365/pp/commands/environment/environment-list.js +1 -1
  132. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0.js +27 -0
  133. package/dist/m365/spfx/commands/project/project-doctor/rules/FN002021_DEVDEP_rushstack_eslint_config.js +10 -0
  134. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  135. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0.js +59 -0
  136. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  137. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  138. package/dist/m365/spo/commands/app/app-instance-list.js +3 -18
  139. package/dist/m365/spo/commands/app/app-list.js +1 -8
  140. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +8 -8
  141. package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +2 -2
  142. package/dist/m365/spo/commands/feature/feature-list.js +1 -8
  143. package/dist/m365/spo/commands/file/file-copy.js +11 -7
  144. package/dist/m365/spo/commands/file/file-move.js +55 -33
  145. package/dist/m365/spo/commands/file/file-remove.js +7 -1
  146. package/dist/m365/spo/commands/file/file-roleassignment-add.js +17 -54
  147. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +13 -40
  148. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +5 -13
  149. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +5 -13
  150. package/dist/m365/spo/commands/folder/folder-copy.js +43 -35
  151. package/dist/m365/spo/commands/folder/folder-move.js +43 -35
  152. package/dist/m365/spo/commands/folder/folder-sharinglink-add.js +143 -0
  153. package/dist/m365/spo/commands/folder/folder-sharinglink-clear.js +111 -0
  154. package/dist/m365/spo/commands/folder/folder-sharinglink-remove.js +95 -0
  155. package/dist/m365/spo/commands/folder/folder-sharinglink-set.js +90 -0
  156. package/dist/m365/spo/commands/group/group-member-add.js +3 -23
  157. package/dist/m365/spo/commands/group/group-member-remove.js +1 -18
  158. package/dist/m365/spo/commands/list/list-get.js +17 -4
  159. package/dist/m365/spo/commands/list/list-remove.js +14 -4
  160. package/dist/m365/spo/commands/list/list-webhook-list.js +1 -6
  161. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +1 -8
  162. package/dist/m365/spo/commands/page/page-list.js +1 -1
  163. package/dist/m365/spo/commands/page/page-publish.js +54 -0
  164. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  165. package/dist/m365/spo/commands/page/page-section-add.js +185 -34
  166. package/dist/m365/spo/commands/page/page-template-list.js +1 -3
  167. package/dist/m365/spo/commands/site/SiteAdmin.js +2 -0
  168. package/dist/m365/spo/commands/site/site-admin-add.js +252 -0
  169. package/dist/m365/spo/commands/site/site-admin-list.js +10 -36
  170. package/dist/m365/spo/commands/site/site-admin-remove.js +194 -0
  171. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  172. package/dist/m365/spo/commands/sitescript/sitescript-get.js +3 -2
  173. package/dist/m365/spo/commands/sitescript/sitescript-list.js +1 -3
  174. package/dist/m365/spo/commands/tenant/SPOTenantSitePropertiesEnumerable.js +2 -0
  175. package/dist/m365/spo/commands/tenant/TenantSiteProperties.js +2 -0
  176. package/dist/m365/spo/commands/{site/site-list.js → tenant/tenant-site-list.js} +15 -12
  177. package/dist/m365/spo/commands/tenant/tenant-site-membership-list.js +118 -0
  178. package/dist/m365/spo/commands/{site/site-rename.js → tenant/tenant-site-rename.js} +29 -32
  179. package/dist/m365/spo/commands/theme/theme-list.js +1 -1
  180. package/dist/m365/spo/commands/user/user-ensure.js +1 -11
  181. package/dist/m365/spo/commands/user/user-get.js +67 -9
  182. package/dist/m365/spo/commands/userprofile/userprofile-get.js +1 -1
  183. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +1 -6
  184. package/dist/m365/spo/commands.js +11 -1
  185. package/dist/m365/spp/commands/contentcenter/contentcenter-list.js +56 -0
  186. package/dist/m365/spp/commands/model/model-list.js +57 -0
  187. package/dist/m365/spp/commands.js +6 -0
  188. package/dist/m365/teams/MeetingTranscript.js +2 -0
  189. package/dist/m365/teams/commands/cache/cache-remove.js +74 -34
  190. package/dist/m365/teams/commands/channel/channel-get.js +15 -50
  191. package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
  192. package/dist/m365/teams/commands/tab/tab-list.js +5 -3
  193. package/dist/m365/teams/commands/team/team-get.js +16 -21
  194. package/dist/m365/teams/commands.js +1 -0
  195. package/dist/m365/viva/commands/engage/Community.js +2 -0
  196. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  197. package/dist/m365/viva/commands/engage/engage-community-user-list.js +98 -0
  198. package/dist/m365/viva/commands.js +2 -0
  199. package/dist/request.js +46 -61
  200. package/dist/settingsNames.js +6 -1
  201. package/dist/telemetryRunner.js +2 -2
  202. package/dist/utils/entraApp.js +283 -0
  203. package/dist/utils/spo.js +166 -29
  204. package/dist/utils/spp.js +22 -0
  205. package/dist/utils/teams.js +47 -5
  206. package/dist/utils/timersUtil.js +13 -0
  207. package/dist/utils/urlUtil.js +8 -0
  208. package/dist/utils/vivaEngage.js +61 -0
  209. package/dist/utils/zod.js +12 -3
  210. package/docs/docs/_clisettings.mdx +6 -1
  211. package/docs/docs/cmd/cli/cli-doctor.mdx +24 -23
  212. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-add.mdx +0 -6
  213. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-get.mdx +0 -6
  214. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-list.mdx +0 -6
  215. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +0 -6
  216. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-get.mdx +0 -6
  217. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-list.mdx +0 -6
  218. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-remove.mdx +0 -6
  219. package/docs/docs/cmd/entra/app/app-add.mdx +0 -1
  220. package/docs/docs/cmd/entra/app/app-get.mdx +0 -1
  221. package/docs/docs/cmd/entra/app/app-list.mdx +0 -1
  222. package/docs/docs/cmd/entra/app/app-permission-add.mdx +0 -1
  223. package/docs/docs/cmd/entra/app/app-permission-list.mdx +0 -6
  224. package/docs/docs/cmd/entra/app/app-remove.mdx +0 -1
  225. package/docs/docs/cmd/entra/app/app-role-add.mdx +0 -1
  226. package/docs/docs/cmd/entra/app/app-role-list.mdx +0 -1
  227. package/docs/docs/cmd/entra/app/app-role-remove.mdx +0 -1
  228. package/docs/docs/cmd/entra/app/app-set.mdx +0 -1
  229. package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +0 -6
  230. package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +0 -6
  231. package/docs/docs/cmd/entra/approleassignment/approleassignment-remove.mdx +0 -6
  232. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +0 -1
  233. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +0 -1
  234. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +0 -1
  235. package/docs/docs/cmd/entra/group/group-add.mdx +0 -6
  236. package/docs/docs/cmd/entra/group/group-get.mdx +0 -6
  237. package/docs/docs/cmd/entra/group/group-list.mdx +0 -6
  238. package/docs/docs/cmd/entra/group/group-member-add.mdx +62 -0
  239. package/docs/docs/cmd/entra/group/{group-user-list.mdx → group-member-list.mdx} +14 -20
  240. package/docs/docs/cmd/entra/group/group-member-set.mdx +62 -0
  241. package/docs/docs/cmd/entra/group/group-remove.mdx +0 -6
  242. package/docs/docs/cmd/entra/groupsetting/groupsetting-add.mdx +0 -6
  243. package/docs/docs/cmd/entra/groupsetting/groupsetting-get.mdx +0 -6
  244. package/docs/docs/cmd/entra/groupsetting/groupsetting-list.mdx +0 -6
  245. package/docs/docs/cmd/entra/groupsetting/groupsetting-remove.mdx +0 -6
  246. package/docs/docs/cmd/entra/groupsetting/groupsetting-set.mdx +0 -6
  247. package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-get.mdx +0 -6
  248. package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-list.mdx +0 -6
  249. package/docs/docs/cmd/entra/license/license-list.mdx +0 -6
  250. package/docs/docs/cmd/entra/m365group/m365group-add.mdx +0 -6
  251. package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +0 -6
  252. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +0 -6
  253. package/docs/docs/cmd/entra/m365group/m365group-get.mdx +0 -6
  254. package/docs/docs/cmd/entra/m365group/m365group-list.mdx +0 -6
  255. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-clear.mdx +0 -6
  256. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +0 -6
  257. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-remove.mdx +0 -6
  258. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-restore.mdx +0 -6
  259. package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +0 -6
  260. package/docs/docs/cmd/entra/m365group/m365group-renew.mdx +0 -6
  261. package/docs/docs/cmd/entra/m365group/m365group-report-activitycounts.mdx +0 -6
  262. package/docs/docs/cmd/entra/m365group/m365group-report-activitydetail.mdx +0 -6
  263. package/docs/docs/cmd/entra/m365group/m365group-report-activityfilecounts.mdx +0 -6
  264. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +2 -8
  265. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +3 -9
  266. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +38 -23
  267. package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +5 -11
  268. package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +5 -14
  269. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +0 -12
  270. package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +26 -21
  271. package/docs/docs/cmd/entra/m365group/m365group-user-set.mdx +4 -17
  272. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -9
  273. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -7
  274. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +4 -10
  275. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +3 -9
  276. package/docs/docs/cmd/entra/policy/policy-list.mdx +3 -9
  277. package/docs/docs/cmd/entra/siteclassification/siteclassification-disable.mdx +3 -9
  278. package/docs/docs/cmd/entra/siteclassification/siteclassification-enable.mdx +7 -13
  279. package/docs/docs/cmd/entra/siteclassification/siteclassification-get.mdx +1 -7
  280. package/docs/docs/cmd/entra/siteclassification/siteclassification-set.mdx +8 -14
  281. package/docs/docs/cmd/entra/user/user-add.mdx +4 -10
  282. package/docs/docs/cmd/entra/user/user-get.mdx +7 -13
  283. package/docs/docs/cmd/entra/user/user-guest-add.mdx +3 -9
  284. package/docs/docs/cmd/entra/user/user-hibp.mdx +2 -8
  285. package/docs/docs/cmd/entra/user/user-license-add.mdx +0 -6
  286. package/docs/docs/cmd/entra/user/user-license-list.mdx +0 -6
  287. package/docs/docs/cmd/entra/user/user-license-remove.mdx +2 -8
  288. package/docs/docs/cmd/entra/user/user-list.mdx +1 -7
  289. package/docs/docs/cmd/entra/user/user-password-validate.mdx +1 -7
  290. package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +2 -8
  291. package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +0 -6
  292. package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +2 -8
  293. package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +0 -6
  294. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +7 -13
  295. package/docs/docs/cmd/entra/user/user-remove.mdx +2 -8
  296. package/docs/docs/cmd/entra/user/user-set.mdx +0 -6
  297. package/docs/docs/cmd/entra/user/user-signin-list.mdx +9 -15
  298. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  299. package/docs/docs/cmd/file/file-move.mdx +79 -0
  300. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-list.mdx +132 -0
  301. package/docs/docs/cmd/flow/recyclebinitem/recyclebinitem-restore.mdx +55 -0
  302. package/docs/docs/cmd/login.mdx +9 -0
  303. package/docs/docs/cmd/setup.mdx +17 -6
  304. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  305. package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
  306. package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
  307. package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
  308. package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
  309. package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
  310. package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
  311. package/docs/docs/cmd/spo/contenttype/contenttype-field-remove.mdx +7 -7
  312. package/docs/docs/cmd/spo/contenttype/contenttype-field-set.mdx +2 -2
  313. package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
  314. package/docs/docs/cmd/spo/file/file-move.mdx +116 -11
  315. package/docs/docs/cmd/spo/file/file-remove.mdx +13 -4
  316. package/docs/docs/cmd/spo/folder/folder-copy.mdx +84 -13
  317. package/docs/docs/cmd/spo/folder/folder-move.mdx +84 -13
  318. package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +125 -0
  319. package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +50 -0
  320. package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +50 -0
  321. package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +116 -0
  322. package/docs/docs/cmd/spo/group/group-member-add.mdx +8 -14
  323. package/docs/docs/cmd/spo/group/group-member-remove.mdx +5 -11
  324. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  325. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  326. package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
  327. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
  328. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
  329. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
  330. package/docs/docs/cmd/spo/list/list-remove.mdx +10 -1
  331. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
  332. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
  333. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
  334. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
  335. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
  336. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
  337. package/docs/docs/cmd/spo/page/page-publish.mdx +41 -0
  338. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  339. package/docs/docs/cmd/spo/page/page-section-add.mdx +57 -2
  340. package/docs/docs/cmd/spo/site/site-admin-add.mdx +67 -0
  341. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  342. package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
  343. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  344. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
  345. package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
  346. package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
  347. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  348. package/docs/docs/cmd/spo/sitescript/sitescript-get.mdx +14 -1
  349. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  350. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  351. package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
  352. package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
  353. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
  354. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
  355. package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
  356. package/docs/docs/cmd/spo/{site/site-list.mdx → tenant/tenant-site-list.mdx} +19 -11
  357. package/docs/docs/cmd/spo/tenant/tenant-site-membership-list.mdx +122 -0
  358. package/docs/docs/cmd/spo/{site/site-rename.mdx → tenant/tenant-site-rename.mdx} +7 -7
  359. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  360. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  361. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  362. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  363. package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
  364. package/docs/docs/cmd/spo/user/user-ensure.mdx +2 -5
  365. package/docs/docs/cmd/spo/user/user-get.mdx +35 -9
  366. package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +287 -0
  367. package/docs/docs/cmd/spp/model/model-list.mdx +140 -0
  368. package/docs/docs/cmd/teams/cache/cache-remove.mdx +10 -1
  369. package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
  370. package/docs/docs/cmd/teams/tab/tab-list.mdx +1 -2
  371. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  372. package/docs/docs/cmd/viva/engage/engage-community-user-list.mdx +123 -0
  373. package/npm-shrinkwrap.json +2215 -717
  374. package/package.json +20 -21
  375. package/dist/m365/cli/commands/cli-reconsent.js +0 -30
  376. package/dist/m365/entra/aadCommands.js +0 -89
  377. package/docs/docs/cmd/cli/cli-reconsent.mdx +0 -62
  378. package/docs/docs/cmd/entra/group/group-user-add.mdx +0 -62
  379. package/docs/docs/cmd/entra/group/group-user-set.mdx +0 -62
@@ -3,13 +3,14 @@ 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 _SpoPageSectionAddCommand_instances, _a, _SpoPageSectionAddCommand_initTelemetry, _SpoPageSectionAddCommand_initOptions, _SpoPageSectionAddCommand_initValidators;
6
+ var _SpoPageSectionAddCommand_instances, _SpoPageSectionAddCommand_initTelemetry, _SpoPageSectionAddCommand_initOptions, _SpoPageSectionAddCommand_initValidators, _SpoPageSectionAddCommand_initTypes;
7
+ import { v4 } from 'uuid';
7
8
  import request from '../../../../request.js';
8
9
  import { formatting } from '../../../../utils/formatting.js';
9
10
  import { validation } from '../../../../utils/validation.js';
10
11
  import SpoCommand from '../../../base/SpoCommand.js';
11
12
  import commands from '../../commands.js';
12
- import { CanvasSectionTemplate, ZoneEmphasis } from './clientsidepages.js';
13
+ import { CanvasSectionTemplate } from './clientsidepages.js';
13
14
  class SpoPageSectionAddCommand extends SpoCommand {
14
15
  get name() {
15
16
  return commands.PAGE_SECTION_ADD;
@@ -20,13 +21,18 @@ class SpoPageSectionAddCommand extends SpoCommand {
20
21
  constructor() {
21
22
  super();
22
23
  _SpoPageSectionAddCommand_instances.add(this);
24
+ this.sectionTemplate = ['OneColumn', 'OneColumnFullWidth', 'TwoColumn', 'ThreeColumn', 'TwoColumnLeft', 'TwoColumnRight', 'Vertical'];
25
+ this.zoneEmphasis = ['None', 'Neutral', 'Soft', 'Strong', 'Image', 'Gradient'];
26
+ this.iconAlignment = ['Left', 'Right'];
27
+ this.fillMode = ['ScaleToFill', 'ScaleToFit', 'Tile', 'OriginalSize'];
23
28
  __classPrivateFieldGet(this, _SpoPageSectionAddCommand_instances, "m", _SpoPageSectionAddCommand_initTelemetry).call(this);
24
29
  __classPrivateFieldGet(this, _SpoPageSectionAddCommand_instances, "m", _SpoPageSectionAddCommand_initOptions).call(this);
25
30
  __classPrivateFieldGet(this, _SpoPageSectionAddCommand_instances, "m", _SpoPageSectionAddCommand_initValidators).call(this);
31
+ __classPrivateFieldGet(this, _SpoPageSectionAddCommand_instances, "m", _SpoPageSectionAddCommand_initTypes).call(this);
26
32
  }
27
33
  async commandAction(logger, args) {
28
34
  let pageFullName = args.options.pageName.toLowerCase();
29
- if (pageFullName.indexOf('.aspx') < 0) {
35
+ if (!pageFullName.endsWith('.aspx')) {
30
36
  pageFullName += '.aspx';
31
37
  }
32
38
  let canvasContent;
@@ -66,11 +72,22 @@ class SpoPageSectionAddCommand extends SpoCommand {
66
72
  .sort();
67
73
  // zoneIndex for the new section to add
68
74
  const zoneIndex = this.getSectionIndex(zoneIndices, args.options.order);
75
+ let zoneId;
76
+ let backgroundControlToAdd = undefined;
77
+ if (args.options.zoneEmphasis && ['image', 'gradient'].includes(args.options.zoneEmphasis.toLowerCase())) {
78
+ zoneId = v4();
79
+ // get background control based on control type 14
80
+ const backgroundControl = canvasContent.find(c => c.controlType === 14);
81
+ backgroundControlToAdd = this.setBackgroundControl(zoneId, backgroundControl, args);
82
+ if (!backgroundControl) {
83
+ canvasContent.push(backgroundControlToAdd);
84
+ }
85
+ }
69
86
  // get the list of columns to insert based on the selected template
70
- const columnsToAdd = this.getColumns(zoneIndex, args.options.sectionTemplate, args.options.zoneEmphasis, args.options.isLayoutReflowOnTop);
87
+ const columnsToAdd = this.getColumns(zoneIndex, args, zoneId);
71
88
  // insert the column in the right place in the array so that
72
89
  // it stays sorted ascending by zoneIndex
73
- let pos = canvasContent.findIndex(c => typeof c.controlType === 'undefined' && c.position.zoneIndex > zoneIndex);
90
+ let pos = canvasContent.findIndex(c => typeof c.controlType === 'undefined' && c.position && c.position.zoneIndex > zoneIndex);
74
91
  if (pos === -1) {
75
92
  pos = canvasContent.length - 1;
76
93
  }
@@ -107,71 +124,146 @@ class SpoPageSectionAddCommand extends SpoCommand {
107
124
  }
108
125
  return zoneIndices[order - 2] + ((zoneIndices[order - 1] - zoneIndices[order - 2]) / 2);
109
126
  }
110
- getColumns(zoneIndex, sectionTemplate, zoneEmphasis, isLayoutReflowOnTop) {
127
+ getColumns(zoneIndex, args, zoneId) {
111
128
  const columns = [];
112
129
  let sectionIndex = 1;
113
- switch (sectionTemplate) {
130
+ switch (args.options.sectionTemplate) {
114
131
  case 'OneColumnFullWidth':
115
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 0, zoneEmphasis));
132
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 0, args, zoneId));
116
133
  break;
117
134
  case 'TwoColumn':
118
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 6, zoneEmphasis));
119
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 6, zoneEmphasis));
135
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 6, args, zoneId));
136
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 6, args, zoneId));
120
137
  break;
121
138
  case 'ThreeColumn':
122
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, zoneEmphasis));
123
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, zoneEmphasis));
124
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, zoneEmphasis));
139
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, args, zoneId));
140
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, args, zoneId));
141
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, args, zoneId));
125
142
  break;
126
143
  case 'TwoColumnLeft':
127
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 8, zoneEmphasis));
128
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, zoneEmphasis));
144
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 8, args, zoneId));
145
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, args, zoneId));
129
146
  break;
130
147
  case 'TwoColumnRight':
131
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, zoneEmphasis));
132
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 8, zoneEmphasis));
148
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 4, args, zoneId));
149
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 8, args, zoneId));
133
150
  break;
134
151
  case 'Vertical':
135
- columns.push(this.getVerticalColumn(zoneEmphasis, isLayoutReflowOnTop));
152
+ columns.push(this.getVerticalColumn(args, zoneId));
136
153
  break;
137
154
  case 'OneColumn':
138
155
  default:
139
- columns.push(this.getColumn(zoneIndex, sectionIndex++, 12, zoneEmphasis));
156
+ columns.push(this.getColumn(zoneIndex, sectionIndex++, 12, args, zoneId));
140
157
  break;
141
158
  }
142
159
  return columns;
143
160
  }
144
- getColumn(zoneIndex, sectionIndex, sectionFactor, zoneEmphasis) {
161
+ getColumn(zoneIndex, sectionIndex, sectionFactor, args, zoneId) {
162
+ const { zoneEmphasis, isCollapsibleSection, isExpanded, showDivider, iconAlignment } = args.options;
145
163
  const columnValue = {
146
164
  displayMode: 2,
147
165
  position: {
148
166
  zoneIndex: zoneIndex,
149
167
  sectionIndex: sectionIndex,
150
168
  sectionFactor: sectionFactor,
151
- layoutIndex: 1
169
+ layoutIndex: 1,
170
+ zoneId: zoneId
152
171
  },
153
172
  emphasis: {}
154
173
  };
155
- if (zoneEmphasis) {
156
- const zoneEmphasisValue = ZoneEmphasis[zoneEmphasis];
174
+ if (zoneEmphasis && ['none', 'neutral', 'soft', 'strong'].includes(zoneEmphasis?.toLocaleLowerCase())) {
175
+ // Just these zoneEmphasis values should be added to column emphasis
176
+ const zoneEmphasisValue = ['none', 'neutral', 'soft', 'strong'].indexOf(zoneEmphasis.toLocaleLowerCase());
157
177
  columnValue.emphasis = { zoneEmphasis: zoneEmphasisValue };
158
178
  }
179
+ if (isCollapsibleSection) {
180
+ columnValue.zoneGroupMetadata = {
181
+ type: 1,
182
+ isExpanded: !!isExpanded,
183
+ showDividerLine: !!showDivider,
184
+ iconAlignment: iconAlignment && iconAlignment.toLocaleLowerCase() === "right" ? "right" : "left"
185
+ };
186
+ }
159
187
  return columnValue;
160
188
  }
161
- getVerticalColumn(zoneEmphasis, isLayoutReflowOnTop) {
162
- const columnValue = this.getColumn(1, 1, 12, zoneEmphasis);
163
- columnValue.position.isLayoutReflowOnTop = isLayoutReflowOnTop !== undefined ? true : false;
189
+ getVerticalColumn(args, zoneId) {
190
+ const columnValue = this.getColumn(1, 1, 12, args, zoneId);
191
+ columnValue.position.isLayoutReflowOnTop = args.options.isLayoutReflowOnTop !== undefined;
164
192
  columnValue.position.layoutIndex = 2;
165
193
  columnValue.position.controlIndex = 1;
166
194
  return columnValue;
167
195
  }
196
+ setBackgroundControl(zoneId, backgroundControl, args) {
197
+ const { overlayColor, overlayOpacity, useLightText, imageUrl } = args.options;
198
+ const backgroundDetails = this.getBackgroundDetails(args);
199
+ if (!backgroundControl) {
200
+ backgroundControl = {
201
+ controlType: 14,
202
+ webPartData: {
203
+ properties: {
204
+ zoneBackground: {}
205
+ },
206
+ serverProcessedContent: {
207
+ htmlStrings: {},
208
+ searchablePlainTexts: {},
209
+ imageSources: {},
210
+ links: {}
211
+ },
212
+ dataVersion: "1.0"
213
+ }
214
+ };
215
+ }
216
+ backgroundControl.webPartData.properties.zoneBackground[zoneId] = {
217
+ ...backgroundDetails,
218
+ useLightText: !!useLightText,
219
+ overlay: {
220
+ color: overlayColor ? overlayColor : "#FFFFFF",
221
+ opacity: overlayOpacity ? overlayOpacity : 60
222
+ }
223
+ };
224
+ if (imageUrl && backgroundControl.webPartData.serverProcessedContent.imageSources) {
225
+ backgroundControl.webPartData.serverProcessedContent.imageSources[`zoneBackground.${zoneId}.imageData.url`] = imageUrl;
226
+ }
227
+ return backgroundControl;
228
+ }
229
+ getBackgroundDetails(args) {
230
+ const { gradientText, imageUrl, imageHeight, imageWidth, fillMode } = args.options;
231
+ const backgroundDetails = {};
232
+ if (gradientText) {
233
+ backgroundDetails.type = "gradient";
234
+ backgroundDetails.gradient = gradientText;
235
+ }
236
+ if (imageUrl) {
237
+ backgroundDetails.type = "image";
238
+ backgroundDetails.imageData = {
239
+ source: 2,
240
+ fileName: "sectionbackground.jpg",
241
+ height: imageHeight ? imageHeight : 955,
242
+ width: imageWidth ? imageWidth : 555
243
+ };
244
+ backgroundDetails.fillMode = fillMode ? this.fillMode.indexOf(fillMode) : 0;
245
+ }
246
+ return backgroundDetails;
247
+ }
168
248
  }
169
- _a = SpoPageSectionAddCommand, _SpoPageSectionAddCommand_instances = new WeakSet(), _SpoPageSectionAddCommand_initTelemetry = function _SpoPageSectionAddCommand_initTelemetry() {
249
+ _SpoPageSectionAddCommand_instances = new WeakSet(), _SpoPageSectionAddCommand_initTelemetry = function _SpoPageSectionAddCommand_initTelemetry() {
170
250
  this.telemetry.push((args) => {
171
251
  Object.assign(this.telemetryProperties, {
172
252
  order: typeof args.options.order !== 'undefined',
173
253
  zoneEmphasis: typeof args.options.zoneEmphasis !== 'undefined',
174
- isLayoutReflowOnTop: !!args.options.isLayoutReflowOnTop
254
+ isLayoutReflowOnTop: !!args.options.isLayoutReflowOnTop,
255
+ isCollapsibleSection: !!args.options.isCollapsibleSection,
256
+ showDivider: !!typeof args.options.showDivider,
257
+ iconAlignment: typeof args.options.iconAlignment !== 'undefined',
258
+ isExpanded: !!args.options.isExpanded,
259
+ gradientText: typeof args.options.gradientText !== 'undefined',
260
+ imageUrl: typeof args.options.imageUrl !== 'undefined',
261
+ imageHeight: typeof args.options.imageHeight !== 'undefined',
262
+ imageWidth: typeof args.options.imageWidth !== 'undefined',
263
+ fillMode: typeof args.options.fillMode !== 'undefined',
264
+ useLightText: !!args.options.useLightText,
265
+ overlayColor: typeof args.options.overlayColor !== 'undefined',
266
+ overlayOpacity: typeof args.options.overlayOpacity !== 'undefined'
175
267
  });
176
268
  });
177
269
  }, _SpoPageSectionAddCommand_initOptions = function _SpoPageSectionAddCommand_initOptions() {
@@ -181,14 +273,40 @@ _a = SpoPageSectionAddCommand, _SpoPageSectionAddCommand_instances = new WeakSet
181
273
  option: '-u, --webUrl <webUrl>'
182
274
  }, {
183
275
  option: '-t, --sectionTemplate <sectionTemplate>',
184
- autocomplete: _a.SectionTemplate
276
+ autocomplete: this.sectionTemplate
185
277
  }, {
186
278
  option: '--order [order]'
187
279
  }, {
188
280
  option: '--zoneEmphasis [zoneEmphasis]',
189
- autocomplete: _a.ZoneEmphasis
281
+ autocomplete: this.zoneEmphasis
190
282
  }, {
191
283
  option: '--isLayoutReflowOnTop'
284
+ }, {
285
+ option: '--isCollapsibleSection'
286
+ }, {
287
+ option: '--showDivider'
288
+ }, {
289
+ option: '--iconAlignment [iconAlignment]',
290
+ autocomplete: this.iconAlignment
291
+ }, {
292
+ option: '--isExpanded'
293
+ }, {
294
+ option: '--gradientText [gradientText]'
295
+ }, {
296
+ option: '--imageUrl [imageUrl]'
297
+ }, {
298
+ option: '--imageHeight [imageHeight]'
299
+ }, {
300
+ option: '--imageWidth [imageWidth]'
301
+ }, {
302
+ option: '--fillMode [fillMode]',
303
+ autocomplete: this.fillMode
304
+ }, {
305
+ option: '--useLightText'
306
+ }, {
307
+ option: '--overlayColor [overlayColor]'
308
+ }, {
309
+ option: '--overlayOpacity [overlayOpacity]'
192
310
  });
193
311
  }, _SpoPageSectionAddCommand_initValidators = function _SpoPageSectionAddCommand_initValidators() {
194
312
  this.validators.push(async (args) => {
@@ -201,8 +319,8 @@ _a = SpoPageSectionAddCommand, _SpoPageSectionAddCommand_instances = new WeakSet
201
319
  }
202
320
  }
203
321
  if (typeof args.options.zoneEmphasis !== 'undefined') {
204
- if (!(args.options.zoneEmphasis in ZoneEmphasis)) {
205
- return 'The value of parameter zoneEmphasis must be None|Neutral|Soft|Strong';
322
+ if (!this.zoneEmphasis.some(zoneEmphasisValue => zoneEmphasisValue.toLocaleLowerCase() === args.options.zoneEmphasis?.toLowerCase())) {
323
+ return `The value of parameter zoneEmphasis must be ${this.zoneEmphasis.join(', ')}`;
206
324
  }
207
325
  }
208
326
  if (typeof args.options.isLayoutReflowOnTop !== 'undefined') {
@@ -210,10 +328,43 @@ _a = SpoPageSectionAddCommand, _SpoPageSectionAddCommand_instances = new WeakSet
210
328
  return 'Specify isLayoutReflowOnTop when the sectionTemplate is set to Vertical.';
211
329
  }
212
330
  }
331
+ if (typeof args.options.iconAlignment !== 'undefined') {
332
+ if (!this.iconAlignment.some(iconAlignmentValue => iconAlignmentValue.toLocaleLowerCase() === args.options.iconAlignment?.toLowerCase())) {
333
+ return `The value of parameter iconAlignment must be ${this.iconAlignment.join(', ')}`;
334
+ }
335
+ }
336
+ if (typeof args.options.fillMode !== 'undefined') {
337
+ if (!this.fillMode.some(fillModeValue => fillModeValue.toLocaleLowerCase() === args.options.fillMode?.toLowerCase())) {
338
+ return `The value of parameter fillMode must be ${this.fillMode.join(', ')}`;
339
+ }
340
+ }
341
+ if (args.options.zoneEmphasis?.toLocaleLowerCase() !== 'image' && (args.options.imageUrl || args.options.imageWidth ||
342
+ args.options.imageHeight || args.options.fillMode)) {
343
+ return 'Specify imageUrl, imageWidth, imageHeight or fillMode only when zoneEmphasis is set to Image';
344
+ }
345
+ if (args.options.zoneEmphasis?.toLocaleLowerCase() === 'image' && !args.options.imageUrl) {
346
+ return 'Specify imageUrl when zoneEmphasis is set to Image';
347
+ }
348
+ if (args.options.zoneEmphasis?.toLowerCase() !== 'gradient' && args.options.gradientText) {
349
+ return 'Specify gradientText only when zoneEmphasis is set to Gradient';
350
+ }
351
+ if (args.options.zoneEmphasis?.toLowerCase() === 'gradient' && !args.options.gradientText) {
352
+ return 'Specify gradientText when zoneEmphasis is set to Gradient';
353
+ }
354
+ if (args.options.overlayOpacity && (args.options.overlayOpacity < 0 || args.options.overlayOpacity > 100)) {
355
+ return 'The value of parameter overlayOpacity must be between 0 and 100';
356
+ }
357
+ if (args.options.overlayColor && !/^#[0-9a-f]{6}$/i.test(args.options.overlayColor)) {
358
+ return 'The value of parameter overlayColor must be a valid hex color';
359
+ }
360
+ if (!(args.options.zoneEmphasis && ['image', 'gradient'].includes(args.options.zoneEmphasis.toLowerCase())) && (args.options.overlayColor || args.options.overlayOpacity || args.options.useLightText)) {
361
+ return 'Specify overlayColor or overlayOpacity only when zoneEmphasis is set to Image or Gradient';
362
+ }
213
363
  return validation.isValidSharePointUrl(args.options.webUrl);
214
364
  });
365
+ }, _SpoPageSectionAddCommand_initTypes = function _SpoPageSectionAddCommand_initTypes() {
366
+ this.types.string = ['pageName', 'webUrl', 'sectionTemplate', 'zoneEmphasis', 'iconAlignment', 'gradientText', 'imageUrl', 'fillMode', 'overlayColor'];
367
+ this.types.boolean = ['isLayoutReflowOnTop', 'isCollapsibleSection', 'showDivider', 'isExpanded', 'useLightText'];
215
368
  };
216
- SpoPageSectionAddCommand.SectionTemplate = ['OneColumn', 'OneColumnFullWidth', 'TwoColumn', 'ThreeColumn', 'TwoColumnLeft', 'TwoColumnRight', 'Vertical'];
217
- SpoPageSectionAddCommand.ZoneEmphasis = ['None', 'Neutral', 'Soft', 'Strong'];
218
369
  export default new SpoPageSectionAddCommand();
219
370
  //# sourceMappingURL=page-section-add.js.map
@@ -30,9 +30,7 @@ class SpoPageTemplateListCommand extends SpoCommand {
30
30
  }
31
31
  try {
32
32
  const res = await odata.getAllItems(`${args.options.webUrl}/_api/sitepages/pages/templates`);
33
- if (res && res.length > 0) {
34
- await logger.log(res);
35
- }
33
+ await logger.log(res);
36
34
  }
37
35
  catch (err) {
38
36
  // The API returns a 404 when no templates are created on the site collection
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SiteAdmin.js.map
@@ -0,0 +1,252 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _SpoSiteAdminAddCommand_instances, _SpoSiteAdminAddCommand_initTelemetry, _SpoSiteAdminAddCommand_initOptions, _SpoSiteAdminAddCommand_initValidators, _SpoSiteAdminAddCommand_initOptionSets, _SpoSiteAdminAddCommand_initTypes;
7
+ import config from '../../../../config.js';
8
+ import request from '../../../../request.js';
9
+ import { entraGroup } from '../../../../utils/entraGroup.js';
10
+ import { entraUser } from '../../../../utils/entraUser.js';
11
+ import { formatting } from '../../../../utils/formatting.js';
12
+ import { spo } from '../../../../utils/spo.js';
13
+ import { validation } from '../../../../utils/validation.js';
14
+ import SpoCommand from '../../../base/SpoCommand.js';
15
+ import commands from '../../commands.js';
16
+ class SpoSiteAdminAddCommand extends SpoCommand {
17
+ get name() {
18
+ return commands.SITE_ADMIN_ADD;
19
+ }
20
+ get description() {
21
+ return 'Adds a user or group as a site collection administrator';
22
+ }
23
+ constructor() {
24
+ super();
25
+ _SpoSiteAdminAddCommand_instances.add(this);
26
+ __classPrivateFieldGet(this, _SpoSiteAdminAddCommand_instances, "m", _SpoSiteAdminAddCommand_initTelemetry).call(this);
27
+ __classPrivateFieldGet(this, _SpoSiteAdminAddCommand_instances, "m", _SpoSiteAdminAddCommand_initOptions).call(this);
28
+ __classPrivateFieldGet(this, _SpoSiteAdminAddCommand_instances, "m", _SpoSiteAdminAddCommand_initValidators).call(this);
29
+ __classPrivateFieldGet(this, _SpoSiteAdminAddCommand_instances, "m", _SpoSiteAdminAddCommand_initOptionSets).call(this);
30
+ __classPrivateFieldGet(this, _SpoSiteAdminAddCommand_instances, "m", _SpoSiteAdminAddCommand_initTypes).call(this);
31
+ }
32
+ async commandAction(logger, args) {
33
+ try {
34
+ const loginNameToAdd = await this.getCorrectLoginName(args.options);
35
+ if (args.options.asAdmin) {
36
+ await this.callActionAsAdmin(logger, args, loginNameToAdd);
37
+ return;
38
+ }
39
+ await this.callAction(logger, args, loginNameToAdd);
40
+ }
41
+ catch (err) {
42
+ this.handleRejectedODataJsonPromise(err);
43
+ }
44
+ }
45
+ async callActionAsAdmin(logger, args, loginNameToAdd) {
46
+ if (this.verbose) {
47
+ await logger.logToStderr('Adding site administrator as an administrator...');
48
+ }
49
+ const adminUrl = await spo.getSpoAdminUrl(logger, this.debug);
50
+ const siteId = await this.getSiteIdBasedOnUrl(args.options.siteUrl, logger);
51
+ const siteAdmins = (await this.getSiteAdmins(adminUrl, siteId)).map(u => u.loginName);
52
+ siteAdmins.push(loginNameToAdd);
53
+ await this.setSiteAdminsAsAdmin(adminUrl, siteId, siteAdmins);
54
+ if (args.options.primary) {
55
+ await this.setPrimaryAdminAsAdmin(adminUrl, siteId, loginNameToAdd);
56
+ }
57
+ }
58
+ async getSiteIdBasedOnUrl(siteUrl, logger) {
59
+ const siteGraphId = await spo.getSiteId(siteUrl, logger, this.verbose);
60
+ const match = siteGraphId.match(/,([a-f0-9\-]{36}),/i);
61
+ if (!match) {
62
+ throw `Site with URL ${siteUrl} not found`;
63
+ }
64
+ return match[1];
65
+ }
66
+ async getSiteAdmins(adminUrl, siteId) {
67
+ const requestOptions = {
68
+ url: `${adminUrl}/_api/SPO.Tenant/GetSiteAdministrators?siteId='${siteId}'`,
69
+ headers: {
70
+ accept: 'application/json;odata=nometadata',
71
+ 'content-type': 'application/json;charset=utf-8'
72
+ }
73
+ };
74
+ const response = await request.post(requestOptions);
75
+ const responseContent = JSON.parse(response);
76
+ return responseContent.value;
77
+ }
78
+ async getCorrectLoginName(options) {
79
+ if (options.userId || options.userName) {
80
+ const userPrincipalName = options.userName ? options.userName : await entraUser.getUpnByUserId(options.userId);
81
+ if (userPrincipalName) {
82
+ return `i:0#.f|membership|${userPrincipalName}`;
83
+ }
84
+ throw 'User not found.';
85
+ }
86
+ else {
87
+ const group = options.groupId ? await entraGroup.getGroupById(options.groupId) : await entraGroup.getGroupByDisplayName(options.groupName);
88
+ //for entra groups, M365 groups have an associated email and security groups don't
89
+ if (group?.mail) {
90
+ //M365 group is prefixed with c:0o.c|federateddirectoryclaimprovider
91
+ return `c:0o.c|federateddirectoryclaimprovider|${group.id}`;
92
+ }
93
+ else {
94
+ //security group is prefixed with c:0t.c|tenant
95
+ return `c:0t.c|tenant|${group?.id}`;
96
+ }
97
+ }
98
+ }
99
+ async setSiteAdminsAsAdmin(adminUrl, siteId, admins) {
100
+ const requestOptions = {
101
+ url: `${adminUrl}/_api/SPOInternalUseOnly.Tenant/SetSiteSecondaryAdministrators`,
102
+ headers: {
103
+ accept: 'application/json;odata=nometadata',
104
+ 'content-type': 'application/json;charset=utf-8'
105
+ },
106
+ data: {
107
+ secondaryAdministratorsFieldsData: {
108
+ siteId: siteId,
109
+ secondaryAdministratorLoginNames: admins
110
+ }
111
+ }
112
+ };
113
+ return request.post(requestOptions);
114
+ }
115
+ async setPrimaryAdminAsAdmin(adminUrl, siteId, adminLogin) {
116
+ const requestOptions = {
117
+ url: `${adminUrl}/_api/SPO.Tenant/sites('${siteId}')`,
118
+ headers: {
119
+ accept: 'application/json;odata=nometadata',
120
+ 'content-type': 'application/json;charset=utf-8'
121
+ },
122
+ data: {
123
+ Owner: adminLogin,
124
+ SetOwnerWithoutUpdatingSecondaryAdmin: true
125
+ }
126
+ };
127
+ return request.patch(requestOptions);
128
+ }
129
+ async callAction(logger, args, loginNameToAdd) {
130
+ if (this.verbose) {
131
+ await logger.logToStderr('Adding site administrator...');
132
+ }
133
+ const ensuredUserData = await this.ensureUser(args, loginNameToAdd);
134
+ await this.setSiteAdmin(args.options.siteUrl, loginNameToAdd);
135
+ if (args.options.primary) {
136
+ const siteId = await this.getSiteId(args.options.siteUrl);
137
+ const previousPrimaryOwner = await this.getSiteOwnerLoginName(args.options.siteUrl);
138
+ await this.setPrimaryOwnerLoginFromSite(logger, args.options.siteUrl, siteId, ensuredUserData);
139
+ await this.setSiteAdmin(args.options.siteUrl, previousPrimaryOwner);
140
+ }
141
+ }
142
+ async ensureUser(args, loginName) {
143
+ const requestOptions = {
144
+ url: `${args.options.siteUrl}/_api/web/ensureuser`,
145
+ headers: {
146
+ accept: 'application/json;odata=nometadata'
147
+ },
148
+ data: {
149
+ logonName: loginName
150
+ },
151
+ responseType: 'json'
152
+ };
153
+ return request.post(requestOptions);
154
+ }
155
+ async setSiteAdmin(siteUrl, loginName) {
156
+ const requestOptions = {
157
+ url: `${siteUrl}/_api/web/siteusers('${formatting.encodeQueryParameter(loginName)}')`,
158
+ headers: {
159
+ 'accept': 'application/json',
160
+ 'X-Http-Method': 'MERGE',
161
+ 'If-Match': '*'
162
+ },
163
+ data: { IsSiteAdmin: true },
164
+ responseType: 'json'
165
+ };
166
+ return request.post(requestOptions);
167
+ }
168
+ async getSiteId(siteUrl) {
169
+ const requestOptions = {
170
+ url: `${siteUrl}/_api/site?$select=Id`,
171
+ headers: {
172
+ accept: 'application/json;odata=nometadata'
173
+ },
174
+ responseType: 'json'
175
+ };
176
+ const response = await request.get(requestOptions);
177
+ return response.Id;
178
+ }
179
+ async getSiteOwnerLoginName(siteUrl) {
180
+ const requestOptions = {
181
+ url: `${siteUrl}/_api/site/owner?$select=LoginName`,
182
+ headers: {
183
+ accept: 'application/json;odata=nometadata'
184
+ },
185
+ responseType: 'json'
186
+ };
187
+ const response = await request.get(requestOptions);
188
+ return response.LoginName;
189
+ }
190
+ async setPrimaryOwnerLoginFromSite(logger, siteUrl, siteId, loginName) {
191
+ const res = await spo.ensureFormDigest(siteUrl, logger, undefined, this.debug);
192
+ const body = `<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}"><Actions><SetProperty Id="10" ObjectPathId="2" Name="Owner"><Parameter ObjectPathId="3" /></SetProperty></Actions><ObjectPaths><Property Id="2" ParentId="0" Name="Site" /><Identity Id="3" Name="6d452ba1-40a8-8000-e00d-46e1adaa12bf|740c6a0b-85e2-48a0-a494-e0f1759d4aa7:site:${siteId}:u:${loginName.Id}" /><StaticProperty Id="0" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" /></ObjectPaths></Request>`;
193
+ const requestOptions = {
194
+ url: `${siteUrl}/_vti_bin/client.svc/ProcessQuery`,
195
+ headers: {
196
+ 'X-RequestDigest': res.FormDigestValue
197
+ },
198
+ data: body
199
+ };
200
+ return request.post(requestOptions);
201
+ }
202
+ }
203
+ _SpoSiteAdminAddCommand_instances = new WeakSet(), _SpoSiteAdminAddCommand_initTelemetry = function _SpoSiteAdminAddCommand_initTelemetry() {
204
+ this.telemetry.push((args) => {
205
+ Object.assign(this.telemetryProperties, {
206
+ userId: typeof args.options.userId !== 'undefined',
207
+ userName: typeof args.options.userName !== 'undefined',
208
+ groupId: typeof args.options.groupId !== 'undefined',
209
+ groupName: typeof args.options.groupName !== 'undefined',
210
+ primary: !!args.options.primary,
211
+ asAdmin: !!args.options.asAdmin
212
+ });
213
+ });
214
+ }, _SpoSiteAdminAddCommand_initOptions = function _SpoSiteAdminAddCommand_initOptions() {
215
+ this.options.unshift({
216
+ option: '-u, --siteUrl <siteUrl>'
217
+ }, {
218
+ option: '--userId [userId]'
219
+ }, {
220
+ option: '--userName [userName]'
221
+ }, {
222
+ option: '--groupId [groupId]'
223
+ }, {
224
+ option: '--groupName [groupName]'
225
+ }, {
226
+ option: '--primary'
227
+ }, {
228
+ option: '--asAdmin'
229
+ });
230
+ }, _SpoSiteAdminAddCommand_initValidators = function _SpoSiteAdminAddCommand_initValidators() {
231
+ this.validators.push(async (args) => {
232
+ if (args.options.userId &&
233
+ !validation.isValidGuid(args.options.userId)) {
234
+ return `'${args.options.userId}' is not a valid GUID for option 'userId'`;
235
+ }
236
+ if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
237
+ return `'${args.options.userName}' is not a valid 'userName'`;
238
+ }
239
+ if (args.options.groupId &&
240
+ !validation.isValidGuid(args.options.groupId)) {
241
+ return `'${args.options.groupId}' is not a valid GUID for option 'groupId'`;
242
+ }
243
+ return validation.isValidSharePointUrl(args.options.siteUrl);
244
+ });
245
+ }, _SpoSiteAdminAddCommand_initOptionSets = function _SpoSiteAdminAddCommand_initOptionSets() {
246
+ this.optionSets.push({ options: ['userId', 'userName', 'groupId', 'groupName'] });
247
+ }, _SpoSiteAdminAddCommand_initTypes = function _SpoSiteAdminAddCommand_initTypes() {
248
+ this.types.string.push('siteUrl', 'userId', 'userName', 'groupId', 'groupName');
249
+ this.types.boolean.push('primary', 'asAdmin');
250
+ };
251
+ export default new SpoSiteAdminAddCommand();
252
+ //# sourceMappingURL=site-admin-add.js.map