@pnp/cli-microsoft365 10.0.0-beta.04ac437 → 10.0.0-beta.1a88ed2

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 (265) 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 +3 -3
  5. package/dist/AuthServer.js +7 -7
  6. package/dist/api.js +1 -1
  7. package/dist/appInsights.js +6 -4
  8. package/dist/config.js +1 -0
  9. package/dist/m365/cli/commands/cli-doctor.js +2 -2
  10. package/dist/m365/cli/commands.js +1 -2
  11. package/dist/m365/commands/login.js +122 -69
  12. package/dist/m365/commands/setup.js +1 -1
  13. package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +0 -5
  14. package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +0 -5
  15. package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +0 -5
  16. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +0 -5
  17. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +0 -5
  18. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +0 -5
  19. package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +0 -5
  20. package/dist/m365/entra/commands/app/app-add.js +0 -5
  21. package/dist/m365/entra/commands/app/app-get.js +0 -5
  22. package/dist/m365/entra/commands/app/app-list.js +0 -5
  23. package/dist/m365/entra/commands/app/app-permission-add.js +0 -5
  24. package/dist/m365/entra/commands/app/app-remove.js +0 -5
  25. package/dist/m365/entra/commands/app/app-role-add.js +0 -5
  26. package/dist/m365/entra/commands/app/app-role-list.js +0 -5
  27. package/dist/m365/entra/commands/app/app-role-remove.js +0 -5
  28. package/dist/m365/entra/commands/app/app-set.js +0 -5
  29. package/dist/m365/entra/commands/approleassignment/approleassignment-add.js +0 -5
  30. package/dist/m365/entra/commands/approleassignment/approleassignment-list.js +0 -5
  31. package/dist/m365/entra/commands/approleassignment/approleassignment-remove.js +0 -5
  32. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +0 -5
  33. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +0 -5
  34. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +0 -5
  35. package/dist/m365/entra/commands/group/group-add.js +0 -4
  36. package/dist/m365/entra/commands/group/group-get.js +0 -5
  37. package/dist/m365/entra/commands/group/group-list.js +0 -5
  38. package/dist/m365/entra/commands/group/{group-user-add.js → group-member-add.js} +18 -18
  39. package/dist/m365/entra/commands/group/{group-user-list.js → group-member-list.js} +16 -21
  40. package/dist/m365/entra/commands/group/{group-user-set.js → group-member-set.js} +19 -19
  41. package/dist/m365/entra/commands/group/group-remove.js +0 -5
  42. package/dist/m365/entra/commands/groupsetting/groupsetting-add.js +0 -5
  43. package/dist/m365/entra/commands/groupsetting/groupsetting-get.js +0 -5
  44. package/dist/m365/entra/commands/groupsetting/groupsetting-list.js +0 -5
  45. package/dist/m365/entra/commands/groupsetting/groupsetting-remove.js +0 -5
  46. package/dist/m365/entra/commands/groupsetting/groupsetting-set.js +0 -5
  47. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-get.js +0 -5
  48. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-list.js +0 -5
  49. package/dist/m365/entra/commands/license/license-list.js +0 -5
  50. package/dist/m365/entra/commands/m365group/m365group-add.js +0 -5
  51. package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +0 -5
  52. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +0 -5
  53. package/dist/m365/entra/commands/m365group/m365group-get.js +0 -5
  54. package/dist/m365/entra/commands/m365group/m365group-list.js +0 -5
  55. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +0 -5
  56. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +0 -5
  57. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +0 -5
  58. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +0 -5
  59. package/dist/m365/entra/commands/m365group/m365group-remove.js +0 -5
  60. package/dist/m365/entra/commands/m365group/m365group-renew.js +0 -5
  61. package/dist/m365/entra/commands/m365group/m365group-report-activitycounts.js +0 -4
  62. package/dist/m365/entra/commands/m365group/m365group-report-activitydetail.js +0 -4
  63. package/dist/m365/entra/commands/m365group/m365group-report-activityfilecounts.js +0 -4
  64. package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +0 -4
  65. package/dist/m365/entra/commands/m365group/m365group-report-activitystorage.js +0 -4
  66. package/dist/m365/entra/commands/m365group/m365group-set.js +159 -86
  67. package/dist/m365/entra/commands/m365group/m365group-teamify.js +0 -5
  68. package/dist/m365/entra/commands/m365group/m365group-user-add.js +5 -18
  69. package/dist/m365/entra/commands/m365group/m365group-user-list.js +0 -5
  70. package/dist/m365/entra/commands/m365group/m365group-user-remove.js +93 -62
  71. package/dist/m365/entra/commands/m365group/m365group-user-set.js +3 -15
  72. package/dist/m365/entra/commands/oauth2grant/oauth2grant-add.js +0 -5
  73. package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +3 -17
  74. package/dist/m365/entra/commands/oauth2grant/oauth2grant-remove.js +0 -5
  75. package/dist/m365/entra/commands/oauth2grant/oauth2grant-set.js +0 -5
  76. package/dist/m365/entra/commands/policy/policy-list.js +0 -5
  77. package/dist/m365/entra/commands/siteclassification/siteclassification-disable.js +0 -5
  78. package/dist/m365/entra/commands/siteclassification/siteclassification-enable.js +0 -5
  79. package/dist/m365/entra/commands/siteclassification/siteclassification-get.js +0 -5
  80. package/dist/m365/entra/commands/siteclassification/siteclassification-set.js +0 -5
  81. package/dist/m365/entra/commands/user/user-add.js +0 -5
  82. package/dist/m365/entra/commands/user/user-get.js +0 -5
  83. package/dist/m365/entra/commands/user/user-guest-add.js +0 -5
  84. package/dist/m365/entra/commands/user/user-hibp.js +0 -5
  85. package/dist/m365/entra/commands/user/user-license-add.js +0 -5
  86. package/dist/m365/entra/commands/user/user-license-list.js +0 -5
  87. package/dist/m365/entra/commands/user/user-license-remove.js +0 -5
  88. package/dist/m365/entra/commands/user/user-list.js +0 -5
  89. package/dist/m365/entra/commands/user/user-password-validate.js +0 -5
  90. package/dist/m365/entra/commands/user/user-recyclebinitem-clear.js +0 -5
  91. package/dist/m365/entra/commands/user/user-recyclebinitem-list.js +0 -5
  92. package/dist/m365/entra/commands/user/user-recyclebinitem-remove.js +0 -5
  93. package/dist/m365/entra/commands/user/user-recyclebinitem-restore.js +0 -5
  94. package/dist/m365/entra/commands/user/user-registrationdetails-list.js +0 -4
  95. package/dist/m365/entra/commands/user/user-remove.js +0 -5
  96. package/dist/m365/entra/commands/user/user-set.js +0 -5
  97. package/dist/m365/entra/commands/user/user-signin-list.js +0 -5
  98. package/dist/m365/entra/commands.js +3 -3
  99. package/dist/m365/external/commands/item/item-add.js +2 -5
  100. package/dist/m365/file/commands/file-move.js +4 -4
  101. package/dist/m365/flow/commands/environment/environment-list.js +1 -1
  102. package/dist/m365/pa/commands/app/app-list.js +1 -6
  103. package/dist/m365/pa/commands/connector/connector-list.js +1 -6
  104. package/dist/m365/pa/commands/environment/environment-list.js +1 -1
  105. package/dist/m365/pp/commands/environment/environment-list.js +1 -1
  106. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.20.0-rc.1.js → doctor-1.20.0.js} +4 -2
  107. package/dist/m365/spfx/commands/project/project-doctor/rules/FN002021_DEVDEP_rushstack_eslint_config.js +10 -0
  108. package/dist/m365/spfx/commands/project/project-doctor.js +1 -1
  109. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.20.0-rc.1.js → upgrade-1.20.0.js} +28 -26
  110. package/dist/m365/spfx/commands/project/project-upgrade.js +13 -15
  111. package/dist/m365/spfx/commands/spfx-doctor.js +1 -1
  112. package/dist/m365/spo/commands/app/app-instance-list.js +3 -18
  113. package/dist/m365/spo/commands/app/app-list.js +1 -8
  114. package/dist/m365/spo/commands/feature/feature-list.js +1 -8
  115. package/dist/m365/spo/commands/file/file-copy.js +6 -6
  116. package/dist/m365/spo/commands/file/file-move.js +6 -6
  117. package/dist/m365/spo/commands/file/file-remove.js +7 -1
  118. package/dist/m365/spo/commands/folder/folder-move.js +43 -35
  119. package/dist/m365/spo/commands/group/group-member-add.js +3 -23
  120. package/dist/m365/spo/commands/group/group-member-remove.js +1 -18
  121. package/dist/m365/spo/commands/list/list-remove.js +14 -4
  122. package/dist/m365/spo/commands/list/list-webhook-list.js +1 -6
  123. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +1 -8
  124. package/dist/m365/spo/commands/page/page-list.js +1 -1
  125. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  126. package/dist/m365/spo/commands/page/page-template-list.js +1 -3
  127. package/dist/m365/spo/commands/site/site-admin-list.js +8 -9
  128. package/dist/m365/spo/commands/site/site-admin-remove.js +5 -4
  129. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  130. package/dist/m365/spo/commands/sitescript/sitescript-list.js +1 -3
  131. package/dist/m365/spo/commands/tenant/tenant-site-membership-list.js +118 -0
  132. package/dist/m365/spo/commands/{site/site-rename.js → tenant/tenant-site-rename.js} +29 -32
  133. package/dist/m365/spo/commands/theme/theme-list.js +1 -1
  134. package/dist/m365/spo/commands/user/user-ensure.js +1 -11
  135. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +1 -6
  136. package/dist/m365/spo/commands.js +3 -1
  137. package/dist/m365/spp/commands/model/model-list.js +57 -0
  138. package/dist/m365/spp/commands.js +2 -1
  139. package/dist/m365/teams/commands/channel/channel-get.js +15 -50
  140. package/dist/m365/teams/commands/tab/tab-list.js +5 -3
  141. package/dist/m365/teams/commands/team/team-get.js +16 -21
  142. package/dist/m365/viva/commands/engage/Community.js +2 -0
  143. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  144. package/dist/m365/viva/commands.js +1 -0
  145. package/dist/request.js +46 -61
  146. package/dist/telemetryRunner.js +2 -2
  147. package/dist/utils/spo.js +95 -28
  148. package/dist/utils/spp.js +22 -0
  149. package/dist/utils/teams.js +47 -5
  150. package/dist/utils/timersUtil.js +13 -0
  151. package/dist/utils/urlUtil.js +8 -0
  152. package/dist/utils/zod.js +11 -2
  153. package/docs/docs/cmd/cli/cli-doctor.mdx +24 -23
  154. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-add.mdx +0 -6
  155. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-get.mdx +0 -6
  156. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-list.mdx +0 -6
  157. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +0 -6
  158. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-get.mdx +0 -6
  159. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-list.mdx +0 -6
  160. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-remove.mdx +0 -6
  161. package/docs/docs/cmd/entra/app/app-add.mdx +0 -1
  162. package/docs/docs/cmd/entra/app/app-get.mdx +0 -1
  163. package/docs/docs/cmd/entra/app/app-list.mdx +0 -1
  164. package/docs/docs/cmd/entra/app/app-permission-add.mdx +0 -1
  165. package/docs/docs/cmd/entra/app/app-permission-list.mdx +0 -6
  166. package/docs/docs/cmd/entra/app/app-remove.mdx +0 -1
  167. package/docs/docs/cmd/entra/app/app-role-add.mdx +0 -1
  168. package/docs/docs/cmd/entra/app/app-role-list.mdx +0 -1
  169. package/docs/docs/cmd/entra/app/app-role-remove.mdx +0 -1
  170. package/docs/docs/cmd/entra/app/app-set.mdx +0 -1
  171. package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +0 -6
  172. package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +0 -6
  173. package/docs/docs/cmd/entra/approleassignment/approleassignment-remove.mdx +0 -6
  174. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +0 -1
  175. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +0 -1
  176. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +0 -1
  177. package/docs/docs/cmd/entra/group/group-add.mdx +0 -6
  178. package/docs/docs/cmd/entra/group/group-get.mdx +0 -6
  179. package/docs/docs/cmd/entra/group/group-list.mdx +0 -6
  180. package/docs/docs/cmd/entra/group/group-member-add.mdx +62 -0
  181. package/docs/docs/cmd/entra/group/{group-user-list.mdx → group-member-list.mdx} +14 -20
  182. package/docs/docs/cmd/entra/group/group-member-set.mdx +62 -0
  183. package/docs/docs/cmd/entra/group/group-remove.mdx +0 -6
  184. package/docs/docs/cmd/entra/groupsetting/groupsetting-add.mdx +0 -6
  185. package/docs/docs/cmd/entra/groupsetting/groupsetting-get.mdx +0 -6
  186. package/docs/docs/cmd/entra/groupsetting/groupsetting-list.mdx +0 -6
  187. package/docs/docs/cmd/entra/groupsetting/groupsetting-remove.mdx +0 -6
  188. package/docs/docs/cmd/entra/groupsetting/groupsetting-set.mdx +0 -6
  189. package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-get.mdx +0 -6
  190. package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-list.mdx +0 -6
  191. package/docs/docs/cmd/entra/license/license-list.mdx +0 -6
  192. package/docs/docs/cmd/entra/m365group/m365group-add.mdx +0 -6
  193. package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +0 -6
  194. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +0 -6
  195. package/docs/docs/cmd/entra/m365group/m365group-get.mdx +0 -6
  196. package/docs/docs/cmd/entra/m365group/m365group-list.mdx +0 -6
  197. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-clear.mdx +0 -6
  198. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +0 -6
  199. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-remove.mdx +0 -6
  200. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-restore.mdx +0 -6
  201. package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +0 -6
  202. package/docs/docs/cmd/entra/m365group/m365group-renew.mdx +0 -6
  203. package/docs/docs/cmd/entra/m365group/m365group-report-activitycounts.mdx +0 -6
  204. package/docs/docs/cmd/entra/m365group/m365group-report-activitydetail.mdx +0 -6
  205. package/docs/docs/cmd/entra/m365group/m365group-report-activityfilecounts.mdx +0 -6
  206. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +2 -8
  207. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +2 -8
  208. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +38 -23
  209. package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +5 -11
  210. package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +5 -14
  211. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +0 -12
  212. package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +29 -21
  213. package/docs/docs/cmd/entra/m365group/m365group-user-set.mdx +4 -17
  214. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -9
  215. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -7
  216. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +4 -10
  217. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +3 -9
  218. package/docs/docs/cmd/entra/policy/policy-list.mdx +3 -9
  219. package/docs/docs/cmd/entra/siteclassification/siteclassification-disable.mdx +3 -9
  220. package/docs/docs/cmd/entra/siteclassification/siteclassification-enable.mdx +7 -13
  221. package/docs/docs/cmd/entra/siteclassification/siteclassification-get.mdx +1 -7
  222. package/docs/docs/cmd/entra/siteclassification/siteclassification-set.mdx +8 -14
  223. package/docs/docs/cmd/entra/user/user-add.mdx +4 -10
  224. package/docs/docs/cmd/entra/user/user-get.mdx +7 -13
  225. package/docs/docs/cmd/entra/user/user-guest-add.mdx +3 -9
  226. package/docs/docs/cmd/entra/user/user-hibp.mdx +2 -8
  227. package/docs/docs/cmd/entra/user/user-license-add.mdx +0 -6
  228. package/docs/docs/cmd/entra/user/user-license-list.mdx +0 -6
  229. package/docs/docs/cmd/entra/user/user-license-remove.mdx +2 -8
  230. package/docs/docs/cmd/entra/user/user-list.mdx +1 -7
  231. package/docs/docs/cmd/entra/user/user-password-validate.mdx +1 -7
  232. package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +2 -8
  233. package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +0 -6
  234. package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +2 -8
  235. package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +0 -6
  236. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +7 -13
  237. package/docs/docs/cmd/entra/user/user-remove.mdx +2 -8
  238. package/docs/docs/cmd/entra/user/user-set.mdx +0 -6
  239. package/docs/docs/cmd/entra/user/user-signin-list.mdx +9 -15
  240. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  241. package/docs/docs/cmd/login.mdx +9 -0
  242. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  243. package/docs/docs/cmd/spo/file/file-move.mdx +1 -3
  244. package/docs/docs/cmd/spo/file/file-remove.mdx +13 -4
  245. package/docs/docs/cmd/spo/folder/folder-move.mdx +84 -13
  246. package/docs/docs/cmd/spo/group/group-member-add.mdx +8 -14
  247. package/docs/docs/cmd/spo/group/group-member-remove.mdx +5 -11
  248. package/docs/docs/cmd/spo/list/list-remove.mdx +10 -1
  249. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  250. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  251. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  252. package/docs/docs/cmd/spo/tenant/tenant-site-membership-list.mdx +122 -0
  253. package/docs/docs/cmd/spo/{site/site-rename.mdx → tenant/tenant-site-rename.mdx} +7 -7
  254. package/docs/docs/cmd/spo/user/user-ensure.mdx +2 -5
  255. package/docs/docs/cmd/spp/model/model-list.mdx +140 -0
  256. package/docs/docs/cmd/teams/tab/tab-list.mdx +1 -2
  257. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  258. package/npm-shrinkwrap.json +2059 -389
  259. package/package.json +15 -15
  260. package/dist/m365/cli/commands/cli-reconsent.js +0 -29
  261. package/dist/m365/entra/aadCommands.js +0 -89
  262. package/dist/utils/driveUtil.js +0 -51
  263. package/docs/docs/cmd/cli/cli-reconsent.mdx +0 -62
  264. package/docs/docs/cmd/entra/group/group-user-add.mdx +0 -62
  265. package/docs/docs/cmd/entra/group/group-user-set.mdx +0 -62
@@ -5,11 +5,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsChannelGetCommand_instances, _TeamsChannelGetCommand_initTelemetry, _TeamsChannelGetCommand_initOptions, _TeamsChannelGetCommand_initValidators, _TeamsChannelGetCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { entraGroup } from '../../../../utils/entraGroup.js';
9
- import { formatting } from '../../../../utils/formatting.js';
10
8
  import { validation } from '../../../../utils/validation.js';
11
9
  import GraphCommand from '../../../base/GraphCommand.js';
12
10
  import commands from '../../commands.js';
11
+ import { teams } from '../../../../utils/teams.js';
13
12
  class TeamsChannelGetCommand extends GraphCommand {
14
13
  get name() {
15
14
  return commands.CHANNEL_GET;
@@ -20,63 +19,29 @@ class TeamsChannelGetCommand extends GraphCommand {
20
19
  constructor() {
21
20
  super();
22
21
  _TeamsChannelGetCommand_instances.add(this);
23
- this.teamId = "";
24
22
  __classPrivateFieldGet(this, _TeamsChannelGetCommand_instances, "m", _TeamsChannelGetCommand_initTelemetry).call(this);
25
23
  __classPrivateFieldGet(this, _TeamsChannelGetCommand_instances, "m", _TeamsChannelGetCommand_initOptions).call(this);
26
24
  __classPrivateFieldGet(this, _TeamsChannelGetCommand_instances, "m", _TeamsChannelGetCommand_initValidators).call(this);
27
25
  __classPrivateFieldGet(this, _TeamsChannelGetCommand_instances, "m", _TeamsChannelGetCommand_initOptionSets).call(this);
28
26
  }
29
- async getTeamId(args) {
30
- if (args.options.teamId) {
31
- return args.options.teamId;
32
- }
33
- const group = await entraGroup.getGroupByDisplayName(args.options.teamName);
34
- if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
35
- throw `The specified team does not exist in the Microsoft Teams`;
36
- }
37
- return group.id;
38
- }
39
- async getChannelId(args) {
40
- if (args.options.id) {
41
- return args.options.id;
42
- }
43
- if (args.options.primary) {
44
- return '';
45
- }
46
- const channelRequestOptions = {
47
- url: `${this.resource}/v1.0/teams/${formatting.encodeQueryParameter(this.teamId)}/channels?$filter=displayName eq '${formatting.encodeQueryParameter(args.options.name)}'`,
48
- headers: {
49
- accept: 'application/json;odata.metadata=none'
50
- },
51
- responseType: 'json'
52
- };
53
- const response = await request.get(channelRequestOptions);
54
- const channelItem = response.value[0];
55
- if (!channelItem) {
56
- throw `The specified channel does not exist in the Microsoft Teams team`;
57
- }
58
- return channelItem.id;
59
- }
60
27
  async commandAction(logger, args) {
61
28
  try {
62
- this.teamId = await this.getTeamId(args);
63
- const channelId = await this.getChannelId(args);
64
- let url = '';
65
- if (args.options.primary) {
66
- url = `${this.resource}/v1.0/teams/${formatting.encodeQueryParameter(this.teamId)}/primaryChannel`;
29
+ const teamId = args.options.teamId || await teams.getTeamIdByDisplayName(args.options.teamName);
30
+ let channel;
31
+ if (args.options.primary || args.options.id) {
32
+ const requestOptions = {
33
+ url: `${this.resource}/v1.0/teams/${teamId}/${args.options.primary ? 'primaryChannel' : `channels/${args.options.id}`}`,
34
+ headers: {
35
+ accept: 'application/json;odata.metadata=none'
36
+ },
37
+ responseType: 'json'
38
+ };
39
+ channel = await request.get(requestOptions);
67
40
  }
68
41
  else {
69
- url = `${this.resource}/v1.0/teams/${formatting.encodeQueryParameter(this.teamId)}/channels/${formatting.encodeQueryParameter(channelId)}`;
42
+ channel = await teams.getChannelByDisplayName(teamId, args.options.name);
70
43
  }
71
- const requestOptions = {
72
- url: url,
73
- headers: {
74
- accept: 'application/json;odata.metadata=none'
75
- },
76
- responseType: 'json'
77
- };
78
- const res = await request.get(requestOptions);
79
- await logger.log(res);
44
+ await logger.log(channel);
80
45
  }
81
46
  catch (err) {
82
47
  this.handleRejectedODataJsonPromise(err);
@@ -90,7 +55,7 @@ _TeamsChannelGetCommand_instances = new WeakSet(), _TeamsChannelGetCommand_initT
90
55
  teamName: typeof args.options.teamName !== 'undefined',
91
56
  id: typeof args.options.id !== 'undefined',
92
57
  name: typeof args.options.name !== 'undefined',
93
- primary: (!(!args.options.primary)).toString()
58
+ primary: !!args.options.primary
94
59
  });
95
60
  });
96
61
  }, _TeamsChannelGetCommand_initOptions = function _TeamsChannelGetCommand_initOptions() {
@@ -29,9 +29,11 @@ class TeamsTabListCommand extends GraphCommand {
29
29
  const endpoint = `${this.resource}/v1.0/teams/${args.options.teamId}/channels/${formatting.encodeQueryParameter(args.options.channelId)}/tabs?$expand=teamsApp`;
30
30
  try {
31
31
  const items = await odata.getAllItems(endpoint);
32
- items.forEach(i => {
33
- i.teamsAppTabId = i.teamsApp.id;
34
- });
32
+ if (args.options.output !== 'json') {
33
+ items.forEach(i => {
34
+ i.teamsAppTabId = i.teamsApp.id;
35
+ });
36
+ }
35
37
  await logger.log(items);
36
38
  }
37
39
  catch (err) {
@@ -5,11 +5,11 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _TeamsTeamGetCommand_instances, _TeamsTeamGetCommand_initTelemetry, _TeamsTeamGetCommand_initOptions, _TeamsTeamGetCommand_initValidators, _TeamsTeamGetCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
- import { entraGroup } from '../../../../utils/entraGroup.js';
9
8
  import { formatting } from '../../../../utils/formatting.js';
10
9
  import { validation } from '../../../../utils/validation.js';
11
10
  import GraphCommand from '../../../base/GraphCommand.js';
12
11
  import commands from '../../commands.js';
12
+ import { teams } from '../../../../utils/teams.js';
13
13
  class TeamsTeamGetCommand extends GraphCommand {
14
14
  get name() {
15
15
  return commands.TEAM_GET;
@@ -25,28 +25,23 @@ class TeamsTeamGetCommand extends GraphCommand {
25
25
  __classPrivateFieldGet(this, _TeamsTeamGetCommand_instances, "m", _TeamsTeamGetCommand_initValidators).call(this);
26
26
  __classPrivateFieldGet(this, _TeamsTeamGetCommand_instances, "m", _TeamsTeamGetCommand_initOptionSets).call(this);
27
27
  }
28
- async getTeamId(args) {
29
- if (args.options.id) {
30
- return args.options.id;
31
- }
32
- const group = await entraGroup.getGroupByDisplayName(args.options.name);
33
- if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
34
- throw 'The specified team does not exist in the Microsoft Teams';
35
- }
36
- return group.id;
37
- }
38
28
  async commandAction(logger, args) {
39
29
  try {
40
- const teamId = await this.getTeamId(args);
41
- const requestOptions = {
42
- url: `${this.resource}/v1.0/teams/${formatting.encodeQueryParameter(teamId)}`,
43
- headers: {
44
- accept: 'application/json;odata.metadata=none'
45
- },
46
- responseType: 'json'
47
- };
48
- const res = await request.get(requestOptions);
49
- await logger.log(res);
30
+ let team;
31
+ if (args.options.id) {
32
+ const requestOptions = {
33
+ url: `${this.resource}/v1.0/teams/${formatting.encodeQueryParameter(args.options.id)}`,
34
+ headers: {
35
+ accept: 'application/json;odata.metadata=none'
36
+ },
37
+ responseType: 'json'
38
+ };
39
+ team = await request.get(requestOptions);
40
+ }
41
+ else {
42
+ team = await teams.getTeamByDisplayName(args.options.name);
43
+ }
44
+ await logger.log(team);
50
45
  }
51
46
  catch (err) {
52
47
  this.handleRejectedODataJsonPromise(err);
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Community.js.map
@@ -0,0 +1,28 @@
1
+ import { odata } from '../../../../utils/odata.js';
2
+ import GraphCommand from '../../../base/GraphCommand.js';
3
+ import commands from '../../commands.js';
4
+ class VivaEngageCommunityListCommand extends GraphCommand {
5
+ get name() {
6
+ return commands.ENGAGE_COMMUNITY_LIST;
7
+ }
8
+ get description() {
9
+ return 'Lists all Viva Engage communities';
10
+ }
11
+ defaultProperties() {
12
+ return ['id', 'displayName', 'privacy'];
13
+ }
14
+ async commandAction(logger) {
15
+ if (this.verbose) {
16
+ await logger.logToStderr('Getting all Viva Engage communities...');
17
+ }
18
+ try {
19
+ const results = await odata.getAllItems(`${this.resource}/v1.0/employeeExperience/communities`);
20
+ await logger.log(results);
21
+ }
22
+ catch (err) {
23
+ this.handleRejectedODataJsonPromise(err);
24
+ }
25
+ }
26
+ }
27
+ export default new VivaEngageCommunityListCommand();
28
+ //# sourceMappingURL=engage-community-list.js.map
@@ -3,6 +3,7 @@ export default {
3
3
  CONNECTIONS_APP_CREATE: `${prefix} connections app create`,
4
4
  ENGAGE_COMMUNITY_ADD: `${prefix} engage community add`,
5
5
  ENGAGE_COMMUNITY_GET: `${prefix} engage community get`,
6
+ ENGAGE_COMMUNITY_LIST: `${prefix} engage community list`,
6
7
  ENGAGE_GROUP_LIST: `${prefix} engage group list`,
7
8
  ENGAGE_GROUP_USER_ADD: `${prefix} engage group user add`,
8
9
  ENGAGE_GROUP_USER_REMOVE: `${prefix} engage group user remove`,
package/dist/request.js CHANGED
@@ -4,6 +4,7 @@ import auth, { Auth } from './Auth.js';
4
4
  import { app } from './utils/app.js';
5
5
  import { formatting } from './utils/formatting.js';
6
6
  import { timings } from './cli/timings.js';
7
+ import { timersUtil } from './utils/timersUtil.js';
7
8
  class Request {
8
9
  set debug(debug) {
9
10
  // if the value to set is the same as current value return early to avoid
@@ -125,76 +126,60 @@ class Request {
125
126
  options.method = 'HEAD';
126
127
  return this.execute(options);
127
128
  }
128
- execute(options, resolve, reject) {
129
+ async execute(options) {
129
130
  const start = process.hrtime.bigint();
130
131
  if (!this._logger) {
131
- return Promise.reject('Logger not set on the request object');
132
+ throw 'Logger not set on the request object';
132
133
  }
133
134
  this.updateRequestForCloudType(options, auth.connection.cloudType);
134
- return new Promise((_resolve, _reject) => {
135
- (() => {
136
- if (options.headers && options.headers['x-anonymous']) {
137
- return Promise.resolve('');
138
- }
139
- else {
140
- const url = options.headers && options.headers['x-resource'] ? options.headers['x-resource'] : options.url;
141
- const resource = Auth.getResourceFromUrl(url);
142
- return auth.ensureAccessToken(resource, this._logger, this._debug);
143
- }
144
- })()
145
- .then((accessToken) => {
146
- if (options.headers) {
147
- if (options.headers['x-anonymous']) {
148
- delete options.headers['x-anonymous'];
149
- }
150
- if (options.headers['x-resource']) {
151
- delete options.headers['x-resource'];
152
- }
153
- if (accessToken !== '') {
154
- options.headers.authorization = `Bearer ${accessToken}`;
155
- }
156
- }
157
- const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
158
- if (proxyUrl) {
159
- options.proxy = this.createProxyConfigFromUrl(proxyUrl);
135
+ try {
136
+ let accessToken = '';
137
+ if (options.headers && options.headers['x-anonymous']) {
138
+ accessToken = '';
139
+ }
140
+ else {
141
+ const url = options.headers && options.headers['x-resource'] ? options.headers['x-resource'] : options.url;
142
+ const resource = Auth.getResourceFromUrl(url);
143
+ accessToken = await auth.ensureAccessToken(resource, this._logger, this._debug);
144
+ }
145
+ if (options.headers) {
146
+ if (options.headers['x-anonymous']) {
147
+ delete options.headers['x-anonymous'];
160
148
  }
161
- return this.req(options);
162
- })
163
- .then((res) => {
164
- if (resolve) {
165
- resolve((options.responseType === 'stream' || options.fullResponse) ? res : res.data);
149
+ if (options.headers['x-resource']) {
150
+ delete options.headers['x-resource'];
166
151
  }
167
- else {
168
- const end = process.hrtime.bigint();
169
- timings.api.push(Number(end - start));
170
- _resolve((options.responseType === 'stream' || options.fullResponse) ? res : res.data);
152
+ if (accessToken !== '') {
153
+ options.headers.authorization = `Bearer ${accessToken}`;
171
154
  }
172
- }, async (error) => {
173
- if (error && error.response &&
174
- (error.response.status === 429 ||
175
- error.response.status === 503)) {
176
- let retryAfter = parseInt(error.response.headers['retry-after'] || '10');
177
- if (isNaN(retryAfter)) {
178
- retryAfter = 10;
179
- }
180
- if (this._debug) {
181
- await this._logger.log(`Request throttled. Waiting ${retryAfter}sec before retrying...`);
182
- }
183
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
184
- setTimeout(async () => { this.execute(options, resolve || _resolve, reject || _reject); }, retryAfter * 1000);
155
+ }
156
+ const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
157
+ if (proxyUrl) {
158
+ options.proxy = this.createProxyConfigFromUrl(proxyUrl);
159
+ }
160
+ const res = await this.req(options);
161
+ const end = process.hrtime.bigint();
162
+ timings.api.push(Number(end - start));
163
+ return options.responseType === 'stream' || options.fullResponse ?
164
+ res :
165
+ res.data;
166
+ }
167
+ catch (error) {
168
+ const end = process.hrtime.bigint();
169
+ timings.api.push(Number(end - start));
170
+ if (error && error.response && (error.response.status === 429 || error.response.status === 503)) {
171
+ let retryAfter = parseInt(error.response.headers['retry-after'] || '10');
172
+ if (isNaN(retryAfter)) {
173
+ retryAfter = 10;
185
174
  }
186
- else {
187
- if (reject) {
188
- reject(error);
189
- }
190
- else {
191
- const end = process.hrtime.bigint();
192
- timings.api.push(Number(end - start));
193
- _reject(error);
194
- }
175
+ if (this._debug) {
176
+ await this._logger.log(`Request throttled. Waiting ${retryAfter} sec before retrying...`);
195
177
  }
196
- });
197
- });
178
+ await timersUtil.setTimeout(retryAfter * 1000);
179
+ return this.execute(options);
180
+ }
181
+ throw error;
182
+ }
198
183
  }
199
184
  updateRequestForCloudType(options, cloudType) {
200
185
  const url = new URL(options.url);
@@ -8,7 +8,7 @@ try {
8
8
  const data = JSON.parse(input);
9
9
  const { commandName, properties, exception, shell, session } = data;
10
10
  appInsights.commonProperties.shell = shell;
11
- appInsights.context.tags['ai.session.id'] = session;
11
+ appInsights.context.tags[appInsights.context.keys.sessionId] = session;
12
12
  if (exception) {
13
13
  appInsights.trackException({
14
14
  exception
@@ -20,7 +20,7 @@ try {
20
20
  properties
21
21
  });
22
22
  }
23
- appInsights.flush();
23
+ await appInsights.flush();
24
24
  }
25
25
  catch { }
26
26
  //# sourceMappingURL=telemetryRunner.js.map
package/dist/utils/spo.js CHANGED
@@ -11,17 +11,20 @@ import { odata } from './odata.js';
11
11
  import { RoleType } from '../m365/spo/commands/roledefinition/RoleType.js';
12
12
  import { entraGroup } from './entraGroup.js';
13
13
  import { SharingCapabilities } from '../m365/spo/commands/site/SharingCapabilities.js';
14
- import { setTimeout } from 'timers/promises';
15
- export var CreateCopyJobsNameConflictBehavior;
16
- (function (CreateCopyJobsNameConflictBehavior) {
17
- CreateCopyJobsNameConflictBehavior[CreateCopyJobsNameConflictBehavior["Fail"] = 0] = "Fail";
18
- CreateCopyJobsNameConflictBehavior[CreateCopyJobsNameConflictBehavior["Replace"] = 1] = "Replace";
19
- CreateCopyJobsNameConflictBehavior[CreateCopyJobsNameConflictBehavior["Rename"] = 2] = "Rename";
20
- })(CreateCopyJobsNameConflictBehavior || (CreateCopyJobsNameConflictBehavior = {}));
14
+ import { timersUtil } from './timersUtil.js';
15
+ export var CreateFileCopyJobsNameConflictBehavior;
16
+ (function (CreateFileCopyJobsNameConflictBehavior) {
17
+ CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Fail"] = 0] = "Fail";
18
+ CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Replace"] = 1] = "Replace";
19
+ CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Rename"] = 2] = "Rename";
20
+ })(CreateFileCopyJobsNameConflictBehavior || (CreateFileCopyJobsNameConflictBehavior = {}));
21
+ export var CreateFolderCopyJobsNameConflictBehavior;
22
+ (function (CreateFolderCopyJobsNameConflictBehavior) {
23
+ CreateFolderCopyJobsNameConflictBehavior[CreateFolderCopyJobsNameConflictBehavior["Fail"] = 0] = "Fail";
24
+ CreateFolderCopyJobsNameConflictBehavior[CreateFolderCopyJobsNameConflictBehavior["Rename"] = 2] = "Rename";
25
+ })(CreateFolderCopyJobsNameConflictBehavior || (CreateFolderCopyJobsNameConflictBehavior = {}));
21
26
  // Wrapping this into a settings object so we can alter the values in tests
22
- export const settings = {
23
- pollingInterval: 3000
24
- };
27
+ const pollingInterval = 3000;
25
28
  export const spo = {
26
29
  async getRequestDigest(siteUrl) {
27
30
  const requestOptions = {
@@ -79,7 +82,7 @@ export const spo = {
79
82
  }
80
83
  return;
81
84
  }
82
- await setTimeout(operation.PollingInterval);
85
+ await timersUtil.setTimeout(pollingInterval);
83
86
  await spo.waitUntilFinished({
84
87
  operationId: JSON.stringify(operation._ObjectIdentity_),
85
88
  siteUrl,
@@ -691,7 +694,7 @@ export const spo = {
691
694
  if (!wait || isComplete) {
692
695
  return;
693
696
  }
694
- await setTimeout(operation.PollingInterval);
697
+ await timersUtil.setTimeout(pollingInterval);
695
698
  await spo.waitUntilFinished({
696
699
  operationId: JSON.stringify(operation._ObjectIdentity_),
697
700
  siteUrl: spoAdminUrl,
@@ -905,7 +908,7 @@ export const spo = {
905
908
  if (!wait || isComplete) {
906
909
  return;
907
910
  }
908
- await setTimeout(operation.PollingInterval);
911
+ await timersUtil.setTimeout(pollingInterval);
909
912
  await spo.waitUntilFinished({
910
913
  operationId: JSON.stringify(operation._ObjectIdentity_),
911
914
  siteUrl: spoAdminUrl,
@@ -1051,7 +1054,7 @@ export const spo = {
1051
1054
  const operation = json[json.length - 1];
1052
1055
  const isComplete = operation.IsComplete;
1053
1056
  if (!isComplete) {
1054
- await setTimeout(operation.PollingInterval);
1057
+ await timersUtil.setTimeout(pollingInterval);
1055
1058
  await spo.waitUntilFinished({
1056
1059
  operationId: JSON.stringify(operation._ObjectIdentity_),
1057
1060
  siteUrl: spoAdminUrl,
@@ -1551,14 +1554,14 @@ export const spo = {
1551
1554
  return file;
1552
1555
  },
1553
1556
  /**
1554
- * Create a SharePoint copy job to copy a file/folder to another location.
1555
- * @param webUrl Absolute web URL where the source file/folder is located.
1556
- * @param sourceUrl Absolute URL of the source file/folder.
1557
+ * Create a SharePoint copy job to copy a file to another location.
1558
+ * @param webUrl Absolute web URL where the source file is located.
1559
+ * @param sourceUrl Absolute URL of the source file.
1557
1560
  * @param destinationUrl Absolute URL of the destination folder.
1558
1561
  * @param options Options for the copy job.
1559
1562
  * @returns Copy job information. Use {@link spo.getCopyJobResult} to get the result of the copy job.
1560
1563
  */
1561
- async createCopyJob(webUrl, sourceUrl, destinationUrl, options) {
1564
+ async createFileCopyJob(webUrl, sourceUrl, destinationUrl, options) {
1562
1565
  const requestOptions = {
1563
1566
  url: `${webUrl}/_api/Site/CreateCopyJobs`,
1564
1567
  headers: {
@@ -1569,7 +1572,7 @@ export const spo = {
1569
1572
  destinationUri: destinationUrl,
1570
1573
  exportObjectUris: [sourceUrl],
1571
1574
  options: {
1572
- NameConflictBehavior: options?.nameConflictBehavior ?? CreateCopyJobsNameConflictBehavior.Fail,
1575
+ NameConflictBehavior: options?.nameConflictBehavior ?? CreateFileCopyJobsNameConflictBehavior.Fail,
1573
1576
  AllowSchemaMismatch: true,
1574
1577
  BypassSharedLock: !!options?.bypassSharedLock,
1575
1578
  IgnoreVersionHistory: !!options?.ignoreVersionHistory,
@@ -1583,6 +1586,36 @@ export const spo = {
1583
1586
  const response = await request.post(requestOptions);
1584
1587
  return response.value[0];
1585
1588
  },
1589
+ /**
1590
+ * Create a SharePoint copy job to copy a folder to another location.
1591
+ * @param webUrl Absolute web URL where the source folder is located.
1592
+ * @param sourceUrl Absolute URL of the source folder.
1593
+ * @param destinationUrl Absolute URL of the destination folder.
1594
+ * @param options Options for the copy job.
1595
+ * @returns Copy job information. Use {@link spo.getCopyJobResult} to get the result of the copy job.
1596
+ */
1597
+ async createFolderCopyJob(webUrl, sourceUrl, destinationUrl, options) {
1598
+ const requestOptions = {
1599
+ url: `${webUrl}/_api/Site/CreateCopyJobs`,
1600
+ headers: {
1601
+ accept: 'application/json;odata=nometadata'
1602
+ },
1603
+ responseType: 'json',
1604
+ data: {
1605
+ destinationUri: destinationUrl,
1606
+ exportObjectUris: [sourceUrl],
1607
+ options: {
1608
+ NameConflictBehavior: options?.nameConflictBehavior ?? CreateFolderCopyJobsNameConflictBehavior.Fail,
1609
+ AllowSchemaMismatch: true,
1610
+ CustomizedItemName: options?.newName ? [options.newName] : undefined,
1611
+ SameWebCopyMoveOptimization: true,
1612
+ IsMoveMode: options?.operation === 'move'
1613
+ }
1614
+ }
1615
+ };
1616
+ const response = await request.post(requestOptions);
1617
+ return response.value[0];
1618
+ },
1586
1619
  /**
1587
1620
  * Poll until the copy job is finished and return the result.
1588
1621
  * @param webUrl Absolute web URL where the copy job was created.
@@ -1601,12 +1634,20 @@ export const spo = {
1601
1634
  copyJobInfo: copyJobInfo
1602
1635
  }
1603
1636
  };
1637
+ const logs = [];
1604
1638
  let progress = await request.post(requestOptions);
1639
+ const newLogs = progress.Logs?.map(l => JSON.parse(l));
1640
+ if (newLogs?.length > 0) {
1641
+ logs.push(...newLogs);
1642
+ }
1605
1643
  while (progress.JobState !== 0) {
1606
- await setTimeout(settings.pollingInterval);
1644
+ await timersUtil.setTimeout(pollingInterval);
1607
1645
  progress = await request.post(requestOptions);
1646
+ const newLogs = progress.Logs?.map(l => JSON.parse(l));
1647
+ if (newLogs?.length > 0) {
1648
+ logs.push(...newLogs);
1649
+ }
1608
1650
  }
1609
- const logs = progress.Logs.map(l => JSON.parse(l));
1610
1651
  // Check if the job has failed
1611
1652
  const errorLog = logs.find(l => l.Event === 'JobError');
1612
1653
  if (errorLog) {
@@ -1617,7 +1658,7 @@ export const spo = {
1617
1658
  return objectInfo;
1618
1659
  },
1619
1660
  /**
1620
- * Gets the site collection URL for a given web URL using SP Admin site.
1661
+ * Gets the primary owner login from a site as admin.
1621
1662
  * @param adminUrl The SharePoint admin URL
1622
1663
  * @param siteId The site ID
1623
1664
  * @param logger The logger object
@@ -1631,13 +1672,12 @@ export const spo = {
1631
1672
  const requestOptions = {
1632
1673
  url: `${adminUrl}/_api/SPO.Tenant/sites('${siteId}')?$select=OwnerLoginName`,
1633
1674
  headers: {
1634
- accept: 'application/json;odata=nometadata',
1635
- 'content-type': 'application/json;charset=utf-8'
1636
- }
1675
+ accept: 'application/json;odata=nometadata'
1676
+ },
1677
+ responseType: 'json'
1637
1678
  };
1638
1679
  const response = await request.get(requestOptions);
1639
- const responseContent = JSON.parse(response);
1640
- return responseContent.OwnerLoginName;
1680
+ return response.OwnerLoginName;
1641
1681
  },
1642
1682
  /**
1643
1683
  * Gets the primary owner login from a site.
@@ -1652,7 +1692,6 @@ export const spo = {
1652
1692
  }
1653
1693
  const requestOptions = {
1654
1694
  url: `${siteUrl}/_api/site/owner`,
1655
- method: 'GET',
1656
1695
  headers: {
1657
1696
  'accept': 'application/json;odata=nometadata'
1658
1697
  },
@@ -1660,6 +1699,34 @@ export const spo = {
1660
1699
  };
1661
1700
  const responseContent = await request.get(requestOptions);
1662
1701
  return responseContent?.LoginName;
1702
+ },
1703
+ /**
1704
+ * Retrieves the site admin properties for a given site URL.
1705
+ * @param adminUrl The SharePoint admin url.
1706
+ * @param siteUrl URL of the site for which to retrieve properties.
1707
+ * @param includeDetail Set to true to include detailed properties.
1708
+ * @param logger The logger object.
1709
+ * @param verbose Set for verbose logging.
1710
+ * @returns Tenant Site properties.
1711
+ */
1712
+ async getSiteAdminPropertiesByUrl(siteUrl, includeDetail, logger, verbose) {
1713
+ if (verbose) {
1714
+ await logger.logToStderr(`Getting site admin properties for URL: ${siteUrl}...`);
1715
+ }
1716
+ const adminUrl = await spo.getSpoAdminUrl(logger, !!verbose);
1717
+ const requestOptions = {
1718
+ url: `${adminUrl}/_api/SPO.Tenant/GetSitePropertiesByUrl`,
1719
+ headers: {
1720
+ accept: 'application/json;odata=nometadata',
1721
+ 'content-type': 'application/json;charset=utf-8'
1722
+ },
1723
+ data: {
1724
+ url: siteUrl,
1725
+ includeDetail: includeDetail
1726
+ },
1727
+ responseType: 'json'
1728
+ };
1729
+ return request.post(requestOptions);
1663
1730
  }
1664
1731
  };
1665
1732
  //# sourceMappingURL=spo.js.map
@@ -0,0 +1,22 @@
1
+ import request from '../request.js';
2
+ export const spp = {
3
+ /**
4
+ * Asserts whether the specified site is a content center.
5
+ * @param siteUrl The URL of the site to check.
6
+ * @throws Error when the site is not a content center.
7
+ */
8
+ async assertSiteIsContentCenter(siteUrl) {
9
+ const requestOptions = {
10
+ url: `${siteUrl}/_api/web?$select=WebTemplateConfiguration`,
11
+ headers: {
12
+ accept: 'application/json;odata=nometadata'
13
+ },
14
+ responseType: 'json'
15
+ };
16
+ const response = await request.get(requestOptions);
17
+ if (response.WebTemplateConfiguration !== 'CONTENTCTR#0') {
18
+ throw Error(`${siteUrl} is not a content site.`);
19
+ }
20
+ }
21
+ };
22
+ //# sourceMappingURL=spp.js.map