@pnp/cli-microsoft365 7.6.0-beta.c74fe4b → 7.6.0-beta.fc0eacc

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 (268) hide show
  1. package/.eslintrc.cjs +3 -0
  2. package/README.md +1 -1
  3. package/allCommands.json +1 -1
  4. package/allCommandsFull.json +1 -1
  5. package/dist/Auth.js +12 -10
  6. package/dist/AuthServer.js +1 -1
  7. package/dist/config.js +2 -2
  8. package/dist/m365/app/commands/app-get.js +1 -1
  9. package/dist/m365/app/commands/app-open.js +1 -1
  10. package/dist/m365/app/commands/permission/permission-add.js +2 -2
  11. package/dist/m365/app/commands/permission/permission-list.js +2 -2
  12. package/dist/m365/base/PeriodBasedReport.js +3 -0
  13. package/dist/m365/cli/commands/cli-consent.js +2 -2
  14. package/dist/m365/cli/commands/cli-reconsent.js +3 -3
  15. package/dist/m365/commands/login.js +1 -1
  16. package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +1 -0
  17. package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +1 -0
  18. package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +1 -0
  19. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +1 -0
  20. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +1 -0
  21. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +1 -0
  22. package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +1 -0
  23. package/dist/m365/entra/commands/app/app-add.js +7 -6
  24. package/dist/m365/entra/commands/app/app-get.js +4 -3
  25. package/dist/m365/entra/commands/app/app-list.js +1 -0
  26. package/dist/m365/entra/commands/app/app-permission-add.js +3 -2
  27. package/dist/m365/entra/commands/app/app-permission-list.js +1 -1
  28. package/dist/m365/entra/commands/app/app-remove.js +5 -4
  29. package/dist/m365/entra/commands/app/app-role-add.js +6 -5
  30. package/dist/m365/entra/commands/app/app-role-list.js +4 -3
  31. package/dist/m365/entra/commands/app/app-role-remove.js +6 -5
  32. package/dist/m365/entra/commands/app/app-set.js +8 -7
  33. package/dist/m365/entra/commands/approleassignment/approleassignment-add.js +2 -1
  34. package/dist/m365/entra/commands/approleassignment/approleassignment-list.js +1 -0
  35. package/dist/m365/entra/commands/approleassignment/approleassignment-remove.js +1 -0
  36. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +1 -0
  37. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +1 -0
  38. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -0
  39. package/dist/m365/entra/commands/group/group-get.js +1 -0
  40. package/dist/m365/entra/commands/group/group-list.js +1 -0
  41. package/dist/m365/entra/commands/group/group-remove.js +1 -0
  42. package/dist/m365/entra/commands/group/group-user-list.js +1 -0
  43. package/dist/m365/entra/commands/groupsetting/groupsetting-add.js +1 -0
  44. package/dist/m365/entra/commands/groupsetting/groupsetting-get.js +1 -0
  45. package/dist/m365/entra/commands/groupsetting/groupsetting-list.js +1 -0
  46. package/dist/m365/entra/commands/groupsetting/groupsetting-remove.js +1 -0
  47. package/dist/m365/entra/commands/groupsetting/groupsetting-set.js +1 -0
  48. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-get.js +1 -0
  49. package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-list.js +1 -0
  50. package/dist/m365/entra/commands/license/license-list.js +1 -0
  51. package/dist/m365/entra/commands/m365group/m365group-add.js +1 -0
  52. package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +1 -0
  53. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +1 -0
  54. package/dist/m365/entra/commands/m365group/m365group-get.js +1 -0
  55. package/dist/m365/entra/commands/m365group/m365group-list.js +1 -0
  56. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +1 -0
  57. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +1 -0
  58. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +1 -0
  59. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +1 -0
  60. package/dist/m365/entra/commands/m365group/m365group-remove.js +1 -0
  61. package/dist/m365/entra/commands/m365group/m365group-renew.js +1 -0
  62. package/dist/m365/entra/commands/m365group/m365group-set.js +1 -0
  63. package/dist/m365/entra/commands/m365group/m365group-teamify.js +1 -0
  64. package/dist/m365/entra/commands/m365group/m365group-user-add.js +1 -0
  65. package/dist/m365/entra/commands/m365group/m365group-user-list.js +1 -0
  66. package/dist/m365/entra/commands/m365group/m365group-user-remove.js +1 -0
  67. package/dist/m365/entra/commands/m365group/m365group-user-set.js +1 -0
  68. package/dist/m365/entra/commands/oauth2grant/oauth2grant-add.js +1 -0
  69. package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +1 -0
  70. package/dist/m365/entra/commands/oauth2grant/oauth2grant-remove.js +1 -0
  71. package/dist/m365/entra/commands/oauth2grant/oauth2grant-set.js +1 -0
  72. package/dist/m365/entra/commands/policy/policy-list.js +1 -0
  73. package/dist/m365/entra/commands/siteclassification/siteclassification-disable.js +1 -0
  74. package/dist/m365/entra/commands/siteclassification/siteclassification-enable.js +1 -0
  75. package/dist/m365/entra/commands/siteclassification/siteclassification-get.js +1 -0
  76. package/dist/m365/entra/commands/siteclassification/siteclassification-set.js +1 -0
  77. package/dist/m365/entra/commands/user/user-add.js +1 -0
  78. package/dist/m365/entra/commands/user/user-get.js +1 -0
  79. package/dist/m365/entra/commands/user/user-guest-add.js +1 -0
  80. package/dist/m365/entra/commands/user/user-hibp.js +1 -0
  81. package/dist/m365/entra/commands/user/user-license-add.js +1 -0
  82. package/dist/m365/entra/commands/user/user-license-list.js +1 -0
  83. package/dist/m365/entra/commands/user/user-license-remove.js +1 -0
  84. package/dist/m365/entra/commands/user/user-list.js +1 -0
  85. package/dist/m365/entra/commands/user/user-password-validate.js +1 -0
  86. package/dist/m365/entra/commands/user/user-recyclebinitem-clear.js +1 -0
  87. package/dist/m365/entra/commands/user/user-recyclebinitem-list.js +1 -0
  88. package/dist/m365/entra/commands/user/user-recyclebinitem-remove.js +2 -1
  89. package/dist/m365/entra/commands/user/user-recyclebinitem-restore.js +1 -0
  90. package/dist/m365/entra/commands/user/user-remove.js +1 -0
  91. package/dist/m365/entra/commands/user/user-set.js +1 -0
  92. package/dist/m365/entra/commands/user/user-signin-list.js +1 -0
  93. package/dist/m365/outlook/commands/message/message-remove.js +113 -0
  94. package/dist/m365/outlook/commands.js +1 -0
  95. package/dist/m365/pp/commands/managementapp/managementapp-add.js +7 -7
  96. package/dist/m365/spfx/commands/project/DeployWorkflow.js +111 -0
  97. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +183 -0
  98. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-model.js +2 -0
  99. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +6 -4
  100. package/dist/m365/spfx/commands.js +1 -0
  101. package/dist/m365/spo/commands/folder/FolderColor.js +19 -0
  102. package/dist/m365/spo/commands/folder/folder-add.js +46 -17
  103. package/dist/m365/spo/commands/folder/folder-set.js +118 -0
  104. package/dist/m365/spo/commands/group/group-member-add.js +2 -2
  105. package/dist/m365/spo/commands/group/group-member-remove.js +1 -1
  106. package/dist/m365/spo/commands/site/site-apppermission-add.js +2 -2
  107. package/dist/m365/spo/commands/site/site-recyclebinitem-restore.js +66 -27
  108. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +1 -1
  109. package/dist/m365/spo/commands/user/user-remove.js +93 -16
  110. package/dist/m365/spo/commands.js +1 -0
  111. package/dist/m365/teams/commands/report/report-directroutingcalls.js +3 -0
  112. package/dist/m365/teams/commands/report/report-pstncalls.js +3 -0
  113. package/dist/m365/teams/commands/tab/tab-get.js +1 -1
  114. package/dist/m365/teams/commands/team/team-add.js +132 -3
  115. package/dist/m365/tenant/commands/report/report-office365activationcounts.js +3 -0
  116. package/dist/m365/tenant/commands/report/report-office365activationsusercounts.js +3 -0
  117. package/dist/m365/tenant/commands/report/report-office365activationsuserdetail.js +3 -0
  118. package/dist/utils/entraUser.js +36 -0
  119. package/dist/utils/spo.js +1 -1
  120. package/docs/docs/cmd/app/app-get.mdx +10 -10
  121. package/docs/docs/cmd/app/app-open.mdx +6 -6
  122. package/docs/docs/cmd/app/permission/permission-add.mdx +2 -2
  123. package/docs/docs/cmd/app/permission/permission-list.mdx +5 -5
  124. package/docs/docs/cmd/cli/cli-consent.mdx +2 -2
  125. package/docs/docs/cmd/cli/cli-reconsent.mdx +6 -6
  126. package/docs/docs/cmd/entra/app/app-permission-add.mdx +6 -6
  127. package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +1 -1
  128. package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +4 -4
  129. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +1 -1
  130. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +1 -1
  131. package/docs/docs/cmd/entra/group/group-user-add.mdx +7 -7
  132. package/docs/docs/cmd/entra/m365group/m365group-report-activitycounts.mdx +8 -0
  133. package/docs/docs/cmd/entra/m365group/m365group-report-activitydetail.mdx +8 -0
  134. package/docs/docs/cmd/entra/m365group/m365group-report-activityfilecounts.mdx +8 -0
  135. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +8 -0
  136. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +8 -0
  137. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +1 -1
  138. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -1
  139. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +1 -1
  140. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +1 -1
  141. package/docs/docs/cmd/external/connection/connection-add.mdx +2 -2
  142. package/docs/docs/cmd/file/file-add.mdx +1 -1
  143. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.mdx +2 -2
  144. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.mdx +1 -1
  145. package/docs/docs/cmd/login.mdx +18 -18
  146. package/docs/docs/cmd/onedrive/report/report-activityfilecounts.mdx +8 -0
  147. package/docs/docs/cmd/onedrive/report/report-activityusercounts.mdx +8 -0
  148. package/docs/docs/cmd/onedrive/report/report-activityuserdetail.mdx +8 -0
  149. package/docs/docs/cmd/onedrive/report/report-usageaccountcounts.mdx +8 -0
  150. package/docs/docs/cmd/onedrive/report/report-usageaccountdetail.mdx +8 -0
  151. package/docs/docs/cmd/onedrive/report/report-usagefilecounts.mdx +6 -0
  152. package/docs/docs/cmd/onedrive/report/report-usagestorage.mdx +8 -0
  153. package/docs/docs/cmd/outlook/message/message-remove.mdx +67 -0
  154. package/docs/docs/cmd/outlook/report/report-mailactivitycounts.mdx +8 -0
  155. package/docs/docs/cmd/outlook/report/report-mailactivityusercounts.mdx +8 -0
  156. package/docs/docs/cmd/outlook/report/report-mailactivityuserdetail.mdx +8 -0
  157. package/docs/docs/cmd/outlook/report/report-mailappusageappsusercounts.mdx +7 -0
  158. package/docs/docs/cmd/outlook/report/report-mailappusageusercounts.mdx +8 -0
  159. package/docs/docs/cmd/outlook/report/report-mailappusageuserdetail.mdx +8 -0
  160. package/docs/docs/cmd/outlook/report/report-mailappusageversionsusercounts.mdx +8 -0
  161. package/docs/docs/cmd/outlook/report/report-mailboxusagedetail.mdx +8 -0
  162. package/docs/docs/cmd/outlook/report/report-mailboxusagemailboxcount.mdx +6 -0
  163. package/docs/docs/cmd/outlook/report/report-mailboxusagequotastatusmailboxcounts.mdx +8 -0
  164. package/docs/docs/cmd/outlook/report/report-mailboxusagestorage.mdx +8 -0
  165. package/docs/docs/cmd/pa/app/app-owner-set.mdx +1 -1
  166. package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +3 -3
  167. package/docs/docs/cmd/pa/app/app-permission-remove.mdx +3 -3
  168. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  169. package/docs/docs/cmd/planner/roster/roster-add.mdx +5 -5
  170. package/docs/docs/cmd/planner/roster/roster-get.mdx +7 -7
  171. package/docs/docs/cmd/planner/roster/roster-member-add.mdx +4 -4
  172. package/docs/docs/cmd/planner/roster/roster-member-get.mdx +4 -4
  173. package/docs/docs/cmd/planner/roster/roster-member-list.mdx +2 -2
  174. package/docs/docs/cmd/planner/roster/roster-member-remove.mdx +5 -5
  175. package/docs/docs/cmd/planner/roster/roster-plan-list.mdx +1 -1
  176. package/docs/docs/cmd/planner/roster/roster-remove.mdx +2 -2
  177. package/docs/docs/cmd/planner/task/task-add.mdx +1 -1
  178. package/docs/docs/cmd/planner/task/task-get.mdx +1 -1
  179. package/docs/docs/cmd/planner/task/task-list.mdx +1 -1
  180. package/docs/docs/cmd/planner/task/task-remove.mdx +1 -1
  181. package/docs/docs/cmd/planner/task/task-set.mdx +1 -1
  182. package/docs/docs/cmd/pp/environment/environment-get.mdx +1 -1
  183. package/docs/docs/cmd/pp/environment/environment-list.mdx +1 -1
  184. package/docs/docs/cmd/pp/managementapp/managementapp-add.mdx +9 -9
  185. package/docs/docs/cmd/purview/auditlog/auditlog-list.mdx +1 -1
  186. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-get.mdx +1 -1
  187. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-list.mdx +1 -1
  188. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.mdx +1 -1
  189. package/docs/docs/cmd/request.mdx +1 -1
  190. package/docs/docs/cmd/skype/report/report-activitycounts.mdx +8 -0
  191. package/docs/docs/cmd/skype/report/report-activityusercounts.mdx +8 -0
  192. package/docs/docs/cmd/skype/report/report-activityuserdetail.mdx +8 -0
  193. package/docs/docs/cmd/spfx/project/project-azuredevops-pipeline-add.mdx +87 -0
  194. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +2 -2
  195. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +3 -3
  196. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +2 -2
  197. package/docs/docs/cmd/spo/folder/folder-add.mdx +38 -0
  198. package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +1 -1
  199. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
  200. package/docs/docs/cmd/spo/folder/folder-set.mdx +88 -0
  201. package/docs/docs/cmd/spo/group/group-member-add.mdx +2 -2
  202. package/docs/docs/cmd/spo/group/group-member-remove.mdx +3 -3
  203. package/docs/docs/cmd/spo/list/list-roleassignment-add.mdx +3 -3
  204. package/docs/docs/cmd/spo/list/list-roleassignment-remove.mdx +2 -2
  205. package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.mdx +8 -8
  206. package/docs/docs/cmd/spo/listitem/listitem-roleassignment-remove.mdx +2 -2
  207. package/docs/docs/cmd/spo/report/report-activityfilecounts.mdx +8 -0
  208. package/docs/docs/cmd/spo/report/report-activitypages.mdx +8 -0
  209. package/docs/docs/cmd/spo/report/report-activityusercounts.mdx +6 -0
  210. package/docs/docs/cmd/spo/report/report-activityuserdetail.mdx +6 -0
  211. package/docs/docs/cmd/spo/report/report-siteusagedetail.mdx +6 -0
  212. package/docs/docs/cmd/spo/report/report-siteusagefilecounts.mdx +6 -0
  213. package/docs/docs/cmd/spo/report/report-siteusagepages.mdx +8 -0
  214. package/docs/docs/cmd/spo/report/report-siteusagesitecounts.mdx +6 -0
  215. package/docs/docs/cmd/spo/report/report-siteusagestorage.mdx +8 -0
  216. package/docs/docs/cmd/spo/site/site-apppermission-add.mdx +2 -2
  217. package/docs/docs/cmd/spo/site/site-apppermission-set.mdx +2 -2
  218. package/docs/docs/cmd/spo/site/site-recyclebinitem-restore.mdx +29 -5
  219. package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +89 -89
  220. package/docs/docs/cmd/spo/user/user-ensure.mdx +1 -1
  221. package/docs/docs/cmd/spo/user/user-remove.mdx +40 -9
  222. package/docs/docs/cmd/spo/web/web-roleassignment-add.mdx +3 -3
  223. package/docs/docs/cmd/spo/web/web-roleassignment-remove.mdx +2 -2
  224. package/docs/docs/cmd/teams/channel/channel-member-remove.mdx +1 -1
  225. package/docs/docs/cmd/teams/channel/channel-member-set.mdx +1 -1
  226. package/docs/docs/cmd/teams/chat/chat-member-remove.mdx +3 -3
  227. package/docs/docs/cmd/teams/report/report-deviceusagedistributionusercounts.mdx +8 -0
  228. package/docs/docs/cmd/teams/report/report-deviceusageusercounts.mdx +8 -0
  229. package/docs/docs/cmd/teams/report/report-deviceusageuserdetail.mdx +6 -0
  230. package/docs/docs/cmd/teams/report/report-directroutingcalls.mdx +7 -1
  231. package/docs/docs/cmd/teams/report/report-pstncalls.mdx +7 -1
  232. package/docs/docs/cmd/teams/report/report-useractivitycounts.mdx +8 -0
  233. package/docs/docs/cmd/teams/report/report-useractivityusercounts.mdx +8 -0
  234. package/docs/docs/cmd/teams/report/report-useractivityuserdetail.mdx +8 -0
  235. package/docs/docs/cmd/teams/tab/tab-get.mdx +19 -12
  236. package/docs/docs/cmd/teams/team/team-add.mdx +28 -4
  237. package/docs/docs/cmd/tenant/report/report-activeusercounts.mdx +8 -0
  238. package/docs/docs/cmd/tenant/report/report-activeuserdetail.mdx +6 -0
  239. package/docs/docs/cmd/tenant/report/report-office365activationcounts.mdx +8 -0
  240. package/docs/docs/cmd/tenant/report/report-office365activationsusercounts.mdx +8 -0
  241. package/docs/docs/cmd/tenant/report/report-office365activationsuserdetail.mdx +8 -0
  242. package/docs/docs/cmd/tenant/report/report-servicesusercounts.mdx +8 -0
  243. package/docs/docs/cmd/tenant/security/security-alerts-list.mdx +1 -1
  244. package/docs/docs/cmd/viva/engage/engage-group-list.mdx +1 -1
  245. package/docs/docs/cmd/viva/engage/engage-group-user-add.mdx +1 -1
  246. package/docs/docs/cmd/viva/engage/engage-group-user-remove.mdx +1 -1
  247. package/docs/docs/cmd/viva/engage/engage-message-add.mdx +1 -1
  248. package/docs/docs/cmd/viva/engage/engage-message-get.mdx +1 -1
  249. package/docs/docs/cmd/viva/engage/engage-message-like-set.mdx +1 -1
  250. package/docs/docs/cmd/viva/engage/engage-message-list.mdx +1 -1
  251. package/docs/docs/cmd/viva/engage/engage-message-remove.mdx +1 -1
  252. package/docs/docs/cmd/viva/engage/engage-network-list.mdx +1 -1
  253. package/docs/docs/cmd/viva/engage/engage-report-activitycounts.mdx +8 -0
  254. package/docs/docs/cmd/viva/engage/engage-report-activityusercounts.mdx +8 -0
  255. package/docs/docs/cmd/viva/engage/engage-report-activityuserdetail.mdx +6 -0
  256. package/docs/docs/cmd/viva/engage/engage-report-deviceusagedistributionusercounts.mdx +8 -0
  257. package/docs/docs/cmd/viva/engage/engage-report-deviceusageusercounts.mdx +8 -0
  258. package/docs/docs/cmd/viva/engage/engage-report-deviceusageuserdetail.mdx +6 -0
  259. package/docs/docs/cmd/viva/engage/engage-report-groupsactivitycounts.mdx +8 -0
  260. package/docs/docs/cmd/viva/engage/engage-report-groupsactivitydetail.mdx +6 -0
  261. package/docs/docs/cmd/viva/engage/engage-report-groupsactivitygroupcounts.mdx +8 -0
  262. package/docs/docs/cmd/viva/engage/engage-search.mdx +1 -1
  263. package/docs/docs/cmd/viva/engage/engage-user-get.mdx +1 -1
  264. package/docs/docs/cmd/viva/engage/engage-user-list.mdx +1 -1
  265. package/npm-shrinkwrap.json +62 -58
  266. package/package.json +11 -11
  267. package/dist/m365/spo/commands/folder/folder-rename.js +0 -72
  268. package/docs/docs/cmd/spo/folder/folder-rename.mdx +0 -44
@@ -29,6 +29,7 @@ class EntraUserRemoveCommand extends GraphCommand {
29
29
  __classPrivateFieldGet(this, _EntraUserRemoveCommand_instances, "m", _EntraUserRemoveCommand_initOptionSets).call(this);
30
30
  }
31
31
  async commandAction(logger, args) {
32
+ await this.showDeprecationWarning(logger, aadCommands.USER_REMOVE, commands.USER_REMOVE);
32
33
  if (this.verbose) {
33
34
  await logger.logToStderr(`Removing user '${args.options.id || args.options.userName}'...`);
34
35
  }
@@ -35,6 +35,7 @@ class EntraUserSetCommand extends GraphCommand {
35
35
  __classPrivateFieldGet(this, _EntraUserSetCommand_instances, "m", _EntraUserSetCommand_initOptionSets).call(this);
36
36
  }
37
37
  async commandAction(logger, args) {
38
+ await this.showDeprecationWarning(logger, aadCommands.USER_SET, commands.USER_SET);
38
39
  try {
39
40
  if (args.options.currentPassword) {
40
41
  if (args.options.id && args.options.id !== accessToken.getUserIdFromAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken)) {
@@ -31,6 +31,7 @@ class EntraUserSigninListCommand extends GraphCommand {
31
31
  return ['id', 'userPrincipalName', 'appId', 'appDisplayName', 'createdDateTime'];
32
32
  }
33
33
  async commandAction(logger, args) {
34
+ await this.showDeprecationWarning(logger, aadCommands.USER_SIGNIN_LIST, commands.USER_SIGNIN_LIST);
34
35
  try {
35
36
  let endpoint = `${this.resource}/v1.0/auditLogs/signIns`;
36
37
  let filter = "";
@@ -0,0 +1,113 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _OutlookMessageRemoveCommand_instances, _OutlookMessageRemoveCommand_initTelemetry, _OutlookMessageRemoveCommand_initOptions, _OutlookMessageRemoveCommand_initValidators, _OutlookMessageRemoveCommand_initTypes;
7
+ import auth from '../../../../Auth.js';
8
+ import request from '../../../../request.js';
9
+ import { accessToken } from '../../../../utils/accessToken.js';
10
+ import GraphCommand from '../../../base/GraphCommand.js';
11
+ import commands from '../../commands.js';
12
+ import { cli } from '../../../../cli/cli.js';
13
+ import { validation } from '../../../../utils/validation.js';
14
+ import { formatting } from '../../../../utils/formatting.js';
15
+ class OutlookMessageRemoveCommand extends GraphCommand {
16
+ get name() {
17
+ return commands.MESSAGE_REMOVE;
18
+ }
19
+ get description() {
20
+ return 'Permanently removes a specific message from a mailbox';
21
+ }
22
+ constructor() {
23
+ super();
24
+ _OutlookMessageRemoveCommand_instances.add(this);
25
+ __classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initTelemetry).call(this);
26
+ __classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initOptions).call(this);
27
+ __classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initValidators).call(this);
28
+ __classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initTypes).call(this);
29
+ }
30
+ async commandAction(logger, args) {
31
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
32
+ let principalUrl = '';
33
+ if (isAppOnlyAccessToken) {
34
+ if (!args.options.userId && !args.options.userName) {
35
+ throw `The option 'userId' or 'userName' is required when removing a message using application permissions.`;
36
+ }
37
+ if (args.options.userId && args.options.userName) {
38
+ throw `Both options 'userId' and 'userName' cannot be used together when removing a message using application permissions.`;
39
+ }
40
+ }
41
+ else {
42
+ if (args.options.userId && args.options.userName) {
43
+ throw `Both options 'userId' and 'userName' cannot be used together when removing a message using delegated permissions.`;
44
+ }
45
+ }
46
+ if (args.options.userId || args.options.userName) {
47
+ principalUrl += `users/${args.options.userId || formatting.encodeQueryParameter(args.options.userName)}`;
48
+ }
49
+ else {
50
+ principalUrl += 'me';
51
+ }
52
+ const removeMessage = async () => {
53
+ try {
54
+ if (this.verbose) {
55
+ await logger.logToStderr(`Removing message with id '${args.options.id}' using ${isAppOnlyAccessToken ? 'application' : 'delegated'} permissions.`);
56
+ }
57
+ const requestOptions = {
58
+ url: `${this.resource}/v1.0/${principalUrl}/messages/${args.options.id}`,
59
+ headers: {
60
+ accept: 'application/json;odata.metadata=none'
61
+ }
62
+ };
63
+ await request.delete(requestOptions);
64
+ }
65
+ catch (err) {
66
+ this.handleRejectedODataJsonPromise(err);
67
+ }
68
+ };
69
+ if (args.options.force) {
70
+ await removeMessage();
71
+ }
72
+ else {
73
+ const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove message with id '${args.options.id}'?` });
74
+ if (result) {
75
+ await removeMessage();
76
+ }
77
+ }
78
+ }
79
+ }
80
+ _OutlookMessageRemoveCommand_instances = new WeakSet(), _OutlookMessageRemoveCommand_initTelemetry = function _OutlookMessageRemoveCommand_initTelemetry() {
81
+ this.telemetry.push((args) => {
82
+ Object.assign(this.telemetryProperties, {
83
+ userId: typeof args.options.userId !== 'undefined',
84
+ userName: typeof args.options.userName !== 'undefined',
85
+ force: !!args.options.force
86
+ });
87
+ });
88
+ }, _OutlookMessageRemoveCommand_initOptions = function _OutlookMessageRemoveCommand_initOptions() {
89
+ this.options.unshift({
90
+ option: '-i, --id <id>'
91
+ }, {
92
+ option: '--userId [userId]'
93
+ }, {
94
+ option: '--userName [userName]'
95
+ }, {
96
+ option: '-f, --force'
97
+ });
98
+ }, _OutlookMessageRemoveCommand_initValidators = function _OutlookMessageRemoveCommand_initValidators() {
99
+ this.validators.push(async (args) => {
100
+ if (args.options.userId && !validation.isValidGuid(args.options.userId)) {
101
+ return `Value '${args.options.userId}' is not a valid GUID for option 'userId'.`;
102
+ }
103
+ if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
104
+ return `Value '${args.options.userName}' is not a valid user principal name for option 'userName'.`;
105
+ }
106
+ return true;
107
+ });
108
+ }, _OutlookMessageRemoveCommand_initTypes = function _OutlookMessageRemoveCommand_initTypes() {
109
+ this.types.string.push('id', 'userId', 'userName');
110
+ this.types.boolean.push('force');
111
+ };
112
+ export default new OutlookMessageRemoveCommand();
113
+ //# sourceMappingURL=message-remove.js.map
@@ -4,6 +4,7 @@ export default {
4
4
  MESSAGE_GET: `${prefix} message get`,
5
5
  MESSAGE_LIST: `${prefix} message list`,
6
6
  MESSAGE_MOVE: `${prefix} message move`,
7
+ MESSAGE_REMOVE: `${prefix} message remove`,
7
8
  REPORT_MAILACTIVITYCOUNTS: `${prefix} report mailactivitycounts`,
8
9
  REPORT_MAILACTIVITYUSERCOUNTS: `${prefix} report mailactivityusercounts`,
9
10
  REPORT_MAILACTIVITYUSERDETAIL: `${prefix} report mailactivityuserdetail`,
@@ -58,16 +58,16 @@ class PpManagementAppAddCommand extends PowerPlatformCommand {
58
58
  },
59
59
  responseType: 'json'
60
60
  };
61
- const aadApps = await request.get((requestOptions));
62
- if (aadApps.value.length === 0) {
61
+ const entraApps = await request.get((requestOptions));
62
+ if (entraApps.value.length === 0) {
63
63
  const applicationIdentifier = objectId ? `ID ${objectId}` : `name ${name}`;
64
- throw `No Azure AD application registration with ${applicationIdentifier} found`;
64
+ throw `No Microsoft Entra application registration with ${applicationIdentifier} found`;
65
65
  }
66
- if (aadApps.value.length === 1 && aadApps.value[0].appId) {
67
- return aadApps.value[0].appId;
66
+ if (entraApps.value.length === 1 && entraApps.value[0].appId) {
67
+ return entraApps.value[0].appId;
68
68
  }
69
- const resultAsKeyValuePair = formatting.convertArrayToHashTable('appId', aadApps.value);
70
- const result = await cli.handleMultipleResultsFound(`Multiple Azure AD application registration with name '${name}' found.`, resultAsKeyValuePair);
69
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('appId', entraApps.value);
70
+ const result = await cli.handleMultipleResultsFound(`Multiple Microsoft Entra application registrations with name '${name}' found.`, resultAsKeyValuePair);
71
71
  return result.appId;
72
72
  }
73
73
  }
@@ -53,4 +53,115 @@ export const workflow = {
53
53
  }
54
54
  }
55
55
  };
56
+ export const pipeline = {
57
+ name: "Deploy Solution",
58
+ trigger: {
59
+ branches: {
60
+ include: [
61
+ "main"
62
+ ]
63
+ }
64
+ },
65
+ pool: {
66
+ vmImage: "ubuntu-latest"
67
+ },
68
+ variables: [
69
+ {
70
+ name: "CertificateBase64Encoded",
71
+ value: ""
72
+ },
73
+ {
74
+ name: "CertificateSecureFileId",
75
+ value: ""
76
+ },
77
+ {
78
+ name: "CertificatePassword",
79
+ value: ""
80
+ },
81
+ {
82
+ name: "EntraAppId",
83
+ value: ""
84
+ },
85
+ {
86
+ name: "UserName",
87
+ value: ""
88
+ },
89
+ {
90
+ name: "Password",
91
+ value: ""
92
+ },
93
+ {
94
+ name: "TenantId",
95
+ value: ""
96
+ },
97
+ {
98
+ name: "SharePointBaseUrl",
99
+ value: ""
100
+ },
101
+ {
102
+ name: "PackageName",
103
+ value: ""
104
+ },
105
+ {
106
+ name: "SiteAppCatalogUrl",
107
+ value: ""
108
+ }
109
+ ],
110
+ stages: [
111
+ {
112
+ stage: "Build_and_Deploy",
113
+ jobs: [
114
+ {
115
+ job: "Build_and_Deploy",
116
+ steps: [
117
+ {
118
+ task: "NodeTool@0",
119
+ displayName: "Use Node.js",
120
+ inputs: {
121
+ versionSpec: "18.x"
122
+ }
123
+ },
124
+ {
125
+ task: "Npm@1",
126
+ displayName: "Run npm install",
127
+ inputs: {
128
+ command: "install"
129
+ }
130
+ },
131
+ {
132
+ task: "Gulp@0",
133
+ displayName: "Gulp bundle",
134
+ inputs: {
135
+ gulpFile: "./gulpfile.js",
136
+ targets: "bundle",
137
+ arguments: "--ship"
138
+ }
139
+ },
140
+ {
141
+ task: "Gulp@0",
142
+ displayName: "Gulp package",
143
+ inputs: {
144
+ targets: "package-solution",
145
+ arguments: "--ship"
146
+ }
147
+ },
148
+ {
149
+ task: "Npm@1",
150
+ displayName: "Install CLI for Microsoft 365",
151
+ inputs: {
152
+ command: "custom",
153
+ verbose: false,
154
+ customCommand: "install -g @pnp/cli-microsoft365"
155
+ }
156
+ },
157
+ {
158
+ script: "\n{{login}} \nm365 spo set --url '$(SharePointBaseUrl)' \n{{addApp}} \n{{deploy}}\n",
159
+ displayName: "CLI for Microsoft 365 Deploy App"
160
+ }
161
+ ]
162
+ }
163
+ ]
164
+ }
165
+ ]
166
+ };
56
167
  //# sourceMappingURL=DeployWorkflow.js.map
@@ -0,0 +1,183 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _SpfxProjectAzureDevOpsPipelineAddCommand_instances, _a, _SpfxProjectAzureDevOpsPipelineAddCommand_initTelemetry, _SpfxProjectAzureDevOpsPipelineAddCommand_initOptions, _SpfxProjectAzureDevOpsPipelineAddCommand_initValidators;
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import yaml from 'yaml';
10
+ import { CommandError } from '../../../../Command.js';
11
+ import commands from '../../commands.js';
12
+ import { BaseProjectCommand } from './base-project-command.js';
13
+ import { validation } from '../../../../utils/validation.js';
14
+ import { pipeline } from './DeployWorkflow.js';
15
+ import { fsUtil } from '../../../../utils/fsUtil.js';
16
+ import { parse } from 'semver';
17
+ class SpfxProjectAzureDevOpsPipelineAddCommand extends BaseProjectCommand {
18
+ get name() {
19
+ return commands.PROJECT_AZUREDEVOPS_PIPELINE_ADD;
20
+ }
21
+ get description() {
22
+ return 'Adds a Azure DevOps Pipeline for a SharePoint Framework project.';
23
+ }
24
+ constructor() {
25
+ super();
26
+ _SpfxProjectAzureDevOpsPipelineAddCommand_instances.add(this);
27
+ __classPrivateFieldGet(this, _SpfxProjectAzureDevOpsPipelineAddCommand_instances, "m", _SpfxProjectAzureDevOpsPipelineAddCommand_initTelemetry).call(this);
28
+ __classPrivateFieldGet(this, _SpfxProjectAzureDevOpsPipelineAddCommand_instances, "m", _SpfxProjectAzureDevOpsPipelineAddCommand_initOptions).call(this);
29
+ __classPrivateFieldGet(this, _SpfxProjectAzureDevOpsPipelineAddCommand_instances, "m", _SpfxProjectAzureDevOpsPipelineAddCommand_initValidators).call(this);
30
+ }
31
+ async commandAction(logger, args) {
32
+ this.projectRootPath = this.getProjectRoot(process.cwd());
33
+ if (this.projectRootPath === null) {
34
+ throw new CommandError(`Couldn't find project root folder`, _a.ERROR_NO_PROJECT_ROOT_FOLDER);
35
+ }
36
+ const solutionPackageJsonFile = path.join(this.projectRootPath, 'package.json');
37
+ const packageJson = fs.readFileSync(solutionPackageJsonFile, 'utf-8');
38
+ const solutionName = JSON.parse(packageJson).name;
39
+ if (this.debug) {
40
+ logger.logToStderr(`Adding Azure DevOps pipeline in the current SPFx project`);
41
+ }
42
+ try {
43
+ this.updatePipeline(solutionName, pipeline, args.options);
44
+ this.savePipeline(pipeline);
45
+ }
46
+ catch (error) {
47
+ throw new CommandError(error);
48
+ }
49
+ }
50
+ savePipeline(pipeline) {
51
+ const azureDevOpsPath = path.join(this.projectRootPath, '.azuredevops');
52
+ fsUtil.ensureDirectory(azureDevOpsPath);
53
+ const pipelinesPath = path.join(azureDevOpsPath, 'pipelines');
54
+ fsUtil.ensureDirectory(pipelinesPath);
55
+ const pipelineFile = path.join(pipelinesPath, 'deploy-spfx-solution.yml');
56
+ fs.writeFileSync(path.resolve(pipelineFile), yaml.stringify(pipeline), 'utf-8');
57
+ }
58
+ updatePipeline(solutionName, pipeline, options) {
59
+ if (options.name) {
60
+ pipeline.name = options.name;
61
+ }
62
+ else {
63
+ delete pipeline.name;
64
+ }
65
+ if (options.branchName) {
66
+ pipeline.trigger.branches.include[0] = options.branchName;
67
+ }
68
+ const version = this.getProjectVersion();
69
+ if (!version) {
70
+ throw `Unable to determine the version of the current SharePoint Framework project`;
71
+ }
72
+ const minorVersion = parse(version)?.minor;
73
+ if (minorVersion === undefined) {
74
+ throw `Unable to determine the minor version of the current SharePoint Framework project`;
75
+ }
76
+ if (minorVersion < 18) {
77
+ const node = this.getNodeAction(pipeline);
78
+ if (node.inputs) {
79
+ node.inputs.versionSpec = '16.x';
80
+ }
81
+ }
82
+ const script = this.getScriptAction(pipeline);
83
+ if (script.script) {
84
+ if (options.loginMethod === 'user') {
85
+ script.script = script.script.replace(`{{login}}`, `m365 login --authType password --userName '$(UserName)' --password '$(Password)'`);
86
+ pipeline.variables = pipeline.variables.filter(v => v.name !== 'CertificateBase64Encoded' &&
87
+ v.name !== 'CertificateSecureFileId' &&
88
+ v.name !== 'CertificatePassword' &&
89
+ v.name !== 'EntraAppId' &&
90
+ v.name !== 'TenantId');
91
+ }
92
+ else {
93
+ script.script = script.script.replace(`{{login}}`, `m365 login --authType certificate --certificateBase64Encoded '$(CertificateBase64Encoded)' --password '$(CertificatePassword)' --appId '$(EntraAppId)' --tenant '$(TenantId)'`);
94
+ pipeline.variables = pipeline.variables.filter(v => v.name !== 'UserName' &&
95
+ v.name !== 'Password');
96
+ }
97
+ if (options.scope === 'sitecollection') {
98
+ script.script = script.script.replace(`{{deploy}}`, `m365 spo app deploy --name '$(PackageName)' --appCatalogScope sitecollection --appCatalogUrl '$(SiteAppCatalogUrl)'`);
99
+ script.script = script.script.replace(`{{addApp}}`, `m365 spo app add --filePath '$(Build.SourcesDirectory)/sharepoint/solution/$(PackageName)' --appCatalogScope sitecollection --appCatalogUrl '$(SiteAppCatalogUrl)' --overwrite`);
100
+ this.assignPipelineVariables(pipeline, 'SiteAppCatalogUrl', options.siteUrl);
101
+ }
102
+ else {
103
+ script.script = script.script.replace(`{{deploy}}`, `m365 spo app deploy --name '$(PackageName)' --appCatalogScope 'tenant'`);
104
+ script.script = script.script.replace(`{{addApp}}`, `m365 spo app add --filePath '$(Build.SourcesDirectory)/sharepoint/solution/$(PackageName)' --overwrite`);
105
+ pipeline.variables = pipeline.variables.filter(v => v.name !== 'SiteAppCatalogUrl');
106
+ }
107
+ if (solutionName) {
108
+ this.assignPipelineVariables(pipeline, 'PackageName', `${solutionName}.sppkg`);
109
+ }
110
+ if (options.skipFeatureDeployment) {
111
+ script.script = script.script.replace(`m365 spo app deploy `, `m365 spo app deploy --skipFeatureDeployment `);
112
+ }
113
+ }
114
+ }
115
+ assignPipelineVariables(pipeline, variableName, newVariableValue) {
116
+ const variable = pipeline.variables.find(v => v.name === variableName);
117
+ if (variable) {
118
+ variable.value = newVariableValue;
119
+ }
120
+ }
121
+ getScriptAction(pipeline) {
122
+ const steps = this.getPipelineSteps(pipeline);
123
+ return steps.find(step => step.script);
124
+ }
125
+ getNodeAction(pipeline) {
126
+ const steps = this.getPipelineSteps(pipeline);
127
+ return steps.find(step => step.task && step.task.indexOf('NodeTool') >= 0);
128
+ }
129
+ getPipelineSteps(pipeline) {
130
+ return pipeline.stages[0].jobs[0].steps;
131
+ }
132
+ }
133
+ _a = SpfxProjectAzureDevOpsPipelineAddCommand, _SpfxProjectAzureDevOpsPipelineAddCommand_instances = new WeakSet(), _SpfxProjectAzureDevOpsPipelineAddCommand_initTelemetry = function _SpfxProjectAzureDevOpsPipelineAddCommand_initTelemetry() {
134
+ this.telemetry.push((args) => {
135
+ Object.assign(this.telemetryProperties, {
136
+ name: typeof args.options.name !== 'undefined',
137
+ branchName: typeof args.options.branchName !== 'undefined',
138
+ loginMethod: typeof args.options.loginMethod !== 'undefined',
139
+ scope: typeof args.options.scope !== 'undefined',
140
+ skipFeatureDeployment: !!args.options.skipFeatureDeployment
141
+ });
142
+ });
143
+ }, _SpfxProjectAzureDevOpsPipelineAddCommand_initOptions = function _SpfxProjectAzureDevOpsPipelineAddCommand_initOptions() {
144
+ this.options.unshift({
145
+ option: '-n, --name [name]'
146
+ }, {
147
+ option: '-b, --branchName [branchName]'
148
+ }, {
149
+ option: '-l, --loginMethod [loginMethod]',
150
+ autocomplete: _a.loginMethod
151
+ }, {
152
+ option: '-s, --scope [scope]',
153
+ autocomplete: _a.scope
154
+ }, {
155
+ option: '-u, --siteUrl [siteUrl]'
156
+ }, {
157
+ option: '--skipFeatureDeployment'
158
+ });
159
+ }, _SpfxProjectAzureDevOpsPipelineAddCommand_initValidators = function _SpfxProjectAzureDevOpsPipelineAddCommand_initValidators() {
160
+ this.validators.push(async (args) => {
161
+ if (args.options.scope && args.options.scope === 'sitecollection') {
162
+ if (!args.options.siteUrl) {
163
+ return `siteUrl option has to be defined when scope set to ${args.options.scope}`;
164
+ }
165
+ const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.siteUrl);
166
+ if (isValidSharePointUrl !== true) {
167
+ return isValidSharePointUrl;
168
+ }
169
+ }
170
+ if (args.options.loginMethod && _a.loginMethod.indexOf(args.options.loginMethod) < 0) {
171
+ return `${args.options.loginMethod} is not a valid login method. Allowed values are ${_a.loginMethod.join(', ')}`;
172
+ }
173
+ if (args.options.scope && _a.scope.indexOf(args.options.scope) < 0) {
174
+ return `${args.options.scope} is not a valid scope. Allowed values are ${_a.scope.join(', ')}`;
175
+ }
176
+ return true;
177
+ });
178
+ };
179
+ SpfxProjectAzureDevOpsPipelineAddCommand.loginMethod = ['application', 'user'];
180
+ SpfxProjectAzureDevOpsPipelineAddCommand.scope = ['tenant', 'sitecollection'];
181
+ SpfxProjectAzureDevOpsPipelineAddCommand.ERROR_NO_PROJECT_ROOT_FOLDER = 1;
182
+ export default new SpfxProjectAzureDevOpsPipelineAddCommand();
183
+ //# sourceMappingURL=project-azuredevops-pipeline-add.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=project-azuredevops-pipeline-model.js.map
@@ -13,6 +13,7 @@ import { validation } from '../../../../utils/validation.js';
13
13
  import commands from '../../commands.js';
14
14
  import { workflow } from './DeployWorkflow.js';
15
15
  import { BaseProjectCommand } from './base-project-command.js';
16
+ import { parse } from 'semver';
16
17
  class SpfxProjectGithubWorkflowAddCommand extends BaseProjectCommand {
17
18
  get name() {
18
19
  return commands.PROJECT_GITHUB_WORKFLOW_ADD;
@@ -32,6 +33,9 @@ class SpfxProjectGithubWorkflowAddCommand extends BaseProjectCommand {
32
33
  if (this.projectRootPath === null) {
33
34
  throw new CommandError(`Couldn't find project root folder`, _a.ERROR_NO_PROJECT_ROOT_FOLDER);
34
35
  }
36
+ if (!args.options.overwrite) {
37
+ await this.warn(logger, `We recommend always using the --overwrite option and it will become the default behavior in next major release. Overwriting your sppkg file on every deployment is required to make continuous delivery of the latest version of your app which is the aim of the continuous delivery pipeline.`);
38
+ }
35
39
  const solutionPackageJsonFile = path.join(this.projectRootPath, 'package.json');
36
40
  const packageJson = fs.readFileSync(solutionPackageJsonFile, 'utf-8');
37
41
  const solutionName = JSON.parse(packageJson).name;
@@ -67,10 +71,8 @@ class SpfxProjectGithubWorkflowAddCommand extends BaseProjectCommand {
67
71
  if (!version) {
68
72
  throw `Unable to determine the version of the current SharePoint Framework project`;
69
73
  }
70
- const match = version.match(/^(\d+)\.(\d+)\.(\d+)$/);
71
- const minorVersionString = match ? match[2] : null;
72
- const minorVersion = minorVersionString ? Number(minorVersionString) : null;
73
- if (minorVersion === null || isNaN(minorVersion)) {
74
+ const minorVersion = parse(version)?.minor;
75
+ if (minorVersion === undefined) {
74
76
  throw `Unable to determine the minor version of the current SharePoint Framework project`;
75
77
  }
76
78
  if (minorVersion < 18) {
@@ -2,6 +2,7 @@ const prefix = 'spfx';
2
2
  export default {
3
3
  DOCTOR: `${prefix} doctor`,
4
4
  PACKAGE_GENERATE: `${prefix} package generate`,
5
+ PROJECT_AZUREDEVOPS_PIPELINE_ADD: `${prefix} project azuredevops pipeline add`,
5
6
  PROJECT_DOCTOR: `${prefix} project doctor`,
6
7
  PROJECT_EXTERNALIZE: `${prefix} project externalize`,
7
8
  PROJECT_GITHUB_WORKFLOW_ADD: `${prefix} project github workflow add`,
@@ -0,0 +1,19 @@
1
+ export const FolderColorValues = {
2
+ yellow: '0',
3
+ darkRed: '1',
4
+ darkOrange: '2',
5
+ darkGreen: '3',
6
+ darkTeal: '4',
7
+ darkBlue: '5',
8
+ darkPurple: '6',
9
+ darkPink: '7',
10
+ grey: '8',
11
+ lightRed: '9',
12
+ lightOrange: '10',
13
+ lightGreen: '11',
14
+ lightTeal: '12',
15
+ lightBlue: '13',
16
+ lightPurple: '14',
17
+ lightPink: '15'
18
+ };
19
+ //# sourceMappingURL=FolderColor.js.map
@@ -3,13 +3,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _SpoFolderAddCommand_instances, _SpoFolderAddCommand_initOptions, _SpoFolderAddCommand_initValidators, _SpoFolderAddCommand_initTypes;
6
+ var _SpoFolderAddCommand_instances, _SpoFolderAddCommand_initTelemetry, _SpoFolderAddCommand_initOptions, _SpoFolderAddCommand_initValidators, _SpoFolderAddCommand_initTypes;
7
7
  import request from '../../../../request.js';
8
8
  import { formatting } from '../../../../utils/formatting.js';
9
9
  import { urlUtil } from '../../../../utils/urlUtil.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import SpoCommand from '../../../base/SpoCommand.js';
12
12
  import commands from '../../commands.js';
13
+ import { FolderColorValues } from './FolderColor.js';
13
14
  class SpoFolderAddCommand extends SpoCommand {
14
15
  get name() {
15
16
  return commands.FOLDER_ADD;
@@ -20,25 +21,35 @@ class SpoFolderAddCommand extends SpoCommand {
20
21
  constructor() {
21
22
  super();
22
23
  _SpoFolderAddCommand_instances.add(this);
24
+ __classPrivateFieldGet(this, _SpoFolderAddCommand_instances, "m", _SpoFolderAddCommand_initTelemetry).call(this);
23
25
  __classPrivateFieldGet(this, _SpoFolderAddCommand_instances, "m", _SpoFolderAddCommand_initOptions).call(this);
24
26
  __classPrivateFieldGet(this, _SpoFolderAddCommand_instances, "m", _SpoFolderAddCommand_initValidators).call(this);
25
27
  __classPrivateFieldGet(this, _SpoFolderAddCommand_instances, "m", _SpoFolderAddCommand_initTypes).call(this);
26
28
  }
27
29
  async commandAction(logger, args) {
28
- if (this.verbose) {
29
- await logger.logToStderr(`Adding folder to site ${args.options.webUrl}...`);
30
- }
31
- const parentFolderServerRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.parentFolderUrl);
32
- const serverRelativeUrl = `${parentFolderServerRelativeUrl}/${args.options.name}`;
33
- const requestUrl = `${args.options.webUrl}/_api/web/folders/addUsingPath(decodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
34
- const requestOptions = {
35
- url: requestUrl,
36
- headers: {
37
- 'accept': 'application/json;odata=nometadata'
38
- },
39
- responseType: 'json'
40
- };
41
30
  try {
31
+ if (this.verbose) {
32
+ await logger.logToStderr(`Adding folder to site ${args.options.webUrl}...`);
33
+ }
34
+ const parentFolderServerRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.parentFolderUrl);
35
+ const serverRelativeUrl = `${parentFolderServerRelativeUrl}/${args.options.name}`;
36
+ const requestOptions = {
37
+ headers: {
38
+ 'accept': 'application/json;odata=nometadata'
39
+ },
40
+ responseType: 'json'
41
+ };
42
+ if (args.options.color === undefined) {
43
+ requestOptions.url = `${args.options.webUrl}/_api/web/folders/addUsingPath(decodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
44
+ }
45
+ else {
46
+ requestOptions.url = `${args.options.webUrl}/_api/foldercoloring/createfolder(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}', overwrite=false)`;
47
+ requestOptions.data = {
48
+ coloringInformation: {
49
+ ColorHex: FolderColorValues[args.options.color] || args.options.color
50
+ }
51
+ };
52
+ }
42
53
  const folder = await request.post(requestOptions);
43
54
  await logger.log(folder);
44
55
  }
@@ -47,18 +58,36 @@ class SpoFolderAddCommand extends SpoCommand {
47
58
  }
48
59
  }
49
60
  }
50
- _SpoFolderAddCommand_instances = new WeakSet(), _SpoFolderAddCommand_initOptions = function _SpoFolderAddCommand_initOptions() {
61
+ _SpoFolderAddCommand_instances = new WeakSet(), _SpoFolderAddCommand_initTelemetry = function _SpoFolderAddCommand_initTelemetry() {
62
+ this.telemetry.push((args) => {
63
+ Object.assign(this.telemetryProperties, {
64
+ color: typeof args.options.color !== 'undefined'
65
+ });
66
+ });
67
+ }, _SpoFolderAddCommand_initOptions = function _SpoFolderAddCommand_initOptions() {
51
68
  this.options.unshift({
52
69
  option: '-u, --webUrl <webUrl>'
53
70
  }, {
54
71
  option: '-p, --parentFolderUrl <parentFolderUrl>'
55
72
  }, {
56
73
  option: '-n, --name <name>'
74
+ }, {
75
+ option: '--color [color]',
76
+ autocomplete: Object.keys(FolderColorValues)
57
77
  });
58
78
  }, _SpoFolderAddCommand_initValidators = function _SpoFolderAddCommand_initValidators() {
59
- this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.webUrl));
79
+ this.validators.push(async (args) => {
80
+ const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.webUrl);
81
+ if (isValidSharePointUrl !== true) {
82
+ return isValidSharePointUrl;
83
+ }
84
+ if (args.options.color && !Object.entries(FolderColorValues).flat().includes(args.options.color)) {
85
+ return `'${args.options.color}' is not a valid value for option 'color'. Allowed values are ${Object.keys(FolderColorValues).join(', ')}, ${Object.values(FolderColorValues).join(', ')}.`;
86
+ }
87
+ return true;
88
+ });
60
89
  }, _SpoFolderAddCommand_initTypes = function _SpoFolderAddCommand_initTypes() {
61
- this.types.string.push('webUrl', 'parentFolderUrl', 'name');
90
+ this.types.string.push('webUrl', 'parentFolderUrl', 'name', 'color');
62
91
  };
63
92
  export default new SpoFolderAddCommand();
64
93
  //# sourceMappingURL=folder-add.js.map