@pnp/cli-microsoft365 5.6.0 → 5.7.0-beta.6df5c92

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 (448) hide show
  1. package/dist/Command.js +186 -93
  2. package/dist/cli/Cli.js +11 -66
  3. package/dist/m365/aad/commands/app/app-add.js +75 -84
  4. package/dist/m365/aad/commands/app/app-get.js +37 -20
  5. package/dist/m365/aad/commands/app/app-remove.js +38 -21
  6. package/dist/m365/aad/commands/app/app-role-add.js +39 -23
  7. package/dist/m365/aad/commands/app/app-role-list.js +37 -19
  8. package/dist/m365/aad/commands/app/app-role-remove.js +40 -26
  9. package/dist/m365/aad/commands/app/app-set.js +47 -36
  10. package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +48 -32
  11. package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -25
  12. package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +51 -36
  13. package/dist/m365/aad/commands/group/group-list.js +21 -12
  14. package/dist/m365/aad/commands/groupsetting/groupsetting-add.js +30 -17
  15. package/dist/m365/aad/commands/groupsetting/groupsetting-get.js +30 -12
  16. package/dist/m365/aad/commands/groupsetting/groupsetting-remove.js +39 -20
  17. package/dist/m365/aad/commands/groupsetting/groupsetting-set.js +30 -12
  18. package/dist/m365/aad/commands/groupsettingtemplate/groupsettingtemplate-get.js +40 -21
  19. package/dist/m365/aad/commands/o365group/o365group-add.js +64 -54
  20. package/dist/m365/aad/commands/o365group/o365group-conversation-list.js +30 -12
  21. package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +43 -25
  22. package/dist/m365/aad/commands/o365group/o365group-get.js +32 -15
  23. package/dist/m365/aad/commands/o365group/o365group-list.js +49 -33
  24. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +23 -14
  25. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-list.js +26 -18
  26. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-remove.js +40 -32
  27. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +46 -28
  28. package/dist/m365/aad/commands/o365group/o365group-remove.js +42 -24
  29. package/dist/m365/aad/commands/o365group/o365group-renew.js +30 -12
  30. package/dist/m365/aad/commands/o365group/o365group-set.js +54 -30
  31. package/dist/m365/aad/commands/o365group/o365group-teamify.js +40 -15
  32. package/dist/m365/aad/commands/o365group/o365group-user-add.js +46 -29
  33. package/dist/m365/aad/commands/o365group/o365group-user-list.js +40 -21
  34. package/dist/m365/aad/commands/o365group/o365group-user-remove.js +36 -28
  35. package/dist/m365/aad/commands/o365group/o365group-user-set.js +46 -29
  36. package/dist/m365/aad/commands/oauth2grant/oauth2grant-add.js +34 -18
  37. package/dist/m365/aad/commands/oauth2grant/oauth2grant-list.js +30 -12
  38. package/dist/m365/aad/commands/oauth2grant/oauth2grant-remove.js +18 -12
  39. package/dist/m365/aad/commands/oauth2grant/oauth2grant-set.js +18 -12
  40. package/dist/m365/aad/commands/policy/policy-list.js +38 -18
  41. package/dist/m365/aad/commands/siteclassification/siteclassification-disable.js +23 -14
  42. package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +30 -24
  43. package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +46 -29
  44. package/dist/m365/aad/commands/sp/sp-add.js +43 -25
  45. package/dist/m365/aad/commands/sp/sp-get.js +43 -25
  46. package/dist/m365/aad/commands/user/user-get.js +45 -28
  47. package/dist/m365/aad/commands/user/user-hibp.js +41 -23
  48. package/dist/m365/aad/commands/user/user-list.js +22 -14
  49. package/dist/m365/aad/commands/user/user-password-validate.js +16 -9
  50. package/dist/m365/aad/commands/user/user-set.js +43 -25
  51. package/dist/m365/aad/commands/user/user-signin-list.js +46 -29
  52. package/dist/m365/adaptivecard/commands/adaptivecard-send.js +54 -40
  53. package/dist/m365/app/commands/app-open.js +22 -21
  54. package/dist/m365/base/AppCommand.js +29 -13
  55. package/dist/m365/base/DateAndPeriodBasedReport.js +41 -24
  56. package/dist/m365/base/PeriodBasedReport.js +37 -18
  57. package/dist/m365/base/SpoCommand.js +1 -1
  58. package/dist/m365/cli/commands/cli-consent.js +38 -18
  59. package/dist/m365/cli/commands/cli-issue.js +26 -18
  60. package/dist/m365/cli/commands/completion/completion-pwsh-setup.js +16 -9
  61. package/dist/m365/cli/commands/config/config-get.js +38 -18
  62. package/dist/m365/cli/commands/config/config-reset.js +38 -18
  63. package/dist/m365/cli/commands/config/config-set.js +38 -21
  64. package/dist/m365/commands/login.js +54 -42
  65. package/dist/m365/file/commands/convert/convert-pdf.js +32 -15
  66. package/dist/m365/file/commands/file-add.js +35 -12
  67. package/dist/m365/file/commands/file-list.js +31 -13
  68. package/dist/m365/flow/commands/environment/environment-get.js +16 -9
  69. package/dist/m365/flow/commands/flow-disable.js +20 -15
  70. package/dist/m365/flow/commands/flow-enable.js +20 -15
  71. package/dist/m365/flow/commands/flow-export.js +56 -43
  72. package/dist/m365/flow/commands/flow-get.js +20 -15
  73. package/dist/m365/flow/commands/flow-list.js +25 -17
  74. package/dist/m365/flow/commands/flow-remove.js +44 -27
  75. package/dist/m365/flow/commands/run/run-cancel.js +36 -21
  76. package/dist/m365/flow/commands/run/run-get.js +20 -15
  77. package/dist/m365/flow/commands/run/run-list.js +18 -12
  78. package/dist/m365/flow/commands/run/run-resubmit.js +43 -26
  79. package/dist/m365/graph/commands/schemaextension/schemaextension-add.js +41 -27
  80. package/dist/m365/graph/commands/schemaextension/schemaextension-get.js +16 -9
  81. package/dist/m365/graph/commands/schemaextension/schemaextension-list.js +47 -30
  82. package/dist/m365/graph/commands/schemaextension/schemaextension-remove.js +25 -17
  83. package/dist/m365/graph/commands/schemaextension/schemaextension-set.js +63 -48
  84. package/dist/m365/graph/commands/subscription/subscription-add.js +52 -36
  85. package/dist/m365/outlook/commands/mail/mail-send.js +48 -32
  86. package/dist/m365/outlook/commands/message/message-list.js +42 -23
  87. package/dist/m365/outlook/commands/message/message-move.js +52 -36
  88. package/dist/m365/outlook/commands/room/room-list.js +23 -14
  89. package/dist/m365/pa/commands/app/app-get.js +40 -21
  90. package/dist/m365/pa/commands/app/app-list.js +40 -21
  91. package/dist/m365/pa/commands/app/app-remove.js +39 -20
  92. package/dist/m365/pa/commands/connector/connector-export.js +41 -18
  93. package/dist/m365/pa/commands/connector/connector-list.js +16 -9
  94. package/dist/m365/pa/commands/environment/environment-get.js +16 -9
  95. package/dist/m365/pa/commands/pcf/pcf-init.js +53 -50
  96. package/dist/m365/pa/commands/solution/solution-init.js +45 -38
  97. package/dist/m365/pa/commands/solution/solution-reference-add.js +40 -25
  98. package/dist/m365/planner/commands/bucket/bucket-add.js +54 -40
  99. package/dist/m365/planner/commands/bucket/bucket-get.js +49 -44
  100. package/dist/m365/planner/commands/bucket/bucket-list.js +51 -35
  101. package/dist/m365/planner/commands/bucket/bucket-remove.js +65 -54
  102. package/dist/m365/planner/commands/bucket/bucket-set.js +67 -57
  103. package/dist/m365/planner/commands/plan/plan-add.js +48 -32
  104. package/dist/m365/planner/commands/plan/plan-get.js +55 -40
  105. package/dist/m365/planner/commands/plan/plan-list.js +42 -23
  106. package/dist/m365/planner/commands/plan/plan-remove.js +43 -36
  107. package/dist/m365/planner/commands/task/task-add.js +56 -57
  108. package/dist/m365/planner/commands/task/task-checklistitem-add.js +23 -16
  109. package/dist/m365/planner/commands/task/task-checklistitem-list.js +18 -11
  110. package/dist/m365/planner/commands/task/task-checklistitem-remove.js +21 -14
  111. package/dist/m365/planner/commands/task/task-get.js +46 -36
  112. package/dist/m365/planner/commands/task/task-list.js +57 -43
  113. package/dist/m365/planner/commands/task/task-reference-add.js +39 -13
  114. package/dist/m365/planner/commands/task/task-reference-list.js +18 -11
  115. package/dist/m365/planner/commands/task/task-reference-remove.js +40 -25
  116. package/dist/m365/planner/commands/task/task-remove.js +46 -23
  117. package/dist/m365/planner/commands/task/task-set.js +52 -53
  118. package/dist/m365/planner/commands/tenant/tenant-settings-set.js +59 -44
  119. package/dist/m365/pp/commands/environment/environment-list.js +23 -9
  120. package/dist/m365/pp/commands/managementapp/managementapp-add.js +37 -19
  121. package/dist/m365/search/commands/externalconnection/externalconnection-add.js +43 -26
  122. package/dist/m365/search/commands/externalconnection/externalconnection-get.js +29 -23
  123. package/dist/m365/spfx/commands/package/package-generate.js +46 -38
  124. package/dist/m365/spfx/commands/project/project-doctor.js +39 -22
  125. package/dist/m365/spfx/commands/project/project-externalize.js +15 -9
  126. package/dist/m365/spfx/commands/project/project-rename.js +23 -18
  127. package/dist/m365/spfx/commands/project/project-upgrade.js +53 -39
  128. package/dist/m365/spfx/commands/spfx-doctor.js +39 -19
  129. package/dist/m365/spo/commands/app/app-add.js +46 -29
  130. package/dist/m365/spo/commands/app/app-deploy.js +50 -34
  131. package/dist/m365/spo/commands/app/app-get.js +47 -30
  132. package/dist/m365/spo/commands/app/app-install.js +42 -24
  133. package/dist/m365/spo/commands/app/app-instance-list.js +30 -12
  134. package/dist/m365/spo/commands/app/app-list.js +41 -22
  135. package/dist/m365/spo/commands/app/app-remove.js +46 -29
  136. package/dist/m365/spo/commands/app/app-retract.js +46 -29
  137. package/dist/m365/spo/commands/app/app-teamspackage-download.js +40 -24
  138. package/dist/m365/spo/commands/app/app-uninstall.js +45 -28
  139. package/dist/m365/spo/commands/app/app-upgrade.js +42 -24
  140. package/dist/m365/spo/commands/apppage/apppage-add.js +43 -26
  141. package/dist/m365/spo/commands/apppage/apppage-set.js +36 -29
  142. package/dist/m365/spo/commands/cdn/cdn-get.js +38 -16
  143. package/dist/m365/spo/commands/cdn/cdn-origin-add.js +40 -21
  144. package/dist/m365/spo/commands/cdn/cdn-origin-list.js +38 -16
  145. package/dist/m365/spo/commands/cdn/cdn-origin-remove.js +43 -25
  146. package/dist/m365/spo/commands/cdn/cdn-policy-list.js +38 -16
  147. package/dist/m365/spo/commands/cdn/cdn-policy-set.js +44 -26
  148. package/dist/m365/spo/commands/cdn/cdn-set.js +45 -27
  149. package/dist/m365/spo/commands/contenttype/contenttype-add.js +50 -32
  150. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +52 -39
  151. package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +46 -35
  152. package/dist/m365/spo/commands/contenttype/contenttype-get.js +48 -26
  153. package/dist/m365/spo/commands/contenttype/contenttype-list.js +37 -15
  154. package/dist/m365/spo/commands/contenttype/contenttype-remove.js +48 -33
  155. package/dist/m365/spo/commands/customaction/customaction-add.js +143 -140
  156. package/dist/m365/spo/commands/customaction/customaction-clear.js +43 -28
  157. package/dist/m365/spo/commands/customaction/customaction-get.js +47 -32
  158. package/dist/m365/spo/commands/customaction/customaction-list.js +40 -21
  159. package/dist/m365/spo/commands/customaction/customaction-remove.js +50 -36
  160. package/dist/m365/spo/commands/customaction/customaction-set.js +129 -127
  161. package/dist/m365/spo/commands/eventreceiver/eventreceiver-get.js +58 -46
  162. package/dist/m365/spo/commands/eventreceiver/eventreceiver-list.js +49 -33
  163. package/dist/m365/spo/commands/externaluser/externaluser-list.js +50 -34
  164. package/dist/m365/spo/commands/feature/feature-disable.js +48 -33
  165. package/dist/m365/spo/commands/feature/feature-enable.js +48 -33
  166. package/dist/m365/spo/commands/feature/feature-list.js +40 -21
  167. package/dist/m365/spo/commands/field/field-add.js +44 -21
  168. package/dist/m365/spo/commands/field/field-get.js +56 -44
  169. package/dist/m365/spo/commands/field/field-list.js +45 -28
  170. package/dist/m365/spo/commands/field/field-remove.js +62 -52
  171. package/dist/m365/spo/commands/field/field-set.js +57 -45
  172. package/dist/m365/spo/commands/file/file-add.js +72 -64
  173. package/dist/m365/spo/commands/file/file-checkin.js +49 -33
  174. package/dist/m365/spo/commands/file/file-checkout.js +42 -24
  175. package/dist/m365/spo/commands/file/file-copy.js +44 -30
  176. package/dist/m365/spo/commands/file/file-get.js +54 -40
  177. package/dist/m365/spo/commands/file/file-list.js +39 -18
  178. package/dist/m365/spo/commands/file/file-move.js +44 -30
  179. package/dist/m365/spo/commands/file/file-remove.js +48 -32
  180. package/dist/m365/spo/commands/file/file-rename.js +41 -26
  181. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +42 -24
  182. package/dist/m365/spo/commands/folder/folder-add.js +32 -18
  183. package/dist/m365/spo/commands/folder/folder-copy.js +41 -26
  184. package/dist/m365/spo/commands/folder/folder-get.js +30 -15
  185. package/dist/m365/spo/commands/folder/folder-list.js +30 -15
  186. package/dist/m365/spo/commands/folder/folder-move.js +41 -26
  187. package/dist/m365/spo/commands/folder/folder-remove.js +42 -27
  188. package/dist/m365/spo/commands/folder/folder-rename.js +32 -18
  189. package/dist/m365/spo/commands/group/group-add.js +60 -44
  190. package/dist/m365/spo/commands/group/group-get.js +49 -34
  191. package/dist/m365/spo/commands/group/group-list.js +28 -12
  192. package/dist/m365/spo/commands/group/group-remove.js +45 -28
  193. package/dist/m365/spo/commands/group/group-set.js +74 -67
  194. package/dist/m365/spo/commands/group/group-user-add.js +48 -24
  195. package/dist/m365/spo/commands/group/group-user-list.js +42 -18
  196. package/dist/m365/spo/commands/group/group-user-remove.js +47 -31
  197. package/dist/m365/spo/commands/hidedefaultthemes/hidedefaultthemes-set.js +37 -17
  198. package/dist/m365/spo/commands/homesite/homesite-remove.js +23 -14
  199. package/dist/m365/spo/commands/homesite/homesite-set.js +28 -12
  200. package/dist/m365/spo/commands/hubsite/hubsite-connect.js +32 -15
  201. package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +37 -20
  202. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +37 -20
  203. package/dist/m365/spo/commands/hubsite/hubsite-get.js +54 -39
  204. package/dist/m365/spo/commands/hubsite/hubsite-list.js +20 -14
  205. package/dist/m365/spo/commands/hubsite/hubsite-register.js +28 -12
  206. package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +35 -19
  207. package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +39 -23
  208. package/dist/m365/spo/commands/hubsite/hubsite-set.js +48 -34
  209. package/dist/m365/spo/commands/hubsite/hubsite-theme-sync.js +28 -12
  210. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +37 -20
  211. package/dist/m365/spo/commands/knowledgehub/knowledgehub-remove.js +23 -14
  212. package/dist/m365/spo/commands/knowledgehub/knowledgehub-set.js +28 -12
  213. package/dist/m365/spo/commands/list/list-add.js +321 -365
  214. package/dist/m365/spo/commands/list/list-contenttype-add.js +47 -32
  215. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +47 -32
  216. package/dist/m365/spo/commands/list/list-contenttype-list.js +42 -24
  217. package/dist/m365/spo/commands/list/list-contenttype-remove.js +50 -36
  218. package/dist/m365/spo/commands/list/list-get.js +48 -32
  219. package/dist/m365/spo/commands/list/list-label-get.js +42 -24
  220. package/dist/m365/spo/commands/list/list-label-set.js +56 -43
  221. package/dist/m365/spo/commands/list/list-list.js +37 -20
  222. package/dist/m365/spo/commands/list/list-remove.js +45 -28
  223. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +48 -33
  224. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +45 -29
  225. package/dist/m365/spo/commands/list/list-set.js +318 -362
  226. package/dist/m365/spo/commands/list/list-sitescript-get.js +42 -24
  227. package/dist/m365/spo/commands/list/list-view-add.js +48 -40
  228. package/dist/m365/spo/commands/list/list-view-field-add.js +57 -44
  229. package/dist/m365/spo/commands/list/list-view-field-remove.js +57 -44
  230. package/dist/m365/spo/commands/list/list-view-field-set.js +56 -43
  231. package/dist/m365/spo/commands/list/list-view-get.js +51 -36
  232. package/dist/m365/spo/commands/list/list-view-list.js +42 -24
  233. package/dist/m365/spo/commands/list/list-view-remove.js +51 -36
  234. package/dist/m365/spo/commands/list/list-view-set.js +48 -32
  235. package/dist/m365/spo/commands/list/list-webhook-add.js +54 -39
  236. package/dist/m365/spo/commands/list/list-webhook-get.js +45 -28
  237. package/dist/m365/spo/commands/list/list-webhook-list.js +48 -32
  238. package/dist/m365/spo/commands/list/list-webhook-remove.js +48 -32
  239. package/dist/m365/spo/commands/list/list-webhook-set.js +54 -39
  240. package/dist/m365/spo/commands/listitem/listitem-add.js +65 -57
  241. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +44 -27
  242. package/dist/m365/spo/commands/listitem/listitem-get.js +49 -41
  243. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +44 -27
  244. package/dist/m365/spo/commands/listitem/listitem-list.js +66 -66
  245. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +47 -31
  246. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +44 -27
  247. package/dist/m365/spo/commands/listitem/listitem-remove.js +50 -35
  248. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +50 -29
  249. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +47 -32
  250. package/dist/m365/spo/commands/listitem/listitem-set.js +68 -63
  251. package/dist/m365/spo/commands/mail/mail-send.js +52 -41
  252. package/dist/m365/spo/commands/navigation/navigation-node-add.js +49 -34
  253. package/dist/m365/spo/commands/navigation/navigation-node-list.js +40 -21
  254. package/dist/m365/spo/commands/navigation/navigation-node-remove.js +45 -28
  255. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +43 -25
  256. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-list.js +0 -4
  257. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +18 -12
  258. package/dist/m365/spo/commands/orgnewssite/orgnewssite-list.js +0 -4
  259. package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +37 -20
  260. package/dist/m365/spo/commands/orgnewssite/orgnewssite-set.js +28 -12
  261. package/dist/m365/spo/commands/page/page-add.js +60 -48
  262. package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +59 -47
  263. package/dist/m365/spo/commands/page/page-column-get.js +36 -21
  264. package/dist/m365/spo/commands/page/page-column-list.js +34 -18
  265. package/dist/m365/spo/commands/page/page-control-get.js +34 -18
  266. package/dist/m365/spo/commands/page/page-control-list.js +30 -15
  267. package/dist/m365/spo/commands/page/page-control-set.js +46 -24
  268. package/dist/m365/spo/commands/page/page-copy.js +41 -26
  269. package/dist/m365/spo/commands/page/page-get.js +32 -18
  270. package/dist/m365/spo/commands/page/page-header-set.js +74 -66
  271. package/dist/m365/spo/commands/page/page-list.js +28 -12
  272. package/dist/m365/spo/commands/page/page-remove.js +32 -18
  273. package/dist/m365/spo/commands/page/page-section-add.js +43 -21
  274. package/dist/m365/spo/commands/page/page-section-get.js +34 -18
  275. package/dist/m365/spo/commands/page/page-section-list.js +30 -15
  276. package/dist/m365/spo/commands/page/page-set.js +62 -50
  277. package/dist/m365/spo/commands/page/page-template-list.js +28 -12
  278. package/dist/m365/spo/commands/page/page-text-add.js +49 -34
  279. package/dist/m365/spo/commands/propertybag/propertybag-get.js +39 -23
  280. package/dist/m365/spo/commands/propertybag/propertybag-list.js +37 -20
  281. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +42 -33
  282. package/dist/m365/spo/commands/propertybag/propertybag-set.js +41 -35
  283. package/dist/m365/spo/commands/roledefinition/roledefinition-get.js +32 -15
  284. package/dist/m365/spo/commands/roledefinition/roledefinition-list.js +28 -12
  285. package/dist/m365/spo/commands/roledefinition/roledefinition-remove.js +41 -23
  286. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-add.js +18 -12
  287. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-revoke.js +16 -7
  288. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-approve.js +30 -10
  289. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-deny.js +30 -10
  290. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +40 -21
  291. package/dist/m365/spo/commands/site/site-add.js +101 -101
  292. package/dist/m365/spo/commands/site/site-appcatalog-add.js +28 -17
  293. package/dist/m365/spo/commands/site/site-appcatalog-remove.js +28 -17
  294. package/dist/m365/spo/commands/site/site-apppermission-add.js +42 -28
  295. package/dist/m365/spo/commands/site/site-apppermission-get.js +30 -15
  296. package/dist/m365/spo/commands/site/site-apppermission-list.js +40 -25
  297. package/dist/m365/spo/commands/site/site-apppermission-remove.js +46 -33
  298. package/dist/m365/spo/commands/site/site-apppermission-set.js +45 -32
  299. package/dist/m365/spo/commands/site/site-chrome-set.js +65 -53
  300. package/dist/m365/spo/commands/site/site-classic-add.js +66 -57
  301. package/dist/m365/spo/commands/site/site-classic-list.js +29 -22
  302. package/dist/m365/spo/commands/site/site-classic-set.js +74 -66
  303. package/dist/m365/spo/commands/site/site-commsite-enable.js +39 -20
  304. package/dist/m365/spo/commands/site/site-ensure.js +130 -131
  305. package/dist/m365/spo/commands/site/site-get.js +26 -10
  306. package/dist/m365/spo/commands/site/site-groupify.js +50 -38
  307. package/dist/m365/spo/commands/site/site-inplacerecordsmanagement-set.js +39 -20
  308. package/dist/m365/spo/commands/site/site-list.js +52 -36
  309. package/dist/m365/spo/commands/site/site-recyclebinitem-list.js +43 -19
  310. package/dist/m365/spo/commands/site/site-recyclebinitem-restore.js +32 -15
  311. package/dist/m365/spo/commands/site/site-remove.js +46 -32
  312. package/dist/m365/spo/commands/site/site-rename.js +50 -38
  313. package/dist/m365/spo/commands/site/site-set.js +97 -99
  314. package/dist/m365/spo/commands/sitedesign/sitedesign-add.js +55 -41
  315. package/dist/m365/spo/commands/sitedesign/sitedesign-apply.js +41 -23
  316. package/dist/m365/spo/commands/sitedesign/sitedesign-get.js +38 -16
  317. package/dist/m365/spo/commands/sitedesign/sitedesign-remove.js +39 -20
  318. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-grant.js +35 -19
  319. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-list.js +30 -12
  320. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-revoke.js +41 -23
  321. package/dist/m365/spo/commands/sitedesign/sitedesign-run-list.js +39 -20
  322. package/dist/m365/spo/commands/sitedesign/sitedesign-run-status-get.js +32 -15
  323. package/dist/m365/spo/commands/sitedesign/sitedesign-set.js +64 -53
  324. package/dist/m365/spo/commands/sitedesign/sitedesign-task-get.js +30 -12
  325. package/dist/m365/spo/commands/sitedesign/sitedesign-task-list.js +28 -12
  326. package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +39 -20
  327. package/dist/m365/spo/commands/sitescript/sitescript-add.js +41 -23
  328. package/dist/m365/spo/commands/sitescript/sitescript-get.js +30 -12
  329. package/dist/m365/spo/commands/sitescript/sitescript-remove.js +39 -20
  330. package/dist/m365/spo/commands/sitescript/sitescript-set.js +48 -32
  331. package/dist/m365/spo/commands/spo-search.js +123 -126
  332. package/dist/m365/spo/commands/spo-set.js +28 -12
  333. package/dist/m365/spo/commands/storageentity/storageentity-get.js +16 -7
  334. package/dist/m365/spo/commands/storageentity/storageentity-list.js +28 -16
  335. package/dist/m365/spo/commands/storageentity/storageentity-remove.js +39 -29
  336. package/dist/m365/spo/commands/storageentity/storageentity-set.js +44 -36
  337. package/dist/m365/spo/commands/tenant/tenant-appcatalog-add.js +46 -24
  338. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +40 -24
  339. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +37 -20
  340. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +375 -443
  341. package/dist/m365/spo/commands/term/term-add.js +63 -52
  342. package/dist/m365/spo/commands/term/term-get.js +52 -37
  343. package/dist/m365/spo/commands/term/term-group-add.js +42 -24
  344. package/dist/m365/spo/commands/term/term-group-get.js +40 -21
  345. package/dist/m365/spo/commands/term/term-list.js +46 -29
  346. package/dist/m365/spo/commands/term/term-set-add.js +51 -36
  347. package/dist/m365/spo/commands/term/term-set-get.js +46 -29
  348. package/dist/m365/spo/commands/term/term-set-list.js +40 -21
  349. package/dist/m365/spo/commands/theme/theme-apply.js +41 -23
  350. package/dist/m365/spo/commands/theme/theme-get.js +16 -7
  351. package/dist/m365/spo/commands/theme/theme-remove.js +25 -17
  352. package/dist/m365/spo/commands/theme/theme-set.js +41 -21
  353. package/dist/m365/spo/commands/user/user-get.js +45 -28
  354. package/dist/m365/spo/commands/user/user-list.js +28 -12
  355. package/dist/m365/spo/commands/user/user-remove.js +45 -28
  356. package/dist/m365/spo/commands/userprofile/userprofile-get.js +30 -12
  357. package/dist/m365/spo/commands/userprofile/userprofile-set.js +20 -15
  358. package/dist/m365/spo/commands/web/web-add.js +54 -41
  359. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +28 -12
  360. package/dist/m365/spo/commands/web/web-get.js +37 -20
  361. package/dist/m365/spo/commands/web/web-installedlanguage-list.js +28 -12
  362. package/dist/m365/spo/commands/web/web-list.js +28 -12
  363. package/dist/m365/spo/commands/web/web-reindex.js +25 -12
  364. package/dist/m365/spo/commands/web/web-remove.js +37 -20
  365. package/dist/m365/spo/commands/web/web-set.js +70 -59
  366. package/dist/m365/teams/commands/app/app-install.js +37 -13
  367. package/dist/m365/teams/commands/app/app-list.js +43 -25
  368. package/dist/m365/teams/commands/app/app-publish.js +30 -12
  369. package/dist/m365/teams/commands/app/app-remove.js +39 -20
  370. package/dist/m365/teams/commands/app/app-uninstall.js +41 -18
  371. package/dist/m365/teams/commands/app/app-update.js +42 -24
  372. package/dist/m365/teams/commands/cache/cache-remove.js +26 -18
  373. package/dist/m365/teams/commands/channel/channel-add.js +52 -37
  374. package/dist/m365/teams/commands/channel/channel-get.js +47 -34
  375. package/dist/m365/teams/commands/channel/channel-list.js +43 -25
  376. package/dist/m365/teams/commands/channel/channel-member-add.js +65 -55
  377. package/dist/m365/teams/commands/channel/channel-member-list.js +50 -37
  378. package/dist/m365/teams/commands/channel/channel-member-remove.js +60 -54
  379. package/dist/m365/teams/commands/channel/channel-member-set.js +58 -48
  380. package/dist/m365/teams/commands/channel/channel-remove.js +45 -28
  381. package/dist/m365/teams/commands/channel/channel-set.js +50 -33
  382. package/dist/m365/teams/commands/chat/chat-get.js +62 -53
  383. package/dist/m365/teams/commands/chat/chat-list.js +38 -12
  384. package/dist/m365/teams/commands/chat/chat-member-list.js +30 -12
  385. package/dist/m365/teams/commands/chat/chat-message-list.js +30 -12
  386. package/dist/m365/teams/commands/chat/chat-message-send.js +61 -56
  387. package/dist/m365/teams/commands/funsettings/funsettings-list.js +30 -12
  388. package/dist/m365/teams/commands/funsettings/funsettings-set.js +48 -32
  389. package/dist/m365/teams/commands/guestsettings/guestsettings-list.js +30 -12
  390. package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +41 -25
  391. package/dist/m365/teams/commands/membersettings/membersettings-list.js +30 -12
  392. package/dist/m365/teams/commands/membersettings/membersettings-set.js +47 -34
  393. package/dist/m365/teams/commands/message/message-get.js +34 -18
  394. package/dist/m365/teams/commands/message/message-list.js +41 -18
  395. package/dist/m365/teams/commands/message/message-reply-list.js +34 -18
  396. package/dist/m365/teams/commands/messagingsettings/messagingsettings-list.js +30 -12
  397. package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +47 -34
  398. package/dist/m365/teams/commands/report/report-directroutingcalls.js +39 -20
  399. package/dist/m365/teams/commands/report/report-pstncalls.js +39 -20
  400. package/dist/m365/teams/commands/tab/tab-add.js +59 -46
  401. package/dist/m365/teams/commands/tab/tab-get.js +50 -38
  402. package/dist/m365/teams/commands/tab/tab-list.js +32 -15
  403. package/dist/m365/teams/commands/tab/tab-remove.js +43 -26
  404. package/dist/m365/teams/commands/team/team-add.js +44 -30
  405. package/dist/m365/teams/commands/team/team-archive.js +46 -26
  406. package/dist/m365/teams/commands/team/team-clone.js +75 -64
  407. package/dist/m365/teams/commands/team/team-get.js +40 -21
  408. package/dist/m365/teams/commands/team/team-list.js +23 -14
  409. package/dist/m365/teams/commands/team/team-remove.js +43 -26
  410. package/dist/m365/teams/commands/team/team-set.js +55 -44
  411. package/dist/m365/teams/commands/team/team-unarchive.js +34 -18
  412. package/dist/m365/teams/commands/user/user-app-add.js +32 -15
  413. package/dist/m365/teams/commands/user/user-app-list.js +40 -21
  414. package/dist/m365/teams/commands/user/user-app-remove.js +41 -23
  415. package/dist/m365/teams/commands/user/user-list.js +38 -22
  416. package/dist/m365/tenant/commands/id/id-get.js +23 -9
  417. package/dist/m365/tenant/commands/security/security-alerts-list.js +22 -13
  418. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-get.js +22 -14
  419. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +22 -13
  420. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-get.js +16 -9
  421. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-list.js +16 -9
  422. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-get.js +30 -12
  423. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-list.js +23 -9
  424. package/dist/m365/todo/commands/list/list-add.js +16 -9
  425. package/dist/m365/todo/commands/list/list-remove.js +43 -25
  426. package/dist/m365/todo/commands/list/list-set.js +42 -27
  427. package/dist/m365/todo/commands/task/task-add.js +42 -24
  428. package/dist/m365/todo/commands/task/task-list.js +40 -21
  429. package/dist/m365/todo/commands/task/task-remove.js +45 -28
  430. package/dist/m365/todo/commands/task/task-set.js +58 -45
  431. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +25 -12
  432. package/dist/m365/viva/commands/connections/connections-app-create.js +28 -21
  433. package/dist/m365/yammer/commands/group/group-list.js +37 -21
  434. package/dist/m365/yammer/commands/group/group-user-add.js +42 -24
  435. package/dist/m365/yammer/commands/group/group-user-remove.js +42 -24
  436. package/dist/m365/yammer/commands/message/message-add.js +48 -32
  437. package/dist/m365/yammer/commands/message/message-get.js +30 -12
  438. package/dist/m365/yammer/commands/message/message-like-set.js +39 -24
  439. package/dist/m365/yammer/commands/message/message-list.js +50 -38
  440. package/dist/m365/yammer/commands/message/message-remove.js +39 -20
  441. package/dist/m365/yammer/commands/network/network-list.js +23 -14
  442. package/dist/m365/yammer/commands/user/user-get.js +40 -21
  443. package/dist/m365/yammer/commands/user/user-list.js +47 -34
  444. package/dist/m365/yammer/commands/yammer-search.js +40 -25
  445. package/docs/docs/cmd/spo/navigation/navigation-node-add.md +1 -1
  446. package/docs/docs/cmd/spo/roledefinition/roledefinition-get.md +1 -1
  447. package/npm-shrinkwrap.json +2 -2
  448. package/package.json +2 -2
package/dist/Command.js CHANGED
@@ -8,12 +8,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ 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");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _Command_instances, _Command_initTelemetry, _Command_initOptions, _Command_initValidators;
11
17
  Object.defineProperty(exports, "__esModule", { value: true });
12
18
  exports.CommandErrorWithOutput = exports.CommandError = void 0;
19
+ const os = require("os");
13
20
  const appInsights_1 = require("./appInsights");
14
21
  const Auth_1 = require("./Auth");
15
22
  const cli_1 = require("./cli");
16
23
  const request_1 = require("./request");
24
+ const settingsNames_1 = require("./settingsNames");
17
25
  const utils_1 = require("./utils");
18
26
  class CommandError {
19
27
  constructor(message, code) {
@@ -31,77 +39,105 @@ class CommandErrorWithOutput {
31
39
  exports.CommandErrorWithOutput = CommandErrorWithOutput;
32
40
  class Command {
33
41
  constructor() {
34
- this._debug = false;
35
- this._verbose = false;
36
- }
37
- get debug() {
38
- return this._debug;
39
- }
40
- get verbose() {
41
- return this._verbose;
42
- }
43
- showDeprecationWarning(logger, deprecated, recommended) {
44
- const cli = cli_1.Cli.getInstance();
45
- if (cli.currentCommandName &&
46
- cli.currentCommandName.indexOf(deprecated) === 0) {
47
- const chalk = require('chalk');
48
- logger.logToStderr(chalk.yellow(`Command '${deprecated}' is deprecated. Please use '${recommended}' instead`));
49
- }
50
- }
51
- warn(logger, warning) {
52
- const chalk = require('chalk');
53
- logger.logToStderr(chalk.yellow(warning));
42
+ // These functions must be defined with # so that they're truly private
43
+ // otherwise you'll get a ts2415 error (Types have separate declarations of
44
+ // a private property 'x'.).
45
+ // `private` in TS is a design-time flag and private members end-up being
46
+ // regular class properties that would collide on runtime, which is why we
47
+ // need the extra `#`
48
+ _Command_instances.add(this);
49
+ this.debug = false;
50
+ this.verbose = false;
51
+ this.telemetry = [];
52
+ this.telemetryProperties = {};
53
+ this.options = [];
54
+ this.optionSets = [];
55
+ this.types = {
56
+ boolean: [],
57
+ string: []
58
+ };
59
+ this.validators = [];
60
+ __classPrivateFieldGet(this, _Command_instances, "m", _Command_initTelemetry).call(this);
61
+ __classPrivateFieldGet(this, _Command_instances, "m", _Command_initOptions).call(this);
62
+ __classPrivateFieldGet(this, _Command_instances, "m", _Command_initValidators).call(this);
54
63
  }
55
- getUsedCommandName() {
56
- const cli = cli_1.Cli.getInstance();
57
- const commandName = this.getCommandName();
58
- if (!cli.currentCommandName) {
59
- return commandName;
60
- }
61
- if (cli.currentCommandName &&
62
- cli.currentCommandName.indexOf(commandName) === 0) {
63
- return commandName;
64
- }
65
- // since the command was called by something else than its name
66
- // it must have aliases
67
- const aliases = this.alias();
68
- for (let i = 0; i < aliases.length; i++) {
69
- if (cli.currentCommandName.indexOf(aliases[i]) === 0) {
70
- return aliases[i];
64
+ validateUnknownOptions(args, command) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ if (this.allowUnknownOptions()) {
67
+ return true;
71
68
  }
72
- }
73
- // shouldn't happen because the command is called either by its name or alias
74
- return '';
69
+ // if the command doesn't allow unknown options, check if all specified
70
+ // options match command options
71
+ for (const optionFromArgs in args.options) {
72
+ let matches = false;
73
+ for (let i = 0; i < command.options.length; i++) {
74
+ const option = command.options[i];
75
+ if (optionFromArgs === option.long ||
76
+ optionFromArgs === option.short) {
77
+ matches = true;
78
+ break;
79
+ }
80
+ }
81
+ if (!matches) {
82
+ return `Invalid option: '${optionFromArgs}'${os.EOL}`;
83
+ }
84
+ }
85
+ return true;
86
+ });
75
87
  }
76
- action(logger, args, cb) {
77
- Auth_1.default
78
- .restoreAuth()
79
- .then(() => {
80
- this.initAction(args, logger);
81
- if (!Auth_1.default.service.connected) {
82
- cb(new CommandError('Log in to Microsoft 365 first'));
83
- return;
88
+ validateRequiredOptions(args, command) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const shouldPrompt = cli_1.Cli.getInstance().getSettingWithDefaultValue(settingsNames_1.settingsNames.prompt, false);
91
+ let inquirer;
92
+ let prompted = false;
93
+ for (let i = 0; i < command.options.length; i++) {
94
+ if (!command.options[i].required ||
95
+ typeof args.options[command.options[i].name] !== 'undefined') {
96
+ continue;
97
+ }
98
+ if (!shouldPrompt) {
99
+ return `Required option ${command.options[i].name} not specified`;
100
+ }
101
+ if (!prompted) {
102
+ prompted = true;
103
+ cli_1.Cli.log('Provide values for the following parameters:');
104
+ }
105
+ if (!inquirer) {
106
+ inquirer = require('inquirer');
107
+ }
108
+ const missingRequireOptionValue = yield inquirer
109
+ .prompt({
110
+ name: 'missingRequireOptionValue',
111
+ message: `${command.options[i].name}: `
112
+ })
113
+ .then(result => result.missingRequireOptionValue);
114
+ args.options[command.options[i].name] = missingRequireOptionValue;
84
115
  }
85
- this.loadValuesFromAccessToken(args);
86
- this.commandAction(logger, args, cb);
87
- }, (error) => {
88
- cb(new CommandError(error));
116
+ return true;
89
117
  });
90
118
  }
91
- getTelemetryProperties(args) {
92
- return {
93
- debug: this.debug.toString(),
94
- verbose: this.verbose.toString(),
95
- output: args.options.output,
96
- query: typeof args.options.query !== 'undefined'
97
- };
119
+ validateOptionSets(args, command) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ const optionsSets = command.command.optionSets;
122
+ if (!optionsSets || optionsSets.length === 0) {
123
+ return true;
124
+ }
125
+ const argsOptions = Object.keys(args.options);
126
+ for (const optionSet of optionsSets) {
127
+ const commonOptions = argsOptions.filter(opt => optionSet.includes(opt));
128
+ if (commonOptions.length === 0) {
129
+ return `Specify one of the following options: ${optionSet.map(opt => opt).join(', ')}.`;
130
+ }
131
+ if (commonOptions.length > 1) {
132
+ return `Specify one of the following options: ${optionSet.map(opt => opt).join(', ')}, but not multiple.`;
133
+ }
134
+ }
135
+ return true;
136
+ });
98
137
  }
99
138
  alias() {
100
139
  return;
101
140
  }
102
- autocomplete() {
103
- return;
104
- }
105
141
  /**
106
142
  * Returns list of properties that should be returned in the text output.
107
143
  * Returns all properties if no default properties specified
@@ -112,33 +148,6 @@ class Command {
112
148
  allowUnknownOptions() {
113
149
  return;
114
150
  }
115
- options() {
116
- return [
117
- {
118
- option: '--query [query]'
119
- },
120
- {
121
- option: '-o, --output [output]',
122
- autocomplete: ['csv', 'json', 'text']
123
- },
124
- {
125
- option: '--verbose'
126
- },
127
- {
128
- option: '--debug'
129
- }
130
- ];
131
- }
132
- optionSets() {
133
- return;
134
- }
135
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
136
- validate(args) {
137
- return true;
138
- }
139
- types() {
140
- return;
141
- }
142
151
  /**
143
152
  * Processes options after resolving them from the user input and before
144
153
  * passing them on to command action for execution. Used for example for
@@ -150,6 +159,37 @@ class Command {
150
159
  return __awaiter(this, void 0, void 0, function* () {
151
160
  });
152
161
  }
162
+ action(logger, args, cb) {
163
+ Auth_1.default
164
+ .restoreAuth()
165
+ .then(() => {
166
+ this.initAction(args, logger);
167
+ if (!Auth_1.default.service.connected) {
168
+ cb(new CommandError('Log in to Microsoft 365 first'));
169
+ return;
170
+ }
171
+ try {
172
+ this.loadValuesFromAccessToken(args);
173
+ this.commandAction(logger, args, cb);
174
+ }
175
+ catch (ex) {
176
+ cb(new CommandError(ex));
177
+ }
178
+ }, (error) => {
179
+ cb(new CommandError(error));
180
+ });
181
+ }
182
+ validate(args, command) {
183
+ return __awaiter(this, void 0, void 0, function* () {
184
+ for (const validate of this.validators) {
185
+ const result = yield validate(args, command);
186
+ if (result !== true) {
187
+ return result;
188
+ }
189
+ }
190
+ return true;
191
+ });
192
+ }
153
193
  getCommandName(alias) {
154
194
  var _a;
155
195
  if (alias &&
@@ -199,7 +239,6 @@ class Command {
199
239
  }
200
240
  }
201
241
  handleRejectedODataJsonPromise(response, logger, callback) {
202
- // console.log(JSON.stringify(response, null, 2));
203
242
  if (response.error &&
204
243
  response.error['odata.error'] &&
205
244
  response.error['odata.error'].message) {
@@ -250,9 +289,9 @@ class Command {
250
289
  this.handleError(rawResponse, logger, callback);
251
290
  }
252
291
  initAction(args, logger) {
253
- this._debug = args.options.debug || process.env.CLIMICROSOFT365_DEBUG === '1';
254
- this._verbose = this._debug || args.options.verbose || process.env.CLIMICROSOFT365_VERBOSE === '1';
255
- request_1.default.debug = this._debug;
292
+ this.debug = args.options.debug || process.env.CLIMICROSOFT365_DEBUG === '1';
293
+ this.verbose = this.debug || args.options.verbose || process.env.CLIMICROSOFT365_VERBOSE === '1';
294
+ request_1.default.debug = this.debug;
256
295
  request_1.default.logger = logger;
257
296
  appInsights_1.default.trackEvent({
258
297
  name: this.getUsedCommandName(),
@@ -264,7 +303,7 @@ class Command {
264
303
  const unknownOptions = JSON.parse(JSON.stringify(options));
265
304
  // remove minimist catch-all option
266
305
  delete unknownOptions._;
267
- const knownOptions = this.options();
306
+ const knownOptions = this.options;
268
307
  const longOptionRegex = /--([^\s]+)/;
269
308
  const shortOptionRegex = /-([a-z])\b/;
270
309
  knownOptions.forEach(o => {
@@ -314,6 +353,60 @@ class Command {
314
353
  }
315
354
  });
316
355
  }
356
+ showDeprecationWarning(logger, deprecated, recommended) {
357
+ const cli = cli_1.Cli.getInstance();
358
+ if (cli.currentCommandName &&
359
+ cli.currentCommandName.indexOf(deprecated) === 0) {
360
+ const chalk = require('chalk');
361
+ logger.logToStderr(chalk.yellow(`Command '${deprecated}' is deprecated. Please use '${recommended}' instead`));
362
+ }
363
+ }
364
+ warn(logger, warning) {
365
+ const chalk = require('chalk');
366
+ logger.logToStderr(chalk.yellow(warning));
367
+ }
368
+ getUsedCommandName() {
369
+ const cli = cli_1.Cli.getInstance();
370
+ const commandName = this.getCommandName();
371
+ if (!cli.currentCommandName) {
372
+ return commandName;
373
+ }
374
+ if (cli.currentCommandName &&
375
+ cli.currentCommandName.indexOf(commandName) === 0) {
376
+ return commandName;
377
+ }
378
+ // since the command was called by something else than its name
379
+ // it must have aliases
380
+ const aliases = this.alias();
381
+ for (let i = 0; i < aliases.length; i++) {
382
+ if (cli.currentCommandName.indexOf(aliases[i]) === 0) {
383
+ return aliases[i];
384
+ }
385
+ }
386
+ // shouldn't happen because the command is called either by its name or alias
387
+ return '';
388
+ }
389
+ getTelemetryProperties(args) {
390
+ this.telemetry.forEach(t => t(args));
391
+ return this.telemetryProperties;
392
+ }
317
393
  }
318
394
  exports.default = Command;
395
+ _Command_instances = new WeakSet(), _Command_initTelemetry = function _Command_initTelemetry() {
396
+ this.telemetry.push((args) => {
397
+ Object.assign(this.telemetryProperties, {
398
+ debug: this.debug.toString(),
399
+ verbose: this.verbose.toString(),
400
+ output: args.options.output,
401
+ query: typeof args.options.query !== 'undefined'
402
+ });
403
+ });
404
+ }, _Command_initOptions = function _Command_initOptions() {
405
+ this.options.unshift({ option: '--query [query]' }, {
406
+ option: '-o, --output [output]',
407
+ autocomplete: ['csv', 'json', 'text']
408
+ }, { option: '--verbose' }, { option: '--debug' });
409
+ }, _Command_initValidators = function _Command_initValidators() {
410
+ this.validators.push((args, command) => this.validateUnknownOptions(args, command), (args, command) => this.validateRequiredOptions(args, command), (args, command) => this.validateOptionSets(args, command));
411
+ };
319
412
  //# sourceMappingURL=Command.js.map
package/dist/cli/Cli.js CHANGED
@@ -99,51 +99,6 @@ class Cli {
99
99
  this.printHelp();
100
100
  return Promise.resolve();
101
101
  }
102
- // if the command doesn't allow unknown options, check if all specified
103
- // options match command options
104
- if (!this.commandToExecute.command.allowUnknownOptions()) {
105
- for (const optionFromArgs in this.optionsFromArgs.options) {
106
- if (optionFromArgs === '_') {
107
- // ignore catch-all option
108
- continue;
109
- }
110
- let matches = false;
111
- for (let i = 0; i < this.commandToExecute.options.length; i++) {
112
- const option = this.commandToExecute.options[i];
113
- if (optionFromArgs === option.long ||
114
- optionFromArgs === option.short) {
115
- matches = true;
116
- break;
117
- }
118
- }
119
- if (!matches) {
120
- return this.closeWithError(`Invalid option: '${optionFromArgs}'${os.EOL}`, this.optionsFromArgs, true);
121
- }
122
- }
123
- }
124
- const shouldPrompt = this.getSettingWithDefaultValue(settingsNames_1.settingsNames.prompt, false);
125
- let inquirer;
126
- for (let i = 0; i < this.commandToExecute.options.length; i++) {
127
- if (this.commandToExecute.options[i].required &&
128
- typeof this.optionsFromArgs.options[this.commandToExecute.options[i].name] === 'undefined') {
129
- if (!shouldPrompt) {
130
- return this.closeWithError(`Required option ${this.commandToExecute.options[i].name} not specified`, this.optionsFromArgs, true);
131
- }
132
- if (i === 0) {
133
- Cli.log('Provide values for the following parameters:');
134
- }
135
- if (!inquirer) {
136
- inquirer = require('inquirer');
137
- }
138
- const missingRequireOptionValue = yield inquirer
139
- .prompt({
140
- name: 'missingRequireOptionValue',
141
- message: `${this.commandToExecute.options[i].name}: `
142
- })
143
- .then(result => result.missingRequireOptionValue);
144
- this.optionsFromArgs.options[this.commandToExecute.options[i].name] = missingRequireOptionValue;
145
- }
146
- }
147
102
  const optionsWithoutShorts = Cli.removeShortOptions(this.optionsFromArgs);
148
103
  try {
149
104
  // replace values staring with @ with file contents
@@ -163,21 +118,8 @@ class Cli {
163
118
  if (optionsWithoutShorts.options.output === undefined) {
164
119
  optionsWithoutShorts.options.output = this.getSettingWithDefaultValue(settingsNames_1.settingsNames.output, undefined);
165
120
  }
166
- // validate options sets defined by the command
167
- const optionsSets = this.commandToExecute.command.optionSets();
168
- const argsOptions = Object.keys(this.optionsFromArgs.options);
169
- const cmdArgs = this.optionsFromArgs;
170
- optionsSets === null || optionsSets === void 0 ? void 0 : optionsSets.forEach((optionSet) => {
171
- const commonOptions = argsOptions.filter(opt => optionSet.includes(opt));
172
- if (commonOptions.length === 0) {
173
- return this.closeWithError(`Specify one of the following options: ${optionSet.map(opt => opt).join(', ')}.`, cmdArgs, true);
174
- }
175
- if (commonOptions.length > 1) {
176
- return this.closeWithError(`Specify one of the following options: ${optionSet.map(opt => opt).join(', ')}, but not multiple.`, cmdArgs, true);
177
- }
178
- });
179
- const validationResult = this.commandToExecute.command.validate(optionsWithoutShorts);
180
- if (typeof validationResult === 'string') {
121
+ const validationResult = yield this.commandToExecute.command.validate(optionsWithoutShorts, this.commandToExecute);
122
+ if (validationResult !== true) {
181
123
  return this.closeWithError(validationResult, optionsWithoutShorts, true);
182
124
  }
183
125
  return Cli
@@ -348,18 +290,21 @@ class Cli {
348
290
  this.loadAllCommands();
349
291
  }
350
292
  }
351
- loadCommand(command) {
352
- this.commands.push({
293
+ static getCommandInfo(command) {
294
+ return {
353
295
  aliases: command.alias(),
354
296
  name: command.name,
355
297
  command: command,
356
298
  options: this.getCommandOptions(command),
357
299
  defaultProperties: command.defaultProperties()
358
- });
300
+ };
301
+ }
302
+ loadCommand(command) {
303
+ this.commands.push(Cli.getCommandInfo(command));
359
304
  }
360
- getCommandOptions(command) {
305
+ static getCommandOptions(command) {
361
306
  const options = [];
362
- command.options().forEach(option => {
307
+ command.options.forEach(option => {
363
308
  const required = option.option.indexOf('<') > -1;
364
309
  const optionArgs = option.option.split(/[ ,|]+/);
365
310
  let short;
@@ -390,7 +335,7 @@ class Cli {
390
335
  alias: {}
391
336
  };
392
337
  if (commandInfo) {
393
- const commandTypes = commandInfo.command.types();
338
+ const commandTypes = commandInfo.command.types;
394
339
  if (commandTypes) {
395
340
  minimistOptions.string = commandTypes.string;
396
341
  minimistOptions.boolean = commandTypes.boolean;
@@ -8,6 +8,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
10
  };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ 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");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _AadAppAddCommand_instances, _AadAppAddCommand_initTelemetry, _AadAppAddCommand_initOptions, _AadAppAddCommand_initValidators;
11
17
  Object.defineProperty(exports, "__esModule", { value: true });
12
18
  const fs = require("fs");
13
19
  const uuid_1 = require("uuid");
@@ -18,8 +24,12 @@ const GraphCommand_1 = require("../../../base/GraphCommand");
18
24
  const commands_1 = require("../../commands");
19
25
  class AadAppAddCommand extends GraphCommand_1.default {
20
26
  constructor() {
21
- super(...arguments);
27
+ super();
28
+ _AadAppAddCommand_instances.add(this);
22
29
  this.appName = '';
30
+ __classPrivateFieldGet(this, _AadAppAddCommand_instances, "m", _AadAppAddCommand_initTelemetry).call(this);
31
+ __classPrivateFieldGet(this, _AadAppAddCommand_instances, "m", _AadAppAddCommand_initOptions).call(this);
32
+ __classPrivateFieldGet(this, _AadAppAddCommand_instances, "m", _AadAppAddCommand_initValidators).call(this);
23
33
  }
24
34
  get name() {
25
35
  return commands_1.default.APP_ADD;
@@ -27,24 +37,6 @@ class AadAppAddCommand extends GraphCommand_1.default {
27
37
  get description() {
28
38
  return 'Creates new Azure AD app registration';
29
39
  }
30
- getTelemetryProperties(args) {
31
- const telemetryProps = super.getTelemetryProperties(args);
32
- telemetryProps.apis = typeof args.options.apisDelegated !== 'undefined';
33
- telemetryProps.implicitFlow = args.options.implicitFlow;
34
- telemetryProps.multitenant = args.options.multitenant;
35
- telemetryProps.platform = args.options.platform;
36
- telemetryProps.redirectUris = typeof args.options.redirectUris !== 'undefined';
37
- telemetryProps.scopeAdminConsentDescription = typeof args.options.scopeAdminConsentDescription !== 'undefined';
38
- telemetryProps.scopeAdminConsentDisplayName = typeof args.options.scopeAdminConsentDisplayName !== 'undefined';
39
- telemetryProps.scopeName = args.options.scopeConsentBy;
40
- telemetryProps.scopeName = typeof args.options.scopeName !== 'undefined';
41
- telemetryProps.uri = typeof args.options.uri !== 'undefined';
42
- telemetryProps.withSecret = args.options.withSecret;
43
- telemetryProps.certificateFile = typeof args.options.certificateFile !== 'undefined';
44
- telemetryProps.certificateBase64Encoded = typeof args.options.certificateBase64Encoded !== 'undefined';
45
- telemetryProps.certificateDisplayName = typeof args.options.certificateDisplayName !== 'undefined';
46
- return telemetryProps;
47
- }
48
40
  commandAction(logger, args, cb) {
49
41
  this
50
42
  .resolveApis(args, logger)
@@ -514,69 +506,68 @@ class AadAppAddCommand extends GraphCommand_1.default {
514
506
  }
515
507
  return Promise.resolve(appInfo);
516
508
  }
517
- options() {
518
- const options = [
519
- {
520
- option: '-n, --name [name]'
521
- },
522
- {
523
- option: '--multitenant'
524
- },
525
- {
526
- option: '-r, --redirectUris [redirectUris]'
527
- },
528
- {
529
- option: '-p, --platform [platform]',
530
- autocomplete: AadAppAddCommand.aadApplicationPlatform
531
- },
532
- {
533
- option: '--implicitFlow'
534
- },
535
- {
536
- option: '-s, --withSecret'
537
- },
538
- {
539
- option: '--apisDelegated [apisDelegated]'
540
- },
541
- {
542
- option: '--apisApplication [apisApplication]'
543
- },
544
- {
545
- option: '-u, --uri [uri]'
546
- },
547
- {
548
- option: '--scopeName [scopeName]'
549
- },
550
- {
551
- option: '--scopeConsentBy [scopeConsentBy]',
552
- autocomplete: AadAppAddCommand.aadAppScopeConsentBy
553
- },
554
- {
555
- option: '--scopeAdminConsentDisplayName [scopeAdminConsentDisplayName]'
556
- },
557
- {
558
- option: '--scopeAdminConsentDescription [scopeAdminConsentDescription]'
559
- },
560
- {
561
- option: '--certificateFile [certificateFile]'
562
- },
563
- {
564
- option: '--certificateBase64Encoded [certificateBase64Encoded]'
565
- },
566
- {
567
- option: '--certificateDisplayName [certificateDisplayName]'
568
- },
569
- {
570
- option: '--manifest [manifest]'
571
- },
572
- {
573
- option: '--save'
574
- }
575
- ];
576
- const parentOptions = super.options();
577
- return options.concat(parentOptions);
578
- }
579
- validate(args) {
509
+ }
510
+ _AadAppAddCommand_instances = new WeakSet(), _AadAppAddCommand_initTelemetry = function _AadAppAddCommand_initTelemetry() {
511
+ this.telemetry.push((args) => {
512
+ Object.assign(this.telemetryProperties, {
513
+ apis: typeof args.options.apisDelegated !== 'undefined',
514
+ implicitFlow: args.options.implicitFlow,
515
+ multitenant: args.options.multitenant,
516
+ platform: args.options.platform,
517
+ redirectUris: typeof args.options.redirectUris !== 'undefined',
518
+ scopeAdminConsentDescription: typeof args.options.scopeAdminConsentDescription !== 'undefined',
519
+ scopeAdminConsentDisplayName: typeof args.options.scopeAdminConsentDisplayName !== 'undefined',
520
+ scopeConsentBy: args.options.scopeConsentBy,
521
+ scopeName: typeof args.options.scopeName !== 'undefined',
522
+ uri: typeof args.options.uri !== 'undefined',
523
+ withSecret: args.options.withSecret,
524
+ certificateFile: typeof args.options.certificateFile !== 'undefined',
525
+ certificateBase64Encoded: typeof args.options.certificateBase64Encoded !== 'undefined',
526
+ certificateDisplayName: typeof args.options.certificateDisplayName !== 'undefined'
527
+ });
528
+ });
529
+ }, _AadAppAddCommand_initOptions = function _AadAppAddCommand_initOptions() {
530
+ this.options.unshift({
531
+ option: '-n, --name [name]'
532
+ }, {
533
+ option: '--multitenant'
534
+ }, {
535
+ option: '-r, --redirectUris [redirectUris]'
536
+ }, {
537
+ option: '-p, --platform [platform]',
538
+ autocomplete: AadAppAddCommand.aadApplicationPlatform
539
+ }, {
540
+ option: '--implicitFlow'
541
+ }, {
542
+ option: '-s, --withSecret'
543
+ }, {
544
+ option: '--apisDelegated [apisDelegated]'
545
+ }, {
546
+ option: '--apisApplication [apisApplication]'
547
+ }, {
548
+ option: '-u, --uri [uri]'
549
+ }, {
550
+ option: '--scopeName [scopeName]'
551
+ }, {
552
+ option: '--scopeConsentBy [scopeConsentBy]',
553
+ autocomplete: AadAppAddCommand.aadAppScopeConsentBy
554
+ }, {
555
+ option: '--scopeAdminConsentDisplayName [scopeAdminConsentDisplayName]'
556
+ }, {
557
+ option: '--scopeAdminConsentDescription [scopeAdminConsentDescription]'
558
+ }, {
559
+ option: '--certificateFile [certificateFile]'
560
+ }, {
561
+ option: '--certificateBase64Encoded [certificateBase64Encoded]'
562
+ }, {
563
+ option: '--certificateDisplayName [certificateDisplayName]'
564
+ }, {
565
+ option: '--manifest [manifest]'
566
+ }, {
567
+ option: '--save'
568
+ });
569
+ }, _AadAppAddCommand_initValidators = function _AadAppAddCommand_initValidators() {
570
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
580
571
  if (!args.options.manifest && !args.options.name) {
581
572
  return 'Specify either the name of the app to create or the manifest';
582
573
  }
@@ -623,8 +614,8 @@ class AadAppAddCommand extends GraphCommand_1.default {
623
614
  }
624
615
  }
625
616
  return true;
626
- }
627
- }
617
+ }));
618
+ };
628
619
  AadAppAddCommand.aadApplicationPlatform = ['spa', 'web', 'publicClient'];
629
620
  AadAppAddCommand.aadAppScopeConsentBy = ['admins', 'adminsAndUsers'];
630
621
  module.exports = new AadAppAddCommand();