@pnp/cli-microsoft365 7.2.0-beta.54705a9 → 7.2.0-beta.8577f52

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 (312) hide show
  1. package/.devcontainer/Dockerfile +0 -1
  2. package/.eslintrc.cjs +4 -0
  3. package/Dockerfile +0 -1
  4. package/allCommands.json +1 -0
  5. package/allCommandsFull.json +1 -0
  6. package/dist/Auth.js +1 -1
  7. package/dist/Command.js +18 -28
  8. package/dist/api.js +5 -7
  9. package/dist/chili/chili.js +40 -51
  10. package/dist/cli/Cli.js +124 -133
  11. package/dist/cli/timings.js +9 -0
  12. package/dist/index.js +8 -14
  13. package/dist/m365/aad/commands/administrativeunit/administrativeunit-add.js +61 -0
  14. package/dist/m365/aad/commands/administrativeunit/administrativeunit-get.js +80 -0
  15. package/dist/m365/aad/commands/administrativeunit/administrativeunit-list.js +25 -0
  16. package/dist/m365/aad/commands/administrativeunit/administrativeunit-remove.js +91 -0
  17. package/dist/m365/aad/commands/app/app-remove.js +2 -7
  18. package/dist/m365/aad/commands/app/app-role-remove.js +2 -7
  19. package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +2 -7
  20. package/dist/m365/aad/commands/group/group-remove.js +2 -7
  21. package/dist/m365/aad/commands/groupsetting/groupsetting-remove.js +2 -7
  22. package/dist/m365/aad/commands/m365group/m365group-recyclebinitem-clear.js +2 -7
  23. package/dist/m365/aad/commands/m365group/m365group-recyclebinitem-remove.js +2 -7
  24. package/dist/m365/aad/commands/m365group/m365group-remove.js +2 -7
  25. package/dist/m365/aad/commands/m365group/m365group-user-remove.js +2 -7
  26. package/dist/m365/aad/commands/oauth2grant/oauth2grant-remove.js +2 -7
  27. package/dist/m365/aad/commands/siteclassification/siteclassification-disable.js +2 -7
  28. package/dist/m365/aad/commands/user/user-license-remove.js +2 -7
  29. package/dist/m365/aad/commands/user/user-recyclebinitem-clear.js +2 -7
  30. package/dist/m365/aad/commands/user/user-recyclebinitem-remove.js +2 -7
  31. package/dist/m365/aad/commands/user/user-remove.js +2 -7
  32. package/dist/m365/aad/commands.js +4 -0
  33. package/dist/m365/base/AppCommand.js +3 -12
  34. package/dist/m365/cli/commands/config/config-set.js +13 -0
  35. package/dist/m365/commands/login.js +12 -8
  36. package/dist/m365/commands/setup.js +31 -37
  37. package/dist/m365/context/commands/context-remove.js +2 -7
  38. package/dist/m365/context/commands/option/option-remove.js +2 -7
  39. package/dist/m365/{search/commands/externalconnection/externalconnection-add.js → external/commands/connection/connection-add.js} +16 -13
  40. package/dist/m365/{search/commands/externalconnection/externalconnection-get.js → external/commands/connection/connection-get.js} +16 -13
  41. package/dist/m365/{search/commands/externalconnection/externalconnection-list.js → external/commands/connection/connection-list.js} +7 -4
  42. package/dist/m365/{search/commands/externalconnection/externalconnection-remove.js → external/commands/connection/connection-remove.js} +19 -21
  43. package/dist/m365/{search/commands/externalconnection/externalconnection-schema-add.js → external/commands/connection/connection-schema-add.js} +14 -11
  44. package/dist/m365/external/commands.js +15 -0
  45. package/dist/m365/flow/commands/environment/environment-list.js +6 -4
  46. package/dist/m365/flow/commands/flow-remove.js +2 -7
  47. package/dist/m365/flow/commands/owner/owner-remove.js +2 -7
  48. package/dist/m365/flow/commands/run/run-cancel.js +2 -7
  49. package/dist/m365/flow/commands/run/run-resubmit.js +2 -7
  50. package/dist/m365/graph/commands/schemaextension/schemaextension-remove.js +2 -7
  51. package/dist/m365/pa/commands/app/app-consent-set.js +2 -7
  52. package/dist/m365/pa/commands/app/app-permission-remove.js +2 -7
  53. package/dist/m365/pa/commands/app/app-remove.js +2 -7
  54. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -7
  55. package/dist/m365/planner/commands/plan/plan-remove.js +2 -7
  56. package/dist/m365/planner/commands/roster/roster-member-remove.js +4 -14
  57. package/dist/m365/planner/commands/roster/roster-remove.js +2 -7
  58. package/dist/m365/planner/commands/task/task-checklistitem-remove.js +2 -7
  59. package/dist/m365/planner/commands/task/task-reference-remove.js +2 -7
  60. package/dist/m365/planner/commands/task/task-remove.js +2 -7
  61. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-remove.js +2 -7
  62. package/dist/m365/pp/commands/card/card-remove.js +2 -7
  63. package/dist/m365/pp/commands/chatbot/chatbot-remove.js +2 -7
  64. package/dist/m365/pp/commands/dataverse/dataverse-table-remove.js +2 -7
  65. package/dist/m365/pp/commands/dataverse/dataverse-table-row-remove.js +2 -7
  66. package/dist/m365/pp/commands/solution/solution-publisher-remove.js +2 -7
  67. package/dist/m365/pp/commands/solution/solution-remove.js +2 -7
  68. package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +2 -7
  69. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +2 -7
  70. package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +2 -7
  71. package/dist/m365/spfx/commands/project/DeployWorkflow.js +4 -4
  72. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.18.1.js +21 -0
  73. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.18.2.js +21 -0
  74. package/dist/m365/spfx/commands/project/project-doctor.js +7 -3
  75. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +17 -0
  76. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN014010_CODE_settings_filesexclude_jest.js +44 -0
  77. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.18.1.js +57 -0
  78. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.18.2.js +53 -0
  79. package/dist/m365/spfx/commands/project/project-upgrade.js +7 -3
  80. package/dist/m365/spfx/commands/spfx-doctor.js +30 -0
  81. package/dist/m365/spo/commands/app/app-remove.js +2 -7
  82. package/dist/m365/spo/commands/app/app-retract.js +2 -7
  83. package/dist/m365/spo/commands/app/app-uninstall.js +2 -7
  84. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-remove.js +2 -7
  85. package/dist/m365/spo/commands/cdn/cdn-origin-remove.js +2 -7
  86. package/dist/m365/spo/commands/commandset/commandset-remove.js +2 -7
  87. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +2 -7
  88. package/dist/m365/spo/commands/contenttype/contenttype-remove.js +2 -2
  89. package/dist/m365/spo/commands/customaction/customaction-clear.js +2 -7
  90. package/dist/m365/spo/commands/customaction/customaction-remove.js +2 -7
  91. package/dist/m365/spo/commands/eventreceiver/eventreceiver-remove.js +2 -7
  92. package/dist/m365/spo/commands/field/field-remove.js +2 -7
  93. package/dist/m365/spo/commands/file/file-checkout-undo.js +2 -7
  94. package/dist/m365/spo/commands/file/file-remove.js +2 -7
  95. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +14 -23
  96. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +21 -34
  97. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +2 -7
  98. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +2 -7
  99. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +2 -7
  100. package/dist/m365/spo/commands/file/file-sharinglink-clear.js +2 -7
  101. package/dist/m365/spo/commands/file/file-sharinglink-remove.js +2 -7
  102. package/dist/m365/spo/commands/file/file-version-clear.js +2 -7
  103. package/dist/m365/spo/commands/file/file-version-remove.js +2 -7
  104. package/dist/m365/spo/commands/file/file-version-restore.js +2 -7
  105. package/dist/m365/spo/commands/folder/folder-remove.js +2 -7
  106. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +9 -29
  107. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +11 -35
  108. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +2 -7
  109. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +2 -7
  110. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +2 -7
  111. package/dist/m365/spo/commands/group/group-member-remove.js +2 -7
  112. package/dist/m365/spo/commands/group/group-remove.js +2 -7
  113. package/dist/m365/spo/commands/homesite/homesite-remove.js +2 -7
  114. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +2 -7
  115. package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +2 -7
  116. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +2 -7
  117. package/dist/m365/spo/commands/knowledgehub/knowledgehub-remove.js +2 -7
  118. package/dist/m365/spo/commands/list/list-contenttype-remove.js +2 -7
  119. package/dist/m365/spo/commands/list/list-remove.js +2 -7
  120. package/dist/m365/spo/commands/list/list-retentionlabel-ensure.js +27 -37
  121. package/dist/m365/spo/commands/list/list-retentionlabel-remove.js +8 -26
  122. package/dist/m365/spo/commands/list/list-roleassignment-remove.js +2 -7
  123. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +2 -7
  124. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +2 -7
  125. package/dist/m365/spo/commands/list/list-view-field-remove.js +2 -7
  126. package/dist/m365/spo/commands/list/list-view-remove.js +2 -7
  127. package/dist/m365/spo/commands/list/list-webhook-remove.js +2 -7
  128. package/dist/m365/spo/commands/listitem/listitem-attachment-remove.js +2 -7
  129. package/dist/m365/spo/commands/listitem/listitem-batch-add.js +5 -0
  130. package/dist/m365/spo/commands/listitem/listitem-remove.js +2 -7
  131. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +36 -37
  132. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-remove.js +38 -39
  133. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +2 -7
  134. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +2 -7
  135. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +2 -7
  136. package/dist/m365/spo/commands/navigation/navigation-node-remove.js +2 -7
  137. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +2 -7
  138. package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +2 -7
  139. package/dist/m365/spo/commands/page/page-remove.js +2 -7
  140. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +2 -7
  141. package/dist/m365/spo/commands/roledefinition/roledefinition-remove.js +2 -7
  142. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-revoke.js +49 -12
  143. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +2 -7
  144. package/dist/m365/spo/commands/site/site-add.js +45 -12
  145. package/dist/m365/spo/commands/site/site-apppermission-remove.js +2 -7
  146. package/dist/m365/spo/commands/site/site-hubsite-disconnect.js +2 -7
  147. package/dist/m365/spo/commands/site/site-recyclebinitem-clear.js +2 -7
  148. package/dist/m365/spo/commands/site/site-recyclebinitem-move.js +2 -7
  149. package/dist/m365/spo/commands/site/site-recyclebinitem-remove.js +2 -7
  150. package/dist/m365/spo/commands/site/site-remove.js +2 -7
  151. package/dist/m365/spo/commands/site/site-set.js +33 -1
  152. package/dist/m365/spo/commands/sitedesign/sitedesign-remove.js +2 -7
  153. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-revoke.js +2 -7
  154. package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +2 -7
  155. package/dist/m365/spo/commands/sitescript/sitescript-get.js +8 -2
  156. package/dist/m365/spo/commands/sitescript/sitescript-remove.js +2 -7
  157. package/dist/m365/spo/commands/storageentity/storageentity-remove.js +2 -7
  158. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-remove.js +2 -7
  159. package/dist/m365/spo/commands/tenant/tenant-commandset-remove.js +2 -7
  160. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +2 -7
  161. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +19 -2
  162. package/dist/m365/spo/commands/theme/theme-remove.js +2 -7
  163. package/dist/m365/spo/commands/user/user-remove.js +2 -7
  164. package/dist/m365/spo/commands/web/web-remove.js +2 -7
  165. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +2 -7
  166. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +2 -7
  167. package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +2 -7
  168. package/dist/m365/teams/commands/app/app-remove.js +2 -7
  169. package/dist/m365/teams/commands/app/app-uninstall.js +2 -7
  170. package/dist/m365/teams/commands/app/app-update.js +9 -6
  171. package/dist/m365/teams/commands/cache/cache-remove.js +2 -7
  172. package/dist/m365/teams/commands/channel/channel-member-remove.js +2 -7
  173. package/dist/m365/teams/commands/channel/channel-remove.js +2 -7
  174. package/dist/m365/teams/commands/chat/chat-member-remove.js +2 -7
  175. package/dist/m365/teams/commands/tab/tab-remove.js +2 -7
  176. package/dist/m365/teams/commands/team/team-remove.js +2 -7
  177. package/dist/m365/teams/commands/user/user-app-remove.js +19 -11
  178. package/dist/m365/tenant/commands/people/people-profilecardproperty-add.js +131 -0
  179. package/dist/m365/tenant/commands/people/people-profilecardproperty-get.js +75 -0
  180. package/dist/m365/tenant/commands/people/people-profilecardproperty-list.js +53 -0
  181. package/dist/m365/tenant/commands/people/people-profilecardproperty-remove.js +79 -0
  182. package/dist/m365/tenant/commands/people/people-profilecardproperty-set.js +118 -0
  183. package/dist/m365/tenant/commands/people/profileCardProperties.js +24 -0
  184. package/dist/m365/tenant/commands.js +5 -0
  185. package/dist/m365/todo/commands/list/list-remove.js +2 -7
  186. package/dist/m365/todo/commands/task/task-remove.js +2 -7
  187. package/dist/m365/yammer/commands/group/group-user-remove.js +2 -7
  188. package/dist/m365/yammer/commands/message/message-like-set.js +3 -8
  189. package/dist/m365/yammer/commands/message/message-remove.js +2 -7
  190. package/dist/request.js +6 -0
  191. package/dist/settingsNames.js +2 -0
  192. package/dist/utils/aadAdministrativeUnit.js +25 -0
  193. package/dist/utils/aadGroup.js +3 -1
  194. package/dist/utils/prompt.js +30 -7
  195. package/dist/utils/spo.js +109 -0
  196. package/docs/docs/_clisettings.mdx +2 -0
  197. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-add.mdx +119 -0
  198. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-get.mdx +102 -0
  199. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-list.mdx +87 -0
  200. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-remove.mdx +56 -0
  201. package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +1 -1
  202. package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +2 -2
  203. package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +1 -1
  204. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +1 -1
  205. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +2 -2
  206. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +2 -2
  207. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +2 -2
  208. package/docs/docs/cmd/aad/policy/policy-list.mdx +1 -1
  209. package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +1 -1
  210. package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +1 -1
  211. package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +1 -1
  212. package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +1 -1
  213. package/docs/docs/cmd/aad/sp/sp-add.mdx +2 -2
  214. package/docs/docs/cmd/aad/sp/sp-get.mdx +2 -2
  215. package/docs/docs/cmd/aad/user/user-add.mdx +3 -3
  216. package/docs/docs/cmd/aad/user/user-guest-add.mdx +1 -1
  217. package/docs/docs/cmd/aad/user/user-set.mdx +3 -3
  218. package/docs/docs/cmd/{search/externalconnection/externalconnection-add.mdx → external/connection/connection-add.mdx} +16 -10
  219. package/docs/docs/cmd/{search/externalconnection/externalconnection-get.mdx → external/connection/connection-get.mdx} +16 -11
  220. package/docs/docs/cmd/{search/externalconnection/externalconnection-list.mdx → external/connection/connection-list.mdx} +12 -7
  221. package/docs/docs/cmd/external/connection/connection-remove.mdx +54 -0
  222. package/docs/docs/cmd/external/connection/connection-schema-add.mdx +41 -0
  223. package/docs/docs/cmd/flow/run/run-cancel.mdx +3 -0
  224. package/docs/docs/cmd/graph/changelog/changelog-list.mdx +5 -5
  225. package/docs/docs/cmd/login.mdx +1 -1
  226. package/docs/docs/cmd/onenote/notebook/notebook-list.mdx +1 -1
  227. package/docs/docs/cmd/outlook/message/message-list.mdx +1 -1
  228. package/docs/docs/cmd/outlook/message/message-move.mdx +1 -1
  229. package/docs/docs/cmd/planner/bucket/bucket-add.mdx +1 -1
  230. package/docs/docs/cmd/planner/bucket/bucket-set.mdx +1 -1
  231. package/docs/docs/cmd/planner/plan/plan-set.mdx +3 -3
  232. package/docs/docs/cmd/planner/task/task-set.mdx +1 -1
  233. package/docs/docs/cmd/purview/auditlog/auditlog-list.mdx +3 -3
  234. package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +1 -1
  235. package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +1 -1
  236. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +1 -1
  237. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +1 -1
  238. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +1 -1
  239. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +1 -1
  240. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +1 -1
  241. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.mdx +4 -4
  242. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  243. package/docs/docs/cmd/spo/app/app-add.mdx +1 -1
  244. package/docs/docs/cmd/spo/app/app-deploy.mdx +1 -1
  245. package/docs/docs/cmd/spo/app/app-get.mdx +1 -1
  246. package/docs/docs/cmd/spo/app/app-install.mdx +1 -1
  247. package/docs/docs/cmd/spo/app/app-list.mdx +1 -1
  248. package/docs/docs/cmd/spo/app/app-remove.mdx +1 -1
  249. package/docs/docs/cmd/spo/app/app-retract.mdx +1 -1
  250. package/docs/docs/cmd/spo/app/app-uninstall.mdx +1 -1
  251. package/docs/docs/cmd/spo/app/app-upgrade.mdx +1 -1
  252. package/docs/docs/cmd/spo/contenttype/contenttype-add.mdx +1 -1
  253. package/docs/docs/cmd/spo/contenttype/contenttype-set.mdx +1 -1
  254. package/docs/docs/cmd/spo/file/file-rename.mdx +2 -0
  255. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  256. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  257. package/docs/docs/cmd/spo/serviceprincipal/serviceprincipal-grant-revoke.mdx +10 -1
  258. package/docs/docs/cmd/spo/site/site-add.mdx +25 -4
  259. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  260. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
  261. package/docs/docs/cmd/spo/site/site-groupify.mdx +1 -1
  262. package/docs/docs/cmd/spo/site/site-set.mdx +15 -0
  263. package/docs/docs/cmd/spo/sitedesign/sitedesign-add.mdx +3 -3
  264. package/docs/docs/cmd/spo/sitedesign/sitedesign-apply.mdx +1 -1
  265. package/docs/docs/cmd/spo/sitedesign/sitedesign-get.mdx +1 -1
  266. package/docs/docs/cmd/spo/sitedesign/sitedesign-list.mdx +1 -1
  267. package/docs/docs/cmd/spo/sitedesign/sitedesign-remove.mdx +1 -1
  268. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-grant.mdx +1 -1
  269. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-list.mdx +1 -1
  270. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-revoke.mdx +1 -1
  271. package/docs/docs/cmd/spo/sitedesign/sitedesign-run-list.mdx +1 -1
  272. package/docs/docs/cmd/spo/sitedesign/sitedesign-run-status-get.mdx +1 -1
  273. package/docs/docs/cmd/spo/sitedesign/sitedesign-set.mdx +3 -3
  274. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-get.mdx +1 -1
  275. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-list.mdx +1 -1
  276. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-remove.mdx +1 -1
  277. package/docs/docs/cmd/spo/sitescript/sitescript-add.mdx +1 -1
  278. package/docs/docs/cmd/spo/sitescript/sitescript-get.mdx +73 -3
  279. package/docs/docs/cmd/spo/sitescript/sitescript-list.mdx +1 -1
  280. package/docs/docs/cmd/spo/sitescript/sitescript-remove.mdx +1 -1
  281. package/docs/docs/cmd/spo/sitescript/sitescript-set.mdx +1 -1
  282. package/docs/docs/cmd/spo/storageentity/storageentity-get.mdx +1 -1
  283. package/docs/docs/cmd/spo/storageentity/storageentity-list.mdx +1 -1
  284. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  285. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  286. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  287. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  288. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  289. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  290. package/docs/docs/cmd/spo/user/user-remove.mdx +1 -1
  291. package/docs/docs/cmd/spo/web/web-set.mdx +1 -1
  292. package/docs/docs/cmd/teams/channel/channel-remove.mdx +1 -1
  293. package/docs/docs/cmd/teams/meeting/meeting-get.mdx +1 -1
  294. package/docs/docs/cmd/teams/meeting/meeting-transcript-list.mdx +1 -1
  295. package/docs/docs/cmd/teams/report/report-pstncalls.mdx +1 -1
  296. package/docs/docs/cmd/teams/tab/tab-remove.mdx +1 -1
  297. package/docs/docs/cmd/teams/team/team-remove.mdx +1 -1
  298. package/docs/docs/cmd/teams/user/user-app-remove.mdx +11 -2
  299. package/docs/docs/cmd/tenant/people/people-profilecardproperty-add.mdx +126 -0
  300. package/docs/docs/cmd/tenant/people/people-profilecardproperty-get.mdx +101 -0
  301. package/docs/docs/cmd/tenant/people/people-profilecardproperty-list.mdx +98 -0
  302. package/docs/docs/cmd/tenant/people/people-profilecardproperty-remove.mdx +61 -0
  303. package/docs/docs/cmd/tenant/people/people-profilecardproperty-set.mdx +120 -0
  304. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.mdx +1 -1
  305. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.mdx +1 -1
  306. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.mdx +1 -1
  307. package/docs/docs/cmd/todo/task/task-set.mdx +1 -1
  308. package/npm-shrinkwrap.json +603 -563
  309. package/package.json +36 -36
  310. package/dist/m365/search/commands.js +0 -9
  311. package/docs/docs/cmd/search/externalconnection/externalconnection-remove.mdx +0 -48
  312. package/docs/docs/cmd/search/externalconnection/externalconnection-schema-add.mdx +0 -35
@@ -4,6 +4,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoListItemRetentionLabelRemoveCommand_instances, _SpoListItemRetentionLabelRemoveCommand_initTelemetry, _SpoListItemRetentionLabelRemoveCommand_initOptions, _SpoListItemRetentionLabelRemoveCommand_initValidators, _SpoListItemRetentionLabelRemoveCommand_initOptionSets;
7
+ import * as url from 'url';
7
8
  import { Cli } from '../../../../cli/Cli.js';
8
9
  import request from '../../../../request.js';
9
10
  import { formatting } from '../../../../utils/formatting.js';
@@ -11,6 +12,7 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
11
12
  import { validation } from '../../../../utils/validation.js';
12
13
  import SpoCommand from '../../../base/SpoCommand.js';
13
14
  import commands from '../../commands.js';
15
+ import { spo } from '../../../../utils/spo.js';
14
16
  class SpoListItemRetentionLabelRemoveCommand extends SpoCommand {
15
17
  get name() {
16
18
  return commands.LISTITEM_RETENTIONLABEL_REMOVE;
@@ -31,56 +33,53 @@ class SpoListItemRetentionLabelRemoveCommand extends SpoCommand {
31
33
  await this.removeListItemRetentionLabel(logger, args);
32
34
  }
33
35
  else {
34
- const result = await Cli.prompt({
35
- type: 'confirm',
36
- name: 'continue',
37
- default: false,
38
- message: `Are you sure you want to remove the retentionlabel from list item ${args.options.listItemId} from list '${args.options.listId || args.options.listTitle || args.options.listUrl}' located in site ${args.options.webUrl}?`
39
- });
40
- if (result.continue) {
36
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the retentionlabel from list item ${args.options.listItemId} from list '${args.options.listId || args.options.listTitle || args.options.listUrl}' located in site ${args.options.webUrl}?` });
37
+ if (result) {
41
38
  await this.removeListItemRetentionLabel(logger, args);
42
39
  }
43
40
  }
44
41
  }
45
42
  async removeListItemRetentionLabel(logger, args) {
46
- if (this.verbose) {
47
- await logger.logToStderr(`Removing retention label from list item ${args.options.listItemId} from list '${args.options.listId || args.options.listTitle || args.options.listUrl}' in site at ${args.options.webUrl}...`);
48
- }
49
43
  try {
50
- let url = `${args.options.webUrl}/_api/web`;
51
- if (args.options.listId) {
52
- url += `/lists(guid'${formatting.encodeQueryParameter(args.options.listId)}')/items(${args.options.listItemId})/SetComplianceTag()`;
53
- }
54
- else if (args.options.listTitle) {
55
- url += `/lists/getByTitle('${formatting.encodeQueryParameter(args.options.listTitle)}')/items(${args.options.listItemId})/SetComplianceTag()`;
56
- }
57
- else {
58
- const listServerRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
59
- url += `/GetList(@a1)/items(@a2)/SetComplianceTag()?@a1='${formatting.encodeQueryParameter(listServerRelativeUrl)}'&@a2='${args.options.listItemId}'`;
60
- }
61
- const requestBody = {
62
- "complianceTag": "",
63
- "isTagPolicyHold": false,
64
- "isTagPolicyRecord": false,
65
- "isEventBasedTag": false,
66
- "isTagSuperLock": false,
67
- "isUnlockedAsDefault": false
68
- };
69
- const requestOptions = {
70
- url: url,
71
- method: 'POST',
72
- headers: {
73
- 'accept': 'application/json;odata=nometadata'
74
- },
75
- data: requestBody,
76
- responseType: 'json'
77
- };
78
- await request.post(requestOptions);
44
+ const listAbsoluteUrl = await this.getListAbsoluteUrl(args.options, logger);
45
+ await spo.removeRetentionLabelFromListItems(args.options.webUrl, listAbsoluteUrl, [parseInt(args.options.listItemId)], logger, args.options.verbose);
79
46
  }
80
47
  catch (err) {
81
48
  this.handleRejectedODataJsonPromise(err);
82
49
  }
83
50
  }
51
+ async getListAbsoluteUrl(options, logger) {
52
+ const parsedUrl = url.parse(options.webUrl);
53
+ const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
54
+ if (options.listUrl) {
55
+ const serverRelativePath = urlUtil.getServerRelativePath(options.webUrl, options.listUrl);
56
+ return urlUtil.urlCombine(tenantUrl, serverRelativePath);
57
+ }
58
+ if (this.verbose) {
59
+ logger.logToStderr(`Retrieving list absolute URL...`);
60
+ }
61
+ let requestUrl = `${options.webUrl}/_api/web`;
62
+ if (options.listId) {
63
+ requestUrl += `/lists(guid'${formatting.encodeQueryParameter(options.listId)}')`;
64
+ }
65
+ else if (options.listTitle) {
66
+ requestUrl += `/lists/getByTitle('${formatting.encodeQueryParameter(options.listTitle)}')`;
67
+ }
68
+ const requestOptions = {
69
+ url: `${requestUrl}?$expand=RootFolder&$select=RootFolder/ServerRelativeUrl`,
70
+ headers: {
71
+ 'accept': 'application/json;odata=nometadata'
72
+ },
73
+ responseType: 'json'
74
+ };
75
+ const response = await request.get(requestOptions);
76
+ const serverRelativePath = urlUtil.getServerRelativePath(options.webUrl, response.RootFolder.ServerRelativeUrl);
77
+ const listAbsoluteUrl = urlUtil.urlCombine(tenantUrl, serverRelativePath);
78
+ if (this.verbose) {
79
+ logger.logToStderr(`List absolute URL found: '${listAbsoluteUrl}'`);
80
+ }
81
+ return listAbsoluteUrl;
82
+ }
84
83
  }
85
84
  _SpoListItemRetentionLabelRemoveCommand_instances = new WeakSet(), _SpoListItemRetentionLabelRemoveCommand_initTelemetry = function _SpoListItemRetentionLabelRemoveCommand_initTelemetry() {
86
85
  this.telemetry.push((args) => {
@@ -33,13 +33,8 @@ class SpoListItemRoleAssignmentRemoveCommand extends SpoCommand {
33
33
  await this.removeRoleAssignment(logger, args.options);
34
34
  }
35
35
  else {
36
- const result = await Cli.prompt({
37
- type: 'confirm',
38
- name: 'continue',
39
- default: false,
40
- message: `Are you sure you want to remove role assignment from listitem ${args.options.listItemId} from list ${args.options.listId || args.options.listTitle} from site ${args.options.webUrl}?`
41
- });
42
- if (result.continue) {
36
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove role assignment from listitem ${args.options.listItemId} from list ${args.options.listId || args.options.listTitle} from site ${args.options.webUrl}?` });
37
+ if (result) {
43
38
  await this.removeRoleAssignment(logger, args.options);
44
39
  }
45
40
  }
@@ -34,13 +34,8 @@ class SpoListItemRoleInheritanceBreakCommand extends SpoCommand {
34
34
  await this.breakListItemRoleInheritance(args.options);
35
35
  }
36
36
  else {
37
- const result = await Cli.prompt({
38
- type: 'confirm',
39
- name: 'continue',
40
- default: false,
41
- message: `Are you sure you want to break the role inheritance of ${args.options.listItemId} in list ${args.options.listId ?? args.options.listTitle}?`
42
- });
43
- if (result.continue) {
37
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to break the role inheritance of ${args.options.listItemId} in list ${args.options.listId ?? args.options.listTitle}?` });
38
+ if (result) {
44
39
  await this.breakListItemRoleInheritance(args.options);
45
40
  }
46
41
  }
@@ -34,13 +34,8 @@ class SpoListItemRoleInheritanceResetCommand extends SpoCommand {
34
34
  await this.resetListItemRoleInheritance(args.options);
35
35
  }
36
36
  else {
37
- const result = await Cli.prompt({
38
- type: 'confirm',
39
- name: 'continue',
40
- default: false,
41
- message: `Are you sure you want to reset the role inheritance of ${args.options.listItemId} in list ${args.options.listId ?? args.options.listTitle}?`
42
- });
43
- if (result.continue) {
37
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to reset the role inheritance of ${args.options.listItemId} in list ${args.options.listId ?? args.options.listTitle}?` });
38
+ if (result) {
44
39
  await this.resetListItemRoleInheritance(args.options);
45
40
  }
46
41
  }
@@ -29,13 +29,8 @@ class SpoNavigationNodeRemoveCommand extends SpoCommand {
29
29
  await this.removeNode(logger, args.options);
30
30
  }
31
31
  else {
32
- const result = await Cli.prompt({
33
- type: 'confirm',
34
- name: 'continue',
35
- default: false,
36
- message: `Are you sure you want to remove the node ${args.options.id} from the navigation?`
37
- });
38
- if (result.continue) {
32
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the node ${args.options.id} from the navigation?` });
33
+ if (result) {
39
34
  await this.removeNode(logger, args.options);
40
35
  }
41
36
  }
@@ -27,13 +27,8 @@ class SpoOrgAssetsLibraryRemoveCommand extends SpoCommand {
27
27
  await this.removeLibrary(logger, args.options.libraryUrl);
28
28
  }
29
29
  else {
30
- const result = await Cli.prompt({
31
- type: 'confirm',
32
- name: 'continue',
33
- default: false,
34
- message: `Are you sure you want to remove the library ${args.options.libraryUrl} as a central location for organization assets?`
35
- });
36
- if (result.continue) {
30
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the library ${args.options.libraryUrl} as a central location for organization assets?` });
31
+ if (result) {
37
32
  await this.removeLibrary(logger, args.options.libraryUrl);
38
33
  }
39
34
  }
@@ -31,13 +31,8 @@ class SpoOrgNewsSiteRemoveCommand extends SpoCommand {
31
31
  await this.removeOrgNewsSite(logger, args.options.url);
32
32
  }
33
33
  else {
34
- const result = await Cli.prompt({
35
- type: 'confirm',
36
- name: 'continue',
37
- default: false,
38
- message: `Are you sure you want to remove ${args.options.url} from the list of organizational news sites?`
39
- });
40
- if (result.continue) {
34
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove ${args.options.url} from the list of organizational news sites?` });
35
+ if (result) {
41
36
  await this.removeOrgNewsSite(logger, args.options.url);
42
37
  }
43
38
  }
@@ -29,13 +29,8 @@ class SpoPageRemoveCommand extends SpoCommand {
29
29
  await this.removePage(logger, args);
30
30
  }
31
31
  else {
32
- const result = await Cli.prompt({
33
- type: 'confirm',
34
- name: 'continue',
35
- default: false,
36
- message: `Are you sure you want to remove the page '${args.options.name}'?`
37
- });
38
- if (result.continue) {
32
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the page '${args.options.name}'?` });
33
+ if (result) {
39
34
  await this.removePage(logger, args);
40
35
  }
41
36
  }
@@ -31,13 +31,8 @@ class SpoPropertyBagRemoveCommand extends SpoPropertyBagBaseCommand {
31
31
  await this.removeProperty(args);
32
32
  }
33
33
  else {
34
- const result = await Cli.prompt({
35
- type: 'confirm',
36
- name: 'continue',
37
- default: false,
38
- message: `Are you sure you want to remove the ${args.options.key} property?`
39
- });
40
- if (result.continue) {
34
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the ${args.options.key} property?` });
35
+ if (result) {
41
36
  await this.removeProperty(args);
42
37
  }
43
38
  }
@@ -28,13 +28,8 @@ class SpoRoleDefinitionRemoveCommand extends SpoCommand {
28
28
  await this.removeRoleDefinition(logger, args);
29
29
  }
30
30
  else {
31
- const result = await Cli.prompt({
32
- type: 'confirm',
33
- name: 'continue',
34
- default: false,
35
- message: `Are you sure you want to remove the role definition with id ${args.options.id} from site ${args.options.webUrl}?`
36
- });
37
- if (result.continue) {
31
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the role definition with id ${args.options.id} from site ${args.options.webUrl}?` });
32
+ if (result) {
38
33
  await this.removeRoleDefinition(logger, args);
39
34
  }
40
35
  }
@@ -32,18 +32,53 @@ class SpoServicePrincipalGrantRevokeCommand extends SpoCommand {
32
32
  await logger.logToStderr(`Retrieving request digest...`);
33
33
  }
34
34
  const reqDigest = await spo.getRequestDigest(spoAdminUrl);
35
- const requestOptions = {
36
- url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
37
- headers: {
38
- 'X-RequestDigest': reqDigest.FormDigestValue
39
- },
40
- data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="10" ObjectPathId="9" /><ObjectPath Id="12" ObjectPathId="11" /><ObjectPath Id="14" ObjectPathId="13" /><Method Name="DeleteObject" Id="15" ObjectPathId="13" /><Query Id="16" ObjectPathId="13"><Query SelectAllProperties="true"><Properties /></Query></Query></Actions><ObjectPaths><Constructor Id="9" TypeId="{104e8f06-1e00-4675-99c6-1b9b504ed8d8}" /><Property Id="11" ParentId="9" Name="PermissionGrants" /><Method Id="13" ParentId="11" Name="GetByObjectId"><Parameters><Parameter Type="String">${formatting.escapeXml(args.options.id)}</Parameter></Parameters></Method></ObjectPaths></Request>`
41
- };
42
- const res = await request.post(requestOptions);
43
- const json = JSON.parse(res);
44
- const response = json[0];
45
- if (response.ErrorInfo) {
46
- throw response.ErrorInfo.ErrorMessage;
35
+ if (args.options.scope) {
36
+ // revoke a single scope
37
+ // #1 get the grant
38
+ const getGrantRequestOptions = {
39
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
40
+ headers: {
41
+ 'X-RequestDigest': reqDigest.FormDigestValue
42
+ },
43
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="2" ObjectPathId="1" /><ObjectPath Id="4" ObjectPathId="3" /><ObjectPath Id="6" ObjectPathId="5" /><Query Id="7" ObjectPathId="5"><Query SelectAllProperties="true"><Properties /></Query></Query></Actions><ObjectPaths><Constructor Id="1" TypeId="{104e8f06-1e00-4675-99c6-1b9b504ed8d8}" /><Property Id="3" ParentId="1" Name="PermissionGrants" /><Method Id="5" ParentId="3" Name="GetByObjectId"><Parameters><Parameter Type="String">${formatting.escapeXml(args.options.id)}</Parameter></Parameters></Method></ObjectPaths></Request>`
44
+ };
45
+ const grantRequestRes = await request.post(getGrantRequestOptions);
46
+ const grantRequestJson = JSON.parse(grantRequestRes);
47
+ const responseInfo = grantRequestJson[0];
48
+ if (responseInfo.ErrorInfo) {
49
+ throw responseInfo.ErrorInfo.ErrorMessage;
50
+ }
51
+ const grantInfo = grantRequestJson.pop();
52
+ // #2 remove the scope from the grant
53
+ const removeScopeRequestOptions = {
54
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
55
+ headers: {
56
+ 'X-RequestDigest': reqDigest.FormDigestValue
57
+ },
58
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="9" ObjectPathId="8" /><Method Name="Remove" Id="10" ObjectPathId="8"><Parameters><Parameter Type="String">${grantInfo.ClientId}</Parameter><Parameter Type="String">Microsoft Graph</Parameter><Parameter Type="String">${formatting.escapeXml(args.options.scope)}</Parameter></Parameters></Method></Actions><ObjectPaths><Property Id="8" ParentId="1" Name="GrantManager" /><Constructor Id="1" TypeId="{104e8f06-1e00-4675-99c6-1b9b504ed8d8}" /></ObjectPaths></Request>`
59
+ };
60
+ const removeScopeRes = await request.post(removeScopeRequestOptions);
61
+ const removeScopeResJson = JSON.parse(removeScopeRes);
62
+ const removeScopeResponse = removeScopeResJson[0];
63
+ if (removeScopeResponse.ErrorInfo) {
64
+ throw removeScopeResponse.ErrorInfo.ErrorMessage;
65
+ }
66
+ }
67
+ else {
68
+ // revoke the whole grant
69
+ const requestOptions = {
70
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
71
+ headers: {
72
+ 'X-RequestDigest': reqDigest.FormDigestValue
73
+ },
74
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="10" ObjectPathId="9" /><ObjectPath Id="12" ObjectPathId="11" /><ObjectPath Id="14" ObjectPathId="13" /><Method Name="DeleteObject" Id="15" ObjectPathId="13" /><Query Id="16" ObjectPathId="13"><Query SelectAllProperties="true"><Properties /></Query></Query></Actions><ObjectPaths><Constructor Id="9" TypeId="{104e8f06-1e00-4675-99c6-1b9b504ed8d8}" /><Property Id="11" ParentId="9" Name="PermissionGrants" /><Method Id="13" ParentId="11" Name="GetByObjectId"><Parameters><Parameter Type="String">${formatting.escapeXml(args.options.id)}</Parameter></Parameters></Method></ObjectPaths></Request>`
75
+ };
76
+ const res = await request.post(requestOptions);
77
+ const json = JSON.parse(res);
78
+ const response = json[0];
79
+ if (response.ErrorInfo) {
80
+ throw response.ErrorInfo.ErrorMessage;
81
+ }
47
82
  }
48
83
  }
49
84
  catch (err) {
@@ -54,6 +89,8 @@ class SpoServicePrincipalGrantRevokeCommand extends SpoCommand {
54
89
  _SpoServicePrincipalGrantRevokeCommand_instances = new WeakSet(), _SpoServicePrincipalGrantRevokeCommand_initOptions = function _SpoServicePrincipalGrantRevokeCommand_initOptions() {
55
90
  this.options.unshift({
56
91
  option: '-i, --id <id>'
92
+ }, {
93
+ option: '-s, --scope [scope]'
57
94
  });
58
95
  };
59
96
  export default new SpoServicePrincipalGrantRevokeCommand();
@@ -32,13 +32,8 @@ class SpoServicePrincipalSetCommand extends SpoCommand {
32
32
  await this.toggleServicePrincipal(logger, args);
33
33
  }
34
34
  else {
35
- const result = await Cli.prompt({
36
- type: 'confirm',
37
- name: 'continue',
38
- default: false,
39
- message: `Are you sure you want to ${args.options.enabled ? 'enable' : 'disable'} the service principal?`
40
- });
41
- if (result.continue) {
35
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to ${args.options.enabled ? 'enable' : 'disable'} the service principal?` });
36
+ if (result) {
42
37
  await this.toggleServicePrincipal(logger, args);
43
38
  }
44
39
  }
@@ -33,12 +33,13 @@ class SpoSiteAddCommand extends SpoCommand {
33
33
  }
34
34
  async commandAction(logger, args) {
35
35
  const isClassicSite = args.options.type === 'ClassicSite';
36
- if (isClassicSite) {
37
- await this.createClassicSite(logger, args);
38
- }
39
- else {
40
- await this.createModernSite(logger, args);
36
+ const siteUrl = isClassicSite
37
+ ? await this.createClassicSite(logger, args)
38
+ : await this.createModernSite(logger, args);
39
+ if (siteUrl && args.options.withAppCatalog) {
40
+ await this.addAppCatalog(siteUrl, logger);
41
41
  }
42
+ await logger.log(siteUrl);
42
43
  }
43
44
  async createModernSite(logger, args) {
44
45
  const isTeamSite = args.options.type !== 'CommunicationSite';
@@ -132,19 +133,18 @@ class SpoSiteAddCommand extends SpoCommand {
132
133
  if (response.ErrorMessage !== null) {
133
134
  throw response.ErrorMessage;
134
135
  }
135
- await logger.log(response.SiteUrl);
136
+ return response.SiteUrl;
136
137
  }
137
138
  else {
138
- if (response.SiteStatus === 2) {
139
- await logger.log(response.SiteUrl);
140
- }
141
- else {
139
+ if (response.SiteStatus !== 2) {
142
140
  throw 'An error has occurred while creating the site';
143
141
  }
142
+ return response.SiteUrl;
144
143
  }
145
144
  }
146
145
  catch (err) {
147
146
  this.handleRejectedODataJsonPromise(err);
147
+ return;
148
148
  }
149
149
  }
150
150
  async createClassicSite(logger, args) {
@@ -195,8 +195,8 @@ class SpoSiteAddCommand extends SpoCommand {
195
195
  }
196
196
  const operation = json[json.length - 1];
197
197
  const isComplete = operation.IsComplete;
198
- if (!args.options.wait || isComplete) {
199
- return;
198
+ if ((!args.options.wait && !args.options.withAppCatalog) || isComplete) {
199
+ return args.options.url;
200
200
  }
201
201
  await new Promise((resolve, reject) => {
202
202
  setTimeout(() => {
@@ -212,9 +212,11 @@ class SpoSiteAddCommand extends SpoCommand {
212
212
  });
213
213
  }, operation.PollingInterval);
214
214
  });
215
+ return args.options.url;
215
216
  }
216
217
  catch (err) {
217
218
  this.handleRejectedPromise(err);
219
+ return;
218
220
  }
219
221
  }
220
222
  async siteExists(url, logger) {
@@ -304,6 +306,34 @@ class SpoSiteAddCommand extends SpoCommand {
304
306
  }, operation.PollingInterval);
305
307
  });
306
308
  }
309
+ async addAppCatalog(url, logger) {
310
+ try {
311
+ this.spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
312
+ this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
313
+ if (this.verbose) {
314
+ await logger.logToStderr(`Adding site collection app catalog...`);
315
+ }
316
+ const requestOptions = {
317
+ url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
318
+ headers: {
319
+ 'X-RequestDigest': this.context.FormDigestValue
320
+ },
321
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="38" ObjectPathId="37" /><ObjectPath Id="40" ObjectPathId="39" /><ObjectPath Id="42" ObjectPathId="41" /><ObjectPath Id="44" ObjectPathId="43" /><ObjectPath Id="46" ObjectPathId="45" /><ObjectPath Id="48" ObjectPathId="47" /></Actions><ObjectPaths><Constructor Id="37" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /><Method Id="39" ParentId="37" Name="GetSiteByUrl"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method><Property Id="41" ParentId="39" Name="RootWeb" /><Property Id="43" ParentId="41" Name="TenantAppCatalog" /><Property Id="45" ParentId="43" Name="SiteCollectionAppCatalogsSites" /><Method Id="47" ParentId="45" Name="Add"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method></ObjectPaths></Request>`
322
+ };
323
+ const response = await request.post(requestOptions);
324
+ const json = JSON.parse(response);
325
+ const responseContents = json[0];
326
+ if (responseContents.ErrorInfo) {
327
+ throw responseContents.ErrorInfo.ErrorMessage;
328
+ }
329
+ if (this.verbose) {
330
+ await logger.logToStderr('Site collection app catalog created');
331
+ }
332
+ }
333
+ catch (err) {
334
+ this.handleRejectedPromise(err);
335
+ }
336
+ }
307
337
  }
308
338
  _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry = function _SpoSiteAddCommand_initTelemetry() {
309
339
  this.telemetry.push((args) => {
@@ -316,6 +346,7 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
316
346
  telemetryProps.isPublic = args.options.isPublic || false;
317
347
  telemetryProps.lcid = args.options.lcid;
318
348
  telemetryProps.owners = typeof args.options.owners !== 'undefined';
349
+ telemetryProps.withAppCatalog = args.options.withAppCatalog || false;
319
350
  if (isCommunicationSite) {
320
351
  telemetryProps.shareByEmailEnabled = args.options.shareByEmailEnabled || false;
321
352
  telemetryProps.siteDesign = args.options.siteDesign;
@@ -373,6 +404,8 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
373
404
  option: '--storageQuotaWarningLevel [storageQuotaWarningLevel]'
374
405
  }, {
375
406
  option: '--removeDeletedSite'
407
+ }, {
408
+ option: '--withAppCatalog'
376
409
  }, {
377
410
  option: '--wait'
378
411
  });
@@ -72,13 +72,8 @@ class SpoSiteAppPermissionRemoveCommand extends GraphCommand {
72
72
  await this.removeSiteAppPermission(logger, args.options);
73
73
  }
74
74
  else {
75
- const result = await Cli.prompt({
76
- type: 'confirm',
77
- name: 'continue',
78
- default: false,
79
- message: `Are you sure you want to remove the specified application permission from site ${args.options.siteUrl}?`
80
- });
81
- if (result.continue) {
75
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the specified application permission from site ${args.options.siteUrl}?` });
76
+ if (result) {
82
77
  await this.removeSiteAppPermission(logger, args.options);
83
78
  }
84
79
  }
@@ -29,13 +29,8 @@ class SpoSiteHubSiteDisconnectCommand extends SpoCommand {
29
29
  await this.disconnectHubSite(logger, args);
30
30
  }
31
31
  else {
32
- const result = await Cli.prompt({
33
- type: 'confirm',
34
- name: 'continue',
35
- default: false,
36
- message: `Are you sure you want to disconnect the site collection ${args.options.siteUrl} from its hub site?`
37
- });
38
- if (result.continue) {
32
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to disconnect the site collection ${args.options.siteUrl} from its hub site?` });
33
+ if (result) {
39
34
  await this.disconnectHubSite(logger, args);
40
35
  }
41
36
  }
@@ -28,13 +28,8 @@ class SpoSiteRecycleBinItemClearCommand extends SpoCommand {
28
28
  await this.clearRecycleBin(args, logger);
29
29
  }
30
30
  else {
31
- const result = await Cli.prompt({
32
- type: 'confirm',
33
- name: 'continue',
34
- default: false,
35
- message: `Are you sure you want to clear the recycle bin of site ${args.options.siteUrl}?`
36
- });
37
- if (result.continue) {
31
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to clear the recycle bin of site ${args.options.siteUrl}?` });
32
+ if (result) {
38
33
  await this.clearRecycleBin(args, logger);
39
34
  }
40
35
  }
@@ -29,13 +29,8 @@ class SpoSiteRecycleBinItemMoveCommand extends SpoCommand {
29
29
  await this.moveRecycleBinItem(args, logger);
30
30
  }
31
31
  else {
32
- const result = await Cli.prompt({
33
- type: 'confirm',
34
- name: 'continue',
35
- default: false,
36
- message: 'Are you sure you want to move these items to the second-stage recycle bin?'
37
- });
38
- if (result.continue) {
32
+ const result = await Cli.promptForConfirmation({ message: 'Are you sure you want to move these items to the second-stage recycle bin?' });
33
+ if (result) {
39
34
  await this.moveRecycleBinItem(args, logger);
40
35
  }
41
36
  }
@@ -28,13 +28,8 @@ class SpoSiteRecycleBinItemRemoveCommand extends SpoCommand {
28
28
  await this.removeRecycleBinItem(args, logger);
29
29
  }
30
30
  else {
31
- const result = await Cli.prompt({
32
- type: 'confirm',
33
- name: 'continue',
34
- default: false,
35
- message: `Are you sure you want to permanently delete ${args.options.ids.split(',').length} item(s) from the site recycle bin?`
36
- });
37
- if (result.continue) {
31
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to permanently delete ${args.options.ids.split(',').length} item(s) from the site recycle bin?` });
32
+ if (result) {
38
33
  await this.removeRecycleBinItem(args, logger);
39
34
  }
40
35
  }
@@ -33,13 +33,8 @@ class SpoSiteRemoveCommand extends SpoCommand {
33
33
  await this.removeSite(logger, args);
34
34
  }
35
35
  else {
36
- const result = await Cli.prompt({
37
- type: 'confirm',
38
- name: 'continue',
39
- default: false,
40
- message: `Are you sure you want to remove the site ${args.options.url}?`
41
- });
42
- if (result.continue) {
36
+ const result = await Cli.promptForConfirmation({ message: `Are you sure you want to remove the site ${args.options.url}?` });
37
+ if (result) {
43
38
  await this.removeSite(logger, args);
44
39
  }
45
40
  }