@pnp/cli-microsoft365 5.0.0 → 5.1.0-beta.55e5dfb

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 (407) hide show
  1. package/dist/cli/Cli.js +21 -6
  2. package/dist/m365/aad/commands/app/app-add.js +11 -11
  3. package/dist/m365/aad/commands/app/app-delete.js +3 -3
  4. package/dist/m365/aad/commands/app/app-get.js +3 -3
  5. package/dist/m365/aad/commands/app/app-role-delete.js +2 -2
  6. package/dist/m365/aad/commands/app/app-role-list.js +6 -5
  7. package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +4 -4
  8. package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +3 -3
  9. package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +4 -4
  10. package/dist/m365/aad/commands/group/group-list.js +8 -7
  11. package/dist/m365/aad/commands/groupsetting/groupsetting-add.js +2 -2
  12. package/dist/m365/aad/commands/groupsetting/groupsetting-get.js +2 -2
  13. package/dist/m365/aad/commands/groupsetting/groupsetting-list.js +7 -6
  14. package/dist/m365/aad/commands/groupsetting/groupsetting-remove.js +2 -2
  15. package/dist/m365/aad/commands/groupsetting/groupsetting-set.js +2 -2
  16. package/dist/m365/aad/commands/groupsettingtemplate/groupsettingtemplate-get.js +8 -8
  17. package/dist/m365/aad/commands/groupsettingtemplate/groupsettingtemplate-list.js +7 -6
  18. package/dist/m365/aad/commands/o365group/o365group-add.js +2 -2
  19. package/dist/m365/aad/commands/o365group/o365group-conversation-list.js +8 -8
  20. package/dist/m365/aad/commands/o365group/o365group-get.js +2 -2
  21. package/dist/m365/aad/commands/o365group/o365group-list.js +15 -12
  22. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +8 -7
  23. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-list.js +7 -6
  24. package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +2 -2
  25. package/dist/m365/aad/commands/o365group/o365group-remove.js +2 -2
  26. package/dist/m365/aad/commands/o365group/o365group-renew.js +2 -2
  27. package/dist/m365/aad/commands/o365group/o365group-set.js +2 -2
  28. package/dist/m365/aad/commands/o365group/o365group-teamify.js +2 -2
  29. package/dist/m365/aad/commands/o365group/o365group-user-add.js +3 -3
  30. package/dist/m365/aad/commands/o365group/o365group-user-list.js +21 -15
  31. package/dist/m365/aad/commands/o365group/o365group-user-remove.js +3 -3
  32. package/dist/m365/aad/commands/o365group/o365group-user-set.js +23 -17
  33. package/dist/m365/aad/commands/oauth2grant/oauth2grant-add.js +3 -3
  34. package/dist/m365/aad/commands/oauth2grant/oauth2grant-list.js +2 -2
  35. package/dist/m365/aad/commands/sp/sp-add.js +3 -3
  36. package/dist/m365/aad/commands/sp/sp-get.js +3 -3
  37. package/dist/m365/aad/commands/user/user-get.js +2 -2
  38. package/dist/m365/aad/commands/user/user-hibp.js +2 -2
  39. package/dist/m365/aad/commands/user/user-list.js +7 -6
  40. package/dist/m365/aad/commands/user/user-set.js +2 -2
  41. package/dist/m365/base/AppCommand.js +2 -2
  42. package/dist/m365/base/SpoCommand.js +0 -260
  43. package/dist/m365/cli/commands/cli-doctor.js +2 -2
  44. package/dist/m365/commands/status.js +3 -3
  45. package/dist/m365/file/commands/file-add.js +3 -3
  46. package/dist/m365/file/commands/file-list.js +14 -12
  47. package/dist/m365/flow/commands/flow-export.js +2 -2
  48. package/dist/m365/flow/commands/flow-remove.js +2 -2
  49. package/dist/m365/flow/commands/run/run-cancel.js +2 -2
  50. package/dist/m365/flow/commands/run/run-resubmit.js +2 -2
  51. package/dist/m365/graph/commands/schemaextension/schemaextension-add.js +2 -2
  52. package/dist/m365/graph/commands/schemaextension/schemaextension-list.js +2 -2
  53. package/dist/m365/graph/commands/schemaextension/schemaextension-set.js +2 -2
  54. package/dist/m365/graph/commands/subscription/subscription-add.js +2 -2
  55. package/dist/m365/onedrive/commands/onedrive-list.js +3 -2
  56. package/dist/m365/outlook/commands/message/message-list.js +6 -5
  57. package/dist/m365/outlook/commands/room/room-list.js +7 -6
  58. package/dist/m365/outlook/commands/roomlist/roomlist-list.js +7 -6
  59. package/dist/m365/pa/commands/app/app-get.js +2 -2
  60. package/dist/m365/pa/commands/app/app-remove.js +2 -2
  61. package/dist/m365/pa/commands/pcf/pcf-init.js +4 -4
  62. package/dist/m365/pa/commands/solution/solution-init.js +2 -2
  63. package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
  64. package/dist/m365/planner/commands/bucket/bucket-list.js +7 -7
  65. package/dist/m365/planner/commands/plan/plan-add.js +2 -2
  66. package/dist/m365/planner/commands/plan/plan-details-get.js +134 -0
  67. package/dist/m365/planner/commands/plan/plan-get.js +7 -7
  68. package/dist/m365/planner/commands/plan/plan-list.js +2 -2
  69. package/dist/m365/planner/commands/task/task-add.js +6 -6
  70. package/dist/m365/planner/commands/task/task-details-get.js +2 -2
  71. package/dist/m365/planner/commands/task/task-list.js +23 -23
  72. package/dist/m365/planner/commands/task/task-set.js +6 -6
  73. package/dist/m365/planner/commands.js +1 -0
  74. package/dist/m365/spfx/commands/package/package-generate.js +4 -4
  75. package/dist/m365/spfx/commands/project/base-project-command.js +18 -19
  76. package/dist/m365/spfx/commands/project/project-upgrade/index.js +0 -1
  77. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001005_DEP_types_react.js +2 -2
  78. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001006_DEP_types_react_dom.js +2 -2
  79. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001008_DEP_react.js +2 -2
  80. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001009_DEP_react_dom.js +2 -2
  81. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001015_DEP_types_react_addons_shallow_compare.js +2 -2
  82. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001016_DEP_types_react_addons_update.js +2 -2
  83. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001017_DEP_types_react_addons_update.js +2 -2
  84. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001019_DEP_knockout.js +2 -2
  85. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001020_DEP_types_knockout.js +2 -2
  86. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN001022_DEP_office_ui_fabric_react.js +2 -2
  87. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002015_DEVDEP_types_react.js +2 -2
  88. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002016_DEVDEP_types_react_dom.js +2 -2
  89. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN020001_RES_types_react.js +2 -2
  90. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN022001_SCSS_remove_fabric_react.js +2 -2
  91. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN022002_SCSS_add_fabric_react.js +2 -2
  92. package/dist/m365/spo/commands/app/app-add.js +3 -2
  93. package/dist/m365/spo/commands/app/app-deploy.js +4 -4
  94. package/dist/m365/spo/commands/app/app-get.js +4 -4
  95. package/dist/m365/spo/commands/app/app-install.js +3 -3
  96. package/dist/m365/spo/commands/app/app-instance-list.js +2 -1
  97. package/dist/m365/spo/commands/app/app-list.js +3 -2
  98. package/dist/m365/spo/commands/app/app-remove.js +4 -5
  99. package/dist/m365/spo/commands/app/app-retract.js +4 -5
  100. package/dist/m365/spo/commands/app/app-uninstall.js +3 -3
  101. package/dist/m365/spo/commands/app/app-upgrade.js +3 -3
  102. package/dist/m365/spo/commands/apppage/apppage-add.js +2 -2
  103. package/dist/m365/spo/commands/apppage/apppage-set.js +2 -2
  104. package/dist/m365/spo/commands/cdn/cdn-get.js +4 -3
  105. package/dist/m365/spo/commands/cdn/cdn-origin-add.js +5 -5
  106. package/dist/m365/spo/commands/cdn/cdn-origin-list.js +4 -3
  107. package/dist/m365/spo/commands/cdn/cdn-origin-remove.js +5 -5
  108. package/dist/m365/spo/commands/cdn/cdn-policy-list.js +4 -3
  109. package/dist/m365/spo/commands/cdn/cdn-policy-set.js +5 -5
  110. package/dist/m365/spo/commands/cdn/cdn-set.js +3 -2
  111. package/dist/m365/spo/commands/contenttype/contenttype-add.js +6 -6
  112. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +6 -6
  113. package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +6 -6
  114. package/dist/m365/spo/commands/contenttype/contenttype-get.js +2 -1
  115. package/dist/m365/spo/commands/contenttype/contenttype-list.js +2 -1
  116. package/dist/m365/spo/commands/contenttype/contenttype-remove.js +2 -1
  117. package/dist/m365/spo/commands/contenttypehub/contenttypehub-get.js +3 -2
  118. package/dist/m365/spo/commands/customaction/customaction-add.js +3 -3
  119. package/dist/m365/spo/commands/customaction/customaction-clear.js +2 -1
  120. package/dist/m365/spo/commands/customaction/customaction-get.js +3 -3
  121. package/dist/m365/spo/commands/customaction/customaction-list.js +2 -1
  122. package/dist/m365/spo/commands/customaction/customaction-remove.js +3 -3
  123. package/dist/m365/spo/commands/customaction/customaction-set.js +4 -4
  124. package/dist/m365/spo/commands/externaluser/externaluser-list.js +6 -6
  125. package/dist/m365/spo/commands/feature/feature-enable.js +2 -1
  126. package/dist/m365/spo/commands/feature/feature-list.js +2 -1
  127. package/dist/m365/spo/commands/field/field-add.js +3 -2
  128. package/dist/m365/spo/commands/field/field-get.js +5 -5
  129. package/dist/m365/spo/commands/field/field-remove.js +5 -5
  130. package/dist/m365/spo/commands/field/field-set.js +10 -10
  131. package/dist/m365/spo/commands/file/file-add.js +5 -7
  132. package/dist/m365/spo/commands/file/file-checkin.js +3 -3
  133. package/dist/m365/spo/commands/file/file-checkout.js +3 -3
  134. package/dist/m365/spo/commands/file/file-copy.js +18 -7
  135. package/dist/m365/spo/commands/file/file-get.js +3 -3
  136. package/dist/m365/spo/commands/file/file-list.js +3 -3
  137. package/dist/m365/spo/commands/file/file-move.js +18 -7
  138. package/dist/m365/spo/commands/file/file-remove.js +3 -3
  139. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +3 -3
  140. package/dist/m365/spo/commands/folder/folder-add.js +3 -3
  141. package/dist/m365/spo/commands/folder/folder-copy.js +16 -5
  142. package/dist/m365/spo/commands/folder/folder-get.js +3 -3
  143. package/dist/m365/spo/commands/folder/folder-list.js +3 -3
  144. package/dist/m365/spo/commands/folder/folder-move.js +16 -5
  145. package/dist/m365/spo/commands/folder/folder-remove.js +3 -3
  146. package/dist/m365/spo/commands/folder/folder-rename.js +6 -8
  147. package/dist/m365/spo/commands/group/group-get.js +2 -1
  148. package/dist/m365/spo/commands/group/group-list.js +2 -1
  149. package/dist/m365/spo/commands/group/group-remove.js +2 -1
  150. package/dist/m365/spo/commands/group/group-user-add.js +2 -1
  151. package/dist/m365/spo/commands/group/group-user-list.js +2 -1
  152. package/dist/m365/spo/commands/group/group-user-remove.js +2 -1
  153. package/dist/m365/spo/commands/hidedefaultthemes/hidedefaultthemes-get.js +2 -1
  154. package/dist/m365/spo/commands/hidedefaultthemes/hidedefaultthemes-set.js +2 -1
  155. package/dist/m365/spo/commands/homesite/homesite-get.js +2 -1
  156. package/dist/m365/spo/commands/homesite/homesite-remove.js +3 -2
  157. package/dist/m365/spo/commands/homesite/homesite-set.js +5 -5
  158. package/dist/m365/spo/commands/hubsite/hubsite-connect.js +4 -4
  159. package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +2 -1
  160. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +3 -2
  161. package/dist/m365/spo/commands/hubsite/hubsite-get.js +3 -3
  162. package/dist/m365/spo/commands/hubsite/hubsite-list.js +2 -1
  163. package/dist/m365/spo/commands/hubsite/hubsite-register.js +3 -2
  164. package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +6 -6
  165. package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +6 -6
  166. package/dist/m365/spo/commands/hubsite/hubsite-set.js +8 -8
  167. package/dist/m365/spo/commands/hubsite/hubsite-theme-sync.js +2 -1
  168. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +3 -2
  169. package/dist/m365/spo/commands/knowledgehub/knowledgehub-get.js +3 -2
  170. package/dist/m365/spo/commands/knowledgehub/knowledgehub-remove.js +3 -2
  171. package/dist/m365/spo/commands/knowledgehub/knowledgehub-set.js +5 -5
  172. package/dist/m365/spo/commands/list/list-add.js +5 -5
  173. package/dist/m365/spo/commands/list/list-contenttype-add.js +3 -3
  174. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +3 -3
  175. package/dist/m365/spo/commands/list/list-contenttype-list.js +3 -3
  176. package/dist/m365/spo/commands/list/list-contenttype-remove.js +3 -3
  177. package/dist/m365/spo/commands/list/list-get.js +3 -3
  178. package/dist/m365/spo/commands/list/list-label-get.js +4 -4
  179. package/dist/m365/spo/commands/list/list-label-set.js +5 -5
  180. package/dist/m365/spo/commands/list/list-list.js +2 -1
  181. package/dist/m365/spo/commands/list/list-remove.js +3 -3
  182. package/dist/m365/spo/commands/list/list-set.js +6 -6
  183. package/dist/m365/spo/commands/list/list-sitescript-get.js +4 -4
  184. package/dist/m365/spo/commands/list/list-view-field-add.js +5 -5
  185. package/dist/m365/spo/commands/list/list-view-field-remove.js +5 -5
  186. package/dist/m365/spo/commands/list/list-view-field-set.js +5 -5
  187. package/dist/m365/spo/commands/list/list-view-get.js +5 -5
  188. package/dist/m365/spo/commands/list/list-view-list.js +3 -3
  189. package/dist/m365/spo/commands/list/list-view-remove.js +4 -4
  190. package/dist/m365/spo/commands/list/list-view-set.js +5 -5
  191. package/dist/m365/spo/commands/list/list-webhook-add.js +3 -3
  192. package/dist/m365/spo/commands/list/list-webhook-get.js +4 -4
  193. package/dist/m365/spo/commands/list/list-webhook-list.js +4 -4
  194. package/dist/m365/spo/commands/list/list-webhook-remove.js +4 -4
  195. package/dist/m365/spo/commands/list/list-webhook-set.js +4 -4
  196. package/dist/m365/spo/commands/listitem/listitem-add.js +5 -7
  197. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +3 -3
  198. package/dist/m365/spo/commands/listitem/listitem-get.js +3 -3
  199. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +5 -7
  200. package/dist/m365/spo/commands/listitem/listitem-list.js +4 -4
  201. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +6 -8
  202. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +5 -7
  203. package/dist/m365/spo/commands/listitem/listitem-remove.js +3 -3
  204. package/dist/m365/spo/commands/listitem/listitem-set.js +4 -4
  205. package/dist/m365/spo/commands/mail/mail-send.js +2 -1
  206. package/dist/m365/spo/commands/navigation/navigation-node-add.js +2 -1
  207. package/dist/m365/spo/commands/navigation/navigation-node-list.js +2 -1
  208. package/dist/m365/spo/commands/navigation/navigation-node-remove.js +3 -2
  209. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +5 -4
  210. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-list.js +3 -2
  211. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +3 -2
  212. package/dist/m365/spo/commands/orgnewssite/orgnewssite-list.js +3 -2
  213. package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +5 -5
  214. package/dist/m365/spo/commands/orgnewssite/orgnewssite-set.js +5 -5
  215. package/dist/m365/spo/commands/page/Page.js +2 -2
  216. package/dist/m365/spo/commands/page/page-add.js +4 -4
  217. package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +3 -3
  218. package/dist/m365/spo/commands/page/page-column-get.js +2 -1
  219. package/dist/m365/spo/commands/page/page-column-list.js +2 -1
  220. package/dist/m365/spo/commands/page/page-control-get.js +3 -3
  221. package/dist/m365/spo/commands/page/page-control-list.js +2 -1
  222. package/dist/m365/spo/commands/page/page-control-set.js +3 -3
  223. package/dist/m365/spo/commands/page/page-copy.js +2 -1
  224. package/dist/m365/spo/commands/page/page-get.js +3 -3
  225. package/dist/m365/spo/commands/page/page-header-set.js +2 -1
  226. package/dist/m365/spo/commands/page/page-list.js +2 -1
  227. package/dist/m365/spo/commands/page/page-remove.js +4 -4
  228. package/dist/m365/spo/commands/page/page-section-add.js +2 -1
  229. package/dist/m365/spo/commands/page/page-section-get.js +2 -1
  230. package/dist/m365/spo/commands/page/page-section-list.js +2 -1
  231. package/dist/m365/spo/commands/page/page-set.js +4 -4
  232. package/dist/m365/spo/commands/page/page-template-list.js +2 -1
  233. package/dist/m365/spo/commands/page/page-text-add.js +4 -4
  234. package/dist/m365/spo/commands/propertybag/propertybag-base.js +4 -4
  235. package/dist/m365/spo/commands/propertybag/propertybag-get.js +4 -6
  236. package/dist/m365/spo/commands/propertybag/propertybag-list.js +4 -6
  237. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +6 -9
  238. package/dist/m365/spo/commands/propertybag/propertybag-set.js +8 -10
  239. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-add.js +4 -4
  240. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-list.js +3 -2
  241. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-grant-revoke.js +4 -4
  242. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-approve.js +5 -5
  243. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-deny.js +5 -5
  244. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-permissionrequest-list.js +3 -2
  245. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +3 -2
  246. package/dist/m365/spo/commands/site/site-add.js +36 -16
  247. package/dist/m365/spo/commands/site/site-appcatalog-add.js +5 -5
  248. package/dist/m365/spo/commands/site/site-appcatalog-remove.js +5 -5
  249. package/dist/m365/spo/commands/site/site-apppermission-add.js +3 -4
  250. package/dist/m365/spo/commands/site/site-apppermission-get.js +2 -2
  251. package/dist/m365/spo/commands/site/site-apppermission-list.js +2 -2
  252. package/dist/m365/spo/commands/site/site-apppermission-remove.js +3 -4
  253. package/dist/m365/spo/commands/site/site-apppermission-set.js +3 -4
  254. package/dist/m365/spo/commands/site/site-chrome-set.js +2 -1
  255. package/dist/m365/spo/commands/site/site-classic-add.js +33 -13
  256. package/dist/m365/spo/commands/site/site-classic-list.js +4 -4
  257. package/dist/m365/spo/commands/site/site-classic-set.js +33 -13
  258. package/dist/m365/spo/commands/site/site-commsite-enable.js +6 -6
  259. package/dist/m365/spo/commands/site/site-ensure.js +2 -1
  260. package/dist/m365/spo/commands/site/site-get.js +2 -1
  261. package/dist/m365/spo/commands/site/site-groupify.js +2 -1
  262. package/dist/m365/spo/commands/site/site-inplacerecordsmanagement-set.js +3 -3
  263. package/dist/m365/spo/commands/site/site-list.js +4 -4
  264. package/dist/m365/spo/commands/site/site-recyclebinitem-list.js +2 -1
  265. package/dist/m365/spo/commands/site/site-remove.js +34 -14
  266. package/dist/m365/spo/commands/site/site-rename.js +3 -2
  267. package/dist/m365/spo/commands/site/site-set.js +12 -12
  268. package/dist/m365/spo/commands/sitedesign/sitedesign-add.js +4 -4
  269. package/dist/m365/spo/commands/sitedesign/sitedesign-apply.js +4 -4
  270. package/dist/m365/spo/commands/sitedesign/sitedesign-get.js +3 -3
  271. package/dist/m365/spo/commands/sitedesign/sitedesign-list.js +2 -1
  272. package/dist/m365/spo/commands/sitedesign/sitedesign-remove.js +4 -4
  273. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-grant.js +4 -4
  274. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-list.js +4 -4
  275. package/dist/m365/spo/commands/sitedesign/sitedesign-rights-revoke.js +4 -4
  276. package/dist/m365/spo/commands/sitedesign/sitedesign-run-list.js +3 -3
  277. package/dist/m365/spo/commands/sitedesign/sitedesign-run-status-get.js +3 -3
  278. package/dist/m365/spo/commands/sitedesign/sitedesign-set.js +4 -4
  279. package/dist/m365/spo/commands/sitedesign/sitedesign-task-get.js +3 -3
  280. package/dist/m365/spo/commands/sitedesign/sitedesign-task-list.js +2 -1
  281. package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +3 -3
  282. package/dist/m365/spo/commands/sitescript/sitescript-add.js +3 -2
  283. package/dist/m365/spo/commands/sitescript/sitescript-get.js +4 -4
  284. package/dist/m365/spo/commands/sitescript/sitescript-list.js +3 -2
  285. package/dist/m365/spo/commands/sitescript/sitescript-remove.js +4 -4
  286. package/dist/m365/spo/commands/sitescript/sitescript-set.js +4 -4
  287. package/dist/m365/spo/commands/spo-search.js +4 -4
  288. package/dist/m365/spo/commands/spo-set.js +2 -1
  289. package/dist/m365/spo/commands/storageentity/storageentity-get.js +2 -1
  290. package/dist/m365/spo/commands/storageentity/storageentity-list.js +2 -1
  291. package/dist/m365/spo/commands/storageentity/storageentity-remove.js +5 -5
  292. package/dist/m365/spo/commands/storageentity/storageentity-set.js +5 -5
  293. package/dist/m365/spo/commands/tenant/tenant-appcatalog-add.js +2 -1
  294. package/dist/m365/spo/commands/tenant/tenant-appcatalogurl-get.js +2 -1
  295. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-list.js +3 -2
  296. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +16 -6
  297. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +16 -6
  298. package/dist/m365/spo/commands/tenant/tenant-settings-list.js +3 -2
  299. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +5 -5
  300. package/dist/m365/spo/commands/term/term-add.js +13 -13
  301. package/dist/m365/spo/commands/term/term-get.js +9 -9
  302. package/dist/m365/spo/commands/term/term-group-add.js +6 -6
  303. package/dist/m365/spo/commands/term/term-group-get.js +5 -5
  304. package/dist/m365/spo/commands/term/term-group-list.js +3 -2
  305. package/dist/m365/spo/commands/term/term-list.js +7 -7
  306. package/dist/m365/spo/commands/term/term-set-add.js +9 -9
  307. package/dist/m365/spo/commands/term/term-set-get.js +7 -7
  308. package/dist/m365/spo/commands/term/term-set-list.js +5 -5
  309. package/dist/m365/spo/commands/theme/theme-apply.js +5 -5
  310. package/dist/m365/spo/commands/theme/theme-get.js +4 -4
  311. package/dist/m365/spo/commands/theme/theme-list.js +2 -1
  312. package/dist/m365/spo/commands/theme/theme-remove.js +2 -1
  313. package/dist/m365/spo/commands/theme/theme-set.js +5 -5
  314. package/dist/m365/spo/commands/user/user-get.js +2 -1
  315. package/dist/m365/spo/commands/user/user-list.js +2 -1
  316. package/dist/m365/spo/commands/user/user-remove.js +2 -1
  317. package/dist/m365/spo/commands/userprofile/userprofile-get.js +3 -3
  318. package/dist/m365/spo/commands/userprofile/userprofile-set.js +3 -2
  319. package/dist/m365/spo/commands/web/web-add.js +4 -3
  320. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +2 -1
  321. package/dist/m365/spo/commands/web/web-get.js +2 -1
  322. package/dist/m365/spo/commands/web/web-installedlanguage-list.js +2 -1
  323. package/dist/m365/spo/commands/web/web-list.js +2 -1
  324. package/dist/m365/spo/commands/web/web-reindex.js +10 -11
  325. package/dist/m365/spo/commands/web/web-remove.js +2 -1
  326. package/dist/m365/spo/commands/web/web-set.js +2 -1
  327. package/dist/m365/teams/commands/app/app-install.js +4 -4
  328. package/dist/m365/teams/commands/app/app-list.js +8 -8
  329. package/dist/m365/teams/commands/app/app-remove.js +2 -2
  330. package/dist/m365/teams/commands/app/app-uninstall.js +2 -2
  331. package/dist/m365/teams/commands/app/app-update.js +2 -2
  332. package/dist/m365/teams/commands/channel/channel-add.js +2 -2
  333. package/dist/m365/teams/commands/channel/channel-get.js +3 -3
  334. package/dist/m365/teams/commands/channel/channel-list.js +7 -8
  335. package/dist/m365/teams/commands/channel/channel-remove.js +3 -3
  336. package/dist/m365/teams/commands/channel/channel-set.js +2 -2
  337. package/dist/m365/teams/commands/chat/chat-list.js +7 -6
  338. package/dist/m365/teams/commands/chat/chat-member-list.js +8 -8
  339. package/dist/m365/teams/commands/chat/chat-message-list.js +9 -9
  340. package/dist/m365/teams/commands/chat/chat-message-send.js +4 -4
  341. package/dist/m365/teams/commands/conversationmember/conversationmember-add.js +3 -3
  342. package/dist/m365/teams/commands/conversationmember/conversationmember-list.js +9 -9
  343. package/dist/m365/teams/commands/funsettings/funsettings-list.js +2 -2
  344. package/dist/m365/teams/commands/funsettings/funsettings-set.js +2 -2
  345. package/dist/m365/teams/commands/guestsettings/guestsettings-list.js +2 -2
  346. package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +2 -2
  347. package/dist/m365/teams/commands/membersettings/membersettings-list.js +2 -2
  348. package/dist/m365/teams/commands/membersettings/membersettings-set.js +2 -2
  349. package/dist/m365/teams/commands/message/message-get.js +3 -3
  350. package/dist/m365/teams/commands/message/message-list.js +12 -12
  351. package/dist/m365/teams/commands/message/message-reply-list.js +10 -10
  352. package/dist/m365/teams/commands/messagingsettings/messagingsettings-list.js +2 -2
  353. package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +3 -3
  354. package/dist/m365/teams/commands/report/report-directroutingcalls.js +3 -3
  355. package/dist/m365/teams/commands/report/report-pstncalls.js +3 -3
  356. package/dist/m365/teams/commands/tab/tab-add.js +5 -5
  357. package/dist/m365/teams/commands/tab/tab-get.js +4 -4
  358. package/dist/m365/teams/commands/tab/tab-list.js +10 -10
  359. package/dist/m365/teams/commands/tab/tab-remove.js +4 -4
  360. package/dist/m365/teams/commands/team/team-archive.js +2 -2
  361. package/dist/m365/teams/commands/team/team-clone.js +2 -2
  362. package/dist/m365/teams/commands/team/team-get.js +2 -2
  363. package/dist/m365/teams/commands/team/team-list.js +10 -12
  364. package/dist/m365/teams/commands/team/team-remove.js +2 -2
  365. package/dist/m365/teams/commands/team/team-set.js +2 -2
  366. package/dist/m365/teams/commands/team/team-unarchive.js +2 -2
  367. package/dist/m365/teams/commands/user/user-app-add.js +3 -3
  368. package/dist/m365/teams/commands/user/user-app-list.js +10 -10
  369. package/dist/m365/teams/commands/user/user-app-remove.js +2 -2
  370. package/dist/m365/teams/commands/user/user-list.js +14 -8
  371. package/dist/m365/tenant/commands/auditlog/auditlog-report.js +2 -2
  372. package/dist/m365/tenant/commands/id/id-get.js +2 -2
  373. package/dist/m365/tenant/commands/report/report-office365activationcounts.js +2 -2
  374. package/dist/m365/tenant/commands/report/report-office365activationsusercounts.js +2 -2
  375. package/dist/m365/tenant/commands/report/report-office365activationsuserdetail.js +2 -2
  376. package/dist/m365/tenant/commands/service/service-list.js +2 -2
  377. package/dist/m365/tenant/commands/service/service-message-list.js +2 -2
  378. package/dist/m365/tenant/commands/service/service-report-historicalservicestatus.js +2 -2
  379. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-list.js +7 -6
  380. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-list.js +7 -6
  381. package/dist/m365/tenant/commands/status/status-list.js +2 -2
  382. package/dist/m365/todo/commands/list/list-list.js +7 -6
  383. package/dist/m365/todo/commands/task/task-list.js +7 -6
  384. package/dist/request.js +4 -4
  385. package/dist/settingsNames.js +1 -0
  386. package/dist/utils/accessToken.js +44 -0
  387. package/dist/utils/formatting.js +66 -0
  388. package/dist/utils/fsUtil.js +36 -0
  389. package/dist/utils/index.js +22 -0
  390. package/dist/utils/odata.js +37 -0
  391. package/dist/utils/sinonUtil.js +19 -0
  392. package/dist/{m365/spfx/commands/project/project-upgrade/Utils.js → utils/spfx.js} +7 -19
  393. package/dist/utils/spo.js +432 -0
  394. package/dist/utils/urlUtil.js +174 -0
  395. package/dist/utils/validation.js +310 -0
  396. package/docs/docs/cmd/planner/plan/plan-details-get.md +45 -0
  397. package/npm-shrinkwrap.json +2 -2
  398. package/package.json +2 -2
  399. package/dist/Utils.js +0 -575
  400. package/dist/m365/base/AzmgmtResponse.js +0 -3
  401. package/dist/m365/base/GraphItemsListCommand.js +0 -46
  402. package/dist/m365/base/GraphResponse.js +0 -3
  403. package/dist/m365/base/GraphResponseError.js +0 -3
  404. package/dist/m365/spo/ClientSvc.js +0 -128
  405. package/dist/m365/spo/FolderExtensions.js +0 -101
  406. package/dist/m365/spo/commands/site/SpoOperation.js +0 -3
  407. package/dist/m365/spo/spo.js +0 -3
@@ -0,0 +1,432 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.spo = void 0;
4
+ const url = require("url");
5
+ const _1 = require(".");
6
+ const Auth_1 = require("../Auth");
7
+ const config_1 = require("../config");
8
+ const base_permissions_1 = require("../m365/spo/base-permissions");
9
+ const request_1 = require("../request");
10
+ exports.spo = {
11
+ getRequestDigest(siteUrl) {
12
+ const requestOptions = {
13
+ url: `${siteUrl}/_api/contextinfo`,
14
+ headers: {
15
+ accept: 'application/json;odata=nometadata'
16
+ },
17
+ responseType: 'json'
18
+ };
19
+ return request_1.default.post(requestOptions);
20
+ },
21
+ ensureFormDigest(siteUrl, logger, context, debug) {
22
+ return new Promise((resolve, reject) => {
23
+ if (_1.validation.isValidFormDigest(context)) {
24
+ if (debug) {
25
+ logger.logToStderr('Existing form digest still valid');
26
+ }
27
+ resolve(context);
28
+ return;
29
+ }
30
+ exports.spo
31
+ .getRequestDigest(siteUrl)
32
+ .then((res) => {
33
+ const now = new Date();
34
+ now.setSeconds(now.getSeconds() + res.FormDigestTimeoutSeconds - 5);
35
+ context = {
36
+ FormDigestValue: res.FormDigestValue,
37
+ FormDigestTimeoutSeconds: res.FormDigestTimeoutSeconds,
38
+ FormDigestExpiresAt: now,
39
+ WebFullUrl: res.WebFullUrl
40
+ };
41
+ resolve(context);
42
+ }, (error) => {
43
+ reject(error);
44
+ });
45
+ });
46
+ },
47
+ waitUntilFinished({ operationId, siteUrl, resolve, reject, logger, currentContext, dots, debug, verbose }) {
48
+ exports.spo
49
+ .ensureFormDigest(siteUrl, logger, currentContext, debug)
50
+ .then((res) => {
51
+ currentContext = res;
52
+ if (debug) {
53
+ logger.logToStderr(`Checking if operation ${operationId} completed...`);
54
+ }
55
+ if (!debug && verbose) {
56
+ dots += '.';
57
+ process.stdout.write(`\r${dots}`);
58
+ }
59
+ const requestOptions = {
60
+ url: `${siteUrl}/_vti_bin/client.svc/ProcessQuery`,
61
+ headers: {
62
+ 'X-RequestDigest': currentContext.FormDigestValue
63
+ },
64
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><Query Id="188" ObjectPathId="184"><Query SelectAllProperties="false"><Properties><Property Name="IsComplete" ScalarProperty="true" /><Property Name="PollingInterval" ScalarProperty="true" /></Properties></Query></Query></Actions><ObjectPaths><Identity Id="184" Name="${operationId.replace(/\\n/g, '&#xA;').replace(/"/g, '')}" /></ObjectPaths></Request>`
65
+ };
66
+ return request_1.default.post(requestOptions);
67
+ })
68
+ .then((res) => {
69
+ const json = JSON.parse(res);
70
+ const response = json[0];
71
+ if (response.ErrorInfo) {
72
+ reject(response.ErrorInfo.ErrorMessage);
73
+ }
74
+ else {
75
+ const operation = json[json.length - 1];
76
+ const isComplete = operation.IsComplete;
77
+ if (isComplete) {
78
+ if (!debug && verbose) {
79
+ process.stdout.write('\n');
80
+ }
81
+ resolve();
82
+ return;
83
+ }
84
+ setTimeout(() => {
85
+ exports.spo.waitUntilFinished({
86
+ operationId: JSON.stringify(operation._ObjectIdentity_),
87
+ siteUrl,
88
+ resolve,
89
+ reject,
90
+ logger,
91
+ currentContext,
92
+ dots,
93
+ debug,
94
+ verbose
95
+ });
96
+ }, operation.PollingInterval);
97
+ }
98
+ });
99
+ },
100
+ waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, dots, debug, verbose }) {
101
+ const requestUrl = `${siteUrl}/_api/site/GetCopyJobProgress`;
102
+ const requestOptions = {
103
+ url: requestUrl,
104
+ headers: {
105
+ 'accept': 'application/json;odata=nometadata'
106
+ },
107
+ data: { "copyJobInfo": copyJobInfo },
108
+ responseType: 'json'
109
+ };
110
+ if (!debug && verbose) {
111
+ dots += '.';
112
+ process.stdout.write(`\r${dots}`);
113
+ }
114
+ request_1.default
115
+ .post(requestOptions)
116
+ .then((resp) => {
117
+ if (debug) {
118
+ logger.logToStderr('getCopyJobProgress response...');
119
+ logger.logToStderr(resp);
120
+ }
121
+ for (const item of resp.Logs) {
122
+ const log = JSON.parse(item);
123
+ // reject if progress error
124
+ if (log.Event === "JobError" || log.Event === "JobFatalError") {
125
+ return reject(log.Message);
126
+ }
127
+ }
128
+ // two possible scenarios
129
+ // job done = success promise returned
130
+ // job in progress = recursive call using setTimeout returned
131
+ if (resp.JobState === 0) {
132
+ // job done
133
+ if (verbose) {
134
+ process.stdout.write('\n');
135
+ }
136
+ resolve();
137
+ }
138
+ else {
139
+ setTimeout(() => {
140
+ exports.spo.waitUntilCopyJobFinished({ copyJobInfo, siteUrl, pollingInterval, resolve, reject, logger, dots, debug, verbose });
141
+ }, pollingInterval);
142
+ }
143
+ });
144
+ },
145
+ getSpoUrl(logger, debug) {
146
+ if (Auth_1.default.service.spoUrl) {
147
+ if (debug) {
148
+ logger.logToStderr(`SPO URL previously retrieved ${Auth_1.default.service.spoUrl}. Returning...`);
149
+ }
150
+ return Promise.resolve(Auth_1.default.service.spoUrl);
151
+ }
152
+ return new Promise((resolve, reject) => {
153
+ if (debug) {
154
+ logger.logToStderr(`No SPO URL available. Retrieving from MS Graph...`);
155
+ }
156
+ const requestOptions = {
157
+ url: `https://graph.microsoft.com/v1.0/sites/root?$select=webUrl`,
158
+ headers: {
159
+ 'accept': 'application/json;odata.metadata=none'
160
+ },
161
+ responseType: 'json'
162
+ };
163
+ request_1.default
164
+ .get(requestOptions)
165
+ .then((res) => {
166
+ Auth_1.default.service.spoUrl = res.webUrl;
167
+ return Auth_1.default.storeConnectionInfo();
168
+ })
169
+ .then(() => {
170
+ resolve(Auth_1.default.service.spoUrl);
171
+ }, (err) => {
172
+ if (Auth_1.default.service.spoUrl) {
173
+ resolve(Auth_1.default.service.spoUrl);
174
+ }
175
+ else {
176
+ reject(err);
177
+ }
178
+ });
179
+ });
180
+ },
181
+ getSpoAdminUrl(logger, debug) {
182
+ return new Promise((resolve, reject) => {
183
+ exports.spo
184
+ .getSpoUrl(logger, debug)
185
+ .then((spoUrl) => {
186
+ resolve(spoUrl.replace(/(https:\/\/)([^\.]+)(.*)/, '$1$2-admin$3'));
187
+ }, (error) => {
188
+ reject(error);
189
+ });
190
+ });
191
+ },
192
+ getTenantId(logger, debug) {
193
+ if (Auth_1.default.service.tenantId) {
194
+ if (debug) {
195
+ logger.logToStderr(`SPO Tenant ID previously retrieved ${Auth_1.default.service.tenantId}. Returning...`);
196
+ }
197
+ return Promise.resolve(Auth_1.default.service.tenantId);
198
+ }
199
+ return new Promise((resolve, reject) => {
200
+ if (debug) {
201
+ logger.logToStderr(`No SPO Tenant ID available. Retrieving...`);
202
+ }
203
+ let spoAdminUrl = '';
204
+ exports.spo
205
+ .getSpoAdminUrl(logger, debug)
206
+ .then((_spoAdminUrl) => {
207
+ spoAdminUrl = _spoAdminUrl;
208
+ return exports.spo.getRequestDigest(spoAdminUrl);
209
+ })
210
+ .then((contextInfo) => {
211
+ const tenantInfoRequestOptions = {
212
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
213
+ headers: {
214
+ 'X-RequestDigest': contextInfo.FormDigestValue,
215
+ accept: 'application/json;odata=nometadata'
216
+ },
217
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="4" ObjectPathId="3" /><Query Id="5" ObjectPathId="3"><Query SelectAllProperties="true"><Properties /></Query></Query></Actions><ObjectPaths><Constructor Id="3" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /></ObjectPaths></Request>`
218
+ };
219
+ return request_1.default.post(tenantInfoRequestOptions);
220
+ })
221
+ .then((res) => {
222
+ const json = JSON.parse(res);
223
+ Auth_1.default.service.tenantId = json[json.length - 1]._ObjectIdentity_.replace('\n', '&#xA;');
224
+ return Auth_1.default.storeConnectionInfo();
225
+ })
226
+ .then(() => {
227
+ resolve(Auth_1.default.service.tenantId);
228
+ }, (err) => {
229
+ if (Auth_1.default.service.tenantId) {
230
+ resolve(Auth_1.default.service.tenantId);
231
+ }
232
+ else {
233
+ reject(err);
234
+ }
235
+ });
236
+ });
237
+ },
238
+ /**
239
+ * Ensures the folder path exists
240
+ * @param webFullUrl web full url e.g. https://contoso.sharepoint.com/sites/site1
241
+ * @param folderToEnsure web relative or server relative folder path e.g. /Documents/MyFolder or /sites/site1/Documents/MyFolder
242
+ * @param siteAccessToken a valid access token for the site specified in the webFullUrl param
243
+ */
244
+ ensureFolder(webFullUrl, folderToEnsure, logger, debug) {
245
+ const webUrl = url.parse(webFullUrl);
246
+ if (!webUrl.protocol || !webUrl.hostname) {
247
+ return Promise.reject('webFullUrl is not a valid URL');
248
+ }
249
+ if (!folderToEnsure) {
250
+ return Promise.reject('folderToEnsure cannot be empty');
251
+ }
252
+ // remove last '/' of webFullUrl if exists
253
+ const webFullUrlLastCharPos = webFullUrl.length - 1;
254
+ if (webFullUrl.length > 1 &&
255
+ webFullUrl[webFullUrlLastCharPos] === '/') {
256
+ webFullUrl = webFullUrl.substring(0, webFullUrlLastCharPos);
257
+ }
258
+ folderToEnsure = _1.urlUtil.getWebRelativePath(webFullUrl, folderToEnsure);
259
+ if (debug) {
260
+ logger.log(`folderToEnsure`);
261
+ logger.log(folderToEnsure);
262
+ logger.log('');
263
+ }
264
+ let nextFolder = '';
265
+ let prevFolder = '';
266
+ let folderIndex = 0;
267
+ // build array of folders e.g. ["Shared%20Documents","22","54","55"]
268
+ const folders = folderToEnsure.substring(1).split('/');
269
+ if (debug) {
270
+ logger.log('folders to process');
271
+ logger.log(JSON.stringify(folders));
272
+ logger.log('');
273
+ }
274
+ // recursive function
275
+ const checkOrAddFolder = (resolve, reject) => {
276
+ if (folderIndex === folders.length) {
277
+ if (debug) {
278
+ logger.log(`All sub-folders exist`);
279
+ }
280
+ return resolve();
281
+ }
282
+ // append the next sub-folder to the folder path and check if it exists
283
+ prevFolder = nextFolder;
284
+ nextFolder += `/${folders[folderIndex]}`;
285
+ const folderServerRelativeUrl = _1.urlUtil.getServerRelativePath(webFullUrl, nextFolder);
286
+ const requestOptions = {
287
+ url: `${webFullUrl}/_api/web/GetFolderByServerRelativeUrl('${encodeURIComponent(folderServerRelativeUrl)}')`,
288
+ headers: {
289
+ 'accept': 'application/json;odata=nometadata'
290
+ }
291
+ };
292
+ request_1.default
293
+ .get(requestOptions)
294
+ .then(() => {
295
+ folderIndex++;
296
+ checkOrAddFolder(resolve, reject);
297
+ })
298
+ .catch(() => {
299
+ const prevFolderServerRelativeUrl = _1.urlUtil.getServerRelativePath(webFullUrl, prevFolder);
300
+ const requestOptions = {
301
+ url: `${webFullUrl}/_api/web/GetFolderByServerRelativePath(DecodedUrl=@a1)/AddSubFolderUsingPath(DecodedUrl=@a2)?@a1=%27${encodeURIComponent(prevFolderServerRelativeUrl)}%27&@a2=%27${encodeURIComponent(folders[folderIndex])}%27`,
302
+ headers: {
303
+ 'accept': 'application/json;odata=nometadata'
304
+ },
305
+ responseType: 'json'
306
+ };
307
+ return request_1.default.post(requestOptions)
308
+ .then(() => {
309
+ folderIndex++;
310
+ checkOrAddFolder(resolve, reject);
311
+ })
312
+ .catch((err) => {
313
+ if (debug) {
314
+ logger.log(`Could not create sub-folder ${folderServerRelativeUrl}`);
315
+ }
316
+ reject(err);
317
+ });
318
+ });
319
+ };
320
+ return new Promise(checkOrAddFolder);
321
+ },
322
+ /**
323
+ * Requests web object identity for the current web.
324
+ * That request is something similar to _contextinfo in REST.
325
+ * The response data looks like:
326
+ * _ObjectIdentity_=<GUID>|<GUID>:site:<GUID>:web:<GUID>
327
+ * _ObjectType_=SP.Web
328
+ * ServerRelativeUrl=/sites/contoso
329
+ * @param webUrl web url
330
+ * @param formDigestValue formDigestValue
331
+ */
332
+ getCurrentWebIdentity(webUrl, formDigestValue) {
333
+ const requestOptions = {
334
+ url: `${webUrl}/_vti_bin/client.svc/ProcessQuery`,
335
+ headers: {
336
+ 'X-RequestDigest': formDigestValue
337
+ },
338
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><Query Id="1" ObjectPathId="5"><Query SelectAllProperties="false"><Properties><Property Name="ServerRelativeUrl" ScalarProperty="true" /></Properties></Query></Query></Actions><ObjectPaths><Property Id="5" ParentId="3" Name="Web" /><StaticProperty Id="3" TypeId="{3747adcd-a3c3-41b9-bfab-4a64dd2f1e0a}" Name="Current" /></ObjectPaths></Request>`
339
+ };
340
+ return new Promise((resolve, reject) => {
341
+ request_1.default.post(requestOptions).then((res) => {
342
+ const json = JSON.parse(res);
343
+ const contents = json.find(x => { return x.ErrorInfo; });
344
+ if (contents && contents.ErrorInfo) {
345
+ return reject(contents.ErrorInfo.ErrorMessage || 'ClientSvc unknown error');
346
+ }
347
+ const identityObject = json.find(x => { return x._ObjectIdentity_; });
348
+ if (identityObject) {
349
+ return resolve({
350
+ objectIdentity: identityObject._ObjectIdentity_,
351
+ serverRelativeUrl: identityObject.ServerRelativeUrl
352
+ });
353
+ }
354
+ reject('Cannot proceed. _ObjectIdentity_ not found'); // this is not supposed to happen
355
+ }, (err) => { reject(err); });
356
+ });
357
+ },
358
+ /**
359
+ * Gets EffectiveBasePermissions for web return type is "_ObjectType_\":\"SP.Web\".
360
+ * @param webObjectIdentity ObjectIdentity. Has format _ObjectIdentity_=<GUID>|<GUID>:site:<GUID>:web:<GUID>
361
+ * @param webUrl web url
362
+ * @param siteAccessToken site access token
363
+ * @param formDigestValue formDigestValue
364
+ */
365
+ getEffectiveBasePermissions(webObjectIdentity, webUrl, formDigestValue, logger, debug) {
366
+ const basePermissionsResult = new base_permissions_1.BasePermissions();
367
+ const requestOptions = {
368
+ url: `${webUrl}/_vti_bin/client.svc/ProcessQuery`,
369
+ headers: {
370
+ 'X-RequestDigest': formDigestValue
371
+ },
372
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><Query Id="11" ObjectPathId="5"><Query SelectAllProperties="false"><Properties><Property Name="EffectiveBasePermissions" ScalarProperty="true" /></Properties></Query></Query></Actions><ObjectPaths><Identity Id="5" Name="${webObjectIdentity}" /></ObjectPaths></Request>`
373
+ };
374
+ return new Promise((resolve, reject) => {
375
+ request_1.default.post(requestOptions).then((res) => {
376
+ if (debug) {
377
+ logger.log('Attempt to get the web EffectiveBasePermissions');
378
+ }
379
+ const json = JSON.parse(res);
380
+ const contents = json.find(x => { return x.ErrorInfo; });
381
+ if (contents && contents.ErrorInfo) {
382
+ return reject(contents.ErrorInfo.ErrorMessage || 'ClientSvc unknown error');
383
+ }
384
+ const permissionsObj = json.find(x => { return x.EffectiveBasePermissions; });
385
+ if (permissionsObj) {
386
+ basePermissionsResult.high = permissionsObj.EffectiveBasePermissions.High;
387
+ basePermissionsResult.low = permissionsObj.EffectiveBasePermissions.Low;
388
+ return resolve(basePermissionsResult);
389
+ }
390
+ reject('Cannot proceed. EffectiveBasePermissions not found'); // this is not supposed to happen
391
+ }, (err) => { reject(err); });
392
+ });
393
+ },
394
+ /**
395
+ * Gets folder by server relative url (GetFolderByServerRelativeUrl in REST)
396
+ * The response data looks like:
397
+ * _ObjectIdentity_=<GUID>|<GUID>:site:<GUID>:web:<GUID>:folder:<GUID>
398
+ * _ObjectType_=SP.Folder
399
+ * @param webObjectIdentity ObjectIdentity. Has format _ObjectIdentity_=<GUID>|<GUID>:site:<GUID>:web:<GUID>
400
+ * @param webUrl web url
401
+ * @param siteRelativeUrl site relative url e.g. /Shared Documents/Folder1
402
+ * @param formDigestValue formDigestValue
403
+ */
404
+ getFolderIdentity(webObjectIdentity, webUrl, siteRelativeUrl, formDigestValue) {
405
+ const serverRelativePath = _1.urlUtil.getServerRelativePath(webUrl, siteRelativeUrl);
406
+ const requestOptions = {
407
+ url: `${webUrl}/_vti_bin/client.svc/ProcessQuery`,
408
+ headers: {
409
+ 'X-RequestDigest': formDigestValue
410
+ },
411
+ data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config_1.default.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="10" ObjectPathId="9" /><ObjectIdentityQuery Id="11" ObjectPathId="9" /><Query Id="12" ObjectPathId="9"><Query SelectAllProperties="false"><Properties><Property Name="Properties" SelectAll="true"><Query SelectAllProperties="false"><Properties /></Query></Property></Properties></Query></Query></Actions><ObjectPaths><Method Id="9" ParentId="5" Name="GetFolderByServerRelativeUrl"><Parameters><Parameter Type="String">${serverRelativePath}</Parameter></Parameters></Method><Identity Id="5" Name="${webObjectIdentity}" /></ObjectPaths></Request>`
412
+ };
413
+ return new Promise((resolve, reject) => {
414
+ return request_1.default.post(requestOptions).then((res) => {
415
+ const json = JSON.parse(res);
416
+ const contents = json.find(x => { return x.ErrorInfo; });
417
+ if (contents && contents.ErrorInfo) {
418
+ return reject(contents.ErrorInfo.ErrorMessage || 'ClientSvc unknown error');
419
+ }
420
+ const objectIdentity = json.find(x => { return x._ObjectIdentity_; });
421
+ if (objectIdentity) {
422
+ return resolve({
423
+ objectIdentity: objectIdentity._ObjectIdentity_,
424
+ serverRelativeUrl: serverRelativePath
425
+ });
426
+ }
427
+ reject('Cannot proceed. Folder _ObjectIdentity_ not found'); // this is not suppose to happen
428
+ }, (err) => { reject(err); });
429
+ });
430
+ }
431
+ };
432
+ //# sourceMappingURL=spo.js.map
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.urlUtil = void 0;
4
+ const url = require("url");
5
+ exports.urlUtil = {
6
+ /**
7
+ * Returns server relative path.
8
+ * @param webUrl web full or web relative url e.g. https://contoso.sharepoint.com/sites/team1
9
+ * @param folderRelativePath folder relative path e.g. /Shared Documents
10
+ * @example
11
+ * // returns "/sites/team1"
12
+ * urlUtil.getServerRelativePath("https://contoso.sharepoint.com/sites/team1", "");
13
+ * @example
14
+ * // returns "/sites/team1/Shared Documents"
15
+ * urlUtil.getServerRelativePath("https://contoso.sharepoint.com/sites/team1", "/Shared Documents");
16
+ * @example
17
+ * // returns "/sites/team1/Shared Documents"
18
+ * urlUtil.getServerRelativePath("/sites/team1/", "/Shared Documents");
19
+ */
20
+ getServerRelativePath(webUrl, folderRelativePath) {
21
+ const tenantUrl = `${url.parse(webUrl).protocol}//${url.parse(webUrl).hostname}`;
22
+ // if webUrl is a server-relative URL then tenantUrl will resolve to null//null
23
+ // in which case we should keep webUrl
24
+ let webRelativePath = tenantUrl !== 'null//null' ? webUrl.substr(tenantUrl.length) : webUrl;
25
+ // will be used to remove relative path from the folderRelativePath
26
+ // in case the web relative url is included
27
+ let relativePathToRemove = webRelativePath;
28
+ // add '/' at 0
29
+ if (webRelativePath[0] !== '/') {
30
+ webRelativePath = `/${webRelativePath}`;
31
+ }
32
+ else {
33
+ relativePathToRemove = webRelativePath.substring(1);
34
+ }
35
+ // remove last '/' of webRelativePath
36
+ const webPathLastCharPos = webRelativePath.length - 1;
37
+ if (webRelativePath.length > 1 &&
38
+ webRelativePath[webPathLastCharPos] === '/') {
39
+ webRelativePath = webRelativePath.substring(0, webPathLastCharPos);
40
+ }
41
+ // remove the web relative path if it is contained in the folder relative path
42
+ const relativePathToRemoveIdx = folderRelativePath.toLowerCase().indexOf(relativePathToRemove.toLowerCase());
43
+ if (relativePathToRemoveIdx > -1) {
44
+ const pos = relativePathToRemoveIdx + relativePathToRemove.length;
45
+ folderRelativePath = folderRelativePath.substring(pos, folderRelativePath.length);
46
+ }
47
+ if (folderRelativePath !== '') {
48
+ // add '/' at 0 for siteRelativePath
49
+ if (folderRelativePath[0] !== '/') {
50
+ folderRelativePath = `/${folderRelativePath}`;
51
+ }
52
+ // remove last '/' of siteRelativePath
53
+ const folderPathLastCharPos = folderRelativePath.length - 1;
54
+ if (folderRelativePath[folderPathLastCharPos] === '/') {
55
+ folderRelativePath = folderRelativePath.substring(0, folderPathLastCharPos);
56
+ }
57
+ if (webRelativePath === '/' && folderRelativePath !== '') {
58
+ webRelativePath = folderRelativePath;
59
+ }
60
+ else {
61
+ webRelativePath = `${webRelativePath}${folderRelativePath}`;
62
+ }
63
+ }
64
+ return webRelativePath.replace('//', '/');
65
+ },
66
+ /**
67
+ * Returns server relative site url.
68
+ * @param webUrl web full or web relative url e.g. https://contoso.sharepoint.com/sites/team1
69
+ * @example
70
+ * // returns "/sites/team1"
71
+ * urlUtil.getServerRelativeSiteUrl("https://contoso.sharepoint.com/sites/team1";
72
+ * @example
73
+ * // returns ""
74
+ * urlUtil.getServerRelativeSiteUrl("https://contoso.sharepoint.com");
75
+ * @example
76
+ * // returns "/sites/team1/Shared Documents"
77
+ * urlUtil.getServerRelativePath("/sites/team1/", "/Shared Documents");
78
+ */
79
+ getServerRelativeSiteUrl(webUrl) {
80
+ const serverRelativeSiteUrl = exports.urlUtil.getServerRelativePath(webUrl, '');
81
+ // return an empty string instead of / to prevent // replies
82
+ return serverRelativeSiteUrl === '/' ? "" : serverRelativeSiteUrl;
83
+ },
84
+ /**
85
+ * Returns web relative path from webUrl and folderUrl.
86
+ * @param webUrl web full or web relative url e.g. https://contoso.sharepoint.com/sites/team1/
87
+ * @param folderUrl folder server relative url e.g. /sites/team1/Lists/MyList
88
+ * @example
89
+ * // returns "/Lists/MyList"
90
+ * Utils.getWebRelativePath("https://contoso.sharepoint.com/sites/team1/", "/sites/team1/Lists/MyList");
91
+ * @example
92
+ * // returns "/Shared Documents"
93
+ * Utils.getWebRelativePath("/sites/team1/", "/sites/team1/Shared Documents");
94
+ */
95
+ getWebRelativePath(webUrl, folderUrl) {
96
+ let folderWebRelativePath = '';
97
+ const tenantUrl = `${url.parse(webUrl).protocol}//${url.parse(webUrl).hostname}`;
98
+ // if webUrl is a server-relative URL then tenantUrl will resolve to null//null
99
+ // in which case we should keep webUrl
100
+ let webRelativePath = tenantUrl !== 'null//null' ? webUrl.substr(tenantUrl.length) : webUrl;
101
+ // will be used to remove relative path from the folderRelativePath
102
+ // in case the web relative url is included
103
+ let relativePathToRemove = webRelativePath;
104
+ // add '/' at 0
105
+ if (webRelativePath[0] !== '/') {
106
+ webRelativePath = `/${webRelativePath}`;
107
+ }
108
+ else {
109
+ relativePathToRemove = webRelativePath.substring(1);
110
+ }
111
+ // remove last '/' of webRelativePath
112
+ const webPathLastCharPos = webRelativePath.length - 1;
113
+ if (webRelativePath.length > 1 &&
114
+ webRelativePath[webPathLastCharPos] === '/') {
115
+ webRelativePath = webRelativePath.substring(0, webPathLastCharPos);
116
+ }
117
+ // remove the web relative path if it is contained in the folder relative path
118
+ const relativePathToRemoveIdx = folderUrl.toLowerCase().indexOf(relativePathToRemove.toLowerCase());
119
+ if (relativePathToRemoveIdx > -1) {
120
+ const pos = relativePathToRemoveIdx + relativePathToRemove.length;
121
+ folderWebRelativePath = folderUrl.substring(pos, folderUrl.length);
122
+ }
123
+ else {
124
+ folderWebRelativePath = folderUrl;
125
+ }
126
+ // add '/' at 0 for folderWebRelativePath
127
+ if (folderWebRelativePath[0] !== '/') {
128
+ folderWebRelativePath = `/${folderWebRelativePath}`;
129
+ }
130
+ // remove last '/' of folderWebRelativePath
131
+ const folderPathLastCharPos = folderWebRelativePath.length - 1;
132
+ if (folderWebRelativePath.length > 1 && folderWebRelativePath[folderPathLastCharPos] === '/') {
133
+ folderWebRelativePath = folderWebRelativePath.substring(0, folderPathLastCharPos);
134
+ }
135
+ return folderWebRelativePath.replace('//', '/');
136
+ },
137
+ /**
138
+ * Returns the absolute URL according to a Web URL and the server relative URL of a folder
139
+ * @param webUrl The full URL of a web
140
+ * @param serverRelativeUrl The server relative URL of a folder
141
+ * @example
142
+ * // returns "https://contoso.sharepoint.com/sites/team1/Lists/MyList"
143
+ * urlUtil.getAbsoluteUrl("https://contoso.sharepoint.com/sites/team1/", "/sites/team1/Lists/MyList");
144
+ */
145
+ getAbsoluteUrl(webUrl, serverRelativeUrl) {
146
+ const uri = url.parse(webUrl);
147
+ const tenantUrl = `${uri.protocol}//${uri.hostname}`;
148
+ if (serverRelativeUrl[0] !== '/') {
149
+ serverRelativeUrl = `/${serverRelativeUrl}`;
150
+ }
151
+ return `${tenantUrl}${serverRelativeUrl}`;
152
+ },
153
+ /**
154
+ * Combines base and relative url considering any missing slashes
155
+ * @param baseUrl https://contoso.com
156
+ * @param relativeUrl sites/abc
157
+ */
158
+ urlCombine(baseUrl, relativeUrl) {
159
+ // remove last '/' of base if exists
160
+ if (baseUrl.lastIndexOf('/') === baseUrl.length - 1) {
161
+ baseUrl = baseUrl.substring(0, baseUrl.length - 1);
162
+ }
163
+ // remove '/' at 0
164
+ if (relativeUrl.charAt(0) === '/') {
165
+ relativeUrl = relativeUrl.substring(1, relativeUrl.length);
166
+ }
167
+ // remove last '/' of next if exists
168
+ if (relativeUrl.lastIndexOf('/') === relativeUrl.length - 1) {
169
+ relativeUrl = relativeUrl.substring(0, relativeUrl.length - 1);
170
+ }
171
+ return `${baseUrl}/${relativeUrl}`;
172
+ }
173
+ };
174
+ //# sourceMappingURL=urlUtil.js.map