@pnp/cli-microsoft365 10.0.0-beta.a4e89de → 10.0.0-beta.b184dfb
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.
- package/.eslintrc.cjs +1 -0
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Auth.js +6 -4
- package/dist/AuthServer.js +7 -7
- package/dist/Command.js +4 -1
- package/dist/api.js +1 -1
- package/dist/appInsights.js +6 -4
- package/dist/config.js +1 -0
- package/dist/m365/cli/commands/cli-doctor.js +2 -2
- package/dist/m365/cli/commands.js +1 -2
- package/dist/m365/commands/login.js +122 -69
- package/dist/m365/commands/setup.js +1 -1
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +0 -5
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +0 -5
- package/dist/m365/entra/commands/app/app-add.js +0 -5
- package/dist/m365/entra/commands/app/app-get.js +0 -5
- package/dist/m365/entra/commands/app/app-list.js +0 -5
- package/dist/m365/entra/commands/app/app-permission-add.js +0 -5
- package/dist/m365/entra/commands/app/app-remove.js +0 -5
- package/dist/m365/entra/commands/app/app-role-add.js +0 -5
- package/dist/m365/entra/commands/app/app-role-list.js +0 -5
- package/dist/m365/entra/commands/app/app-role-remove.js +0 -5
- package/dist/m365/entra/commands/app/app-set.js +0 -5
- package/dist/m365/entra/commands/approleassignment/approleassignment-add.js +0 -5
- package/dist/m365/entra/commands/approleassignment/approleassignment-list.js +0 -5
- package/dist/m365/entra/commands/approleassignment/approleassignment-remove.js +0 -5
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +0 -5
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +0 -5
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +0 -5
- package/dist/m365/entra/commands/group/group-add.js +0 -4
- package/dist/m365/entra/commands/group/group-get.js +0 -5
- package/dist/m365/entra/commands/group/group-list.js +0 -5
- package/dist/m365/entra/commands/group/{group-user-add.js → group-member-add.js} +18 -18
- package/dist/m365/entra/commands/group/{group-user-list.js → group-member-list.js} +16 -21
- package/dist/m365/entra/commands/group/{group-user-set.js → group-member-set.js} +19 -19
- package/dist/m365/entra/commands/group/group-remove.js +0 -5
- package/dist/m365/entra/commands/groupsetting/groupsetting-add.js +0 -5
- package/dist/m365/entra/commands/groupsetting/groupsetting-get.js +0 -5
- package/dist/m365/entra/commands/groupsetting/groupsetting-list.js +0 -5
- package/dist/m365/entra/commands/groupsetting/groupsetting-remove.js +0 -5
- package/dist/m365/entra/commands/groupsetting/groupsetting-set.js +0 -5
- package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-get.js +0 -5
- package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-list.js +0 -5
- package/dist/m365/entra/commands/license/license-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-add.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-get.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-remove.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-renew.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-report-activitycounts.js +0 -4
- package/dist/m365/entra/commands/m365group/m365group-report-activitydetail.js +0 -4
- package/dist/m365/entra/commands/m365group/m365group-report-activityfilecounts.js +0 -4
- package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +0 -4
- package/dist/m365/entra/commands/m365group/m365group-report-activitystorage.js +0 -4
- package/dist/m365/entra/commands/m365group/m365group-set.js +159 -86
- package/dist/m365/entra/commands/m365group/m365group-teamify.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +5 -18
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +84 -62
- package/dist/m365/entra/commands/m365group/m365group-user-set.js +3 -15
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-add.js +0 -5
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +3 -17
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-remove.js +0 -5
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-set.js +0 -5
- package/dist/m365/entra/commands/policy/policy-list.js +0 -5
- package/dist/m365/entra/commands/siteclassification/siteclassification-disable.js +0 -5
- package/dist/m365/entra/commands/siteclassification/siteclassification-enable.js +0 -5
- package/dist/m365/entra/commands/siteclassification/siteclassification-get.js +0 -5
- package/dist/m365/entra/commands/siteclassification/siteclassification-set.js +0 -5
- package/dist/m365/entra/commands/user/user-add.js +0 -5
- package/dist/m365/entra/commands/user/user-get.js +0 -5
- package/dist/m365/entra/commands/user/user-guest-add.js +0 -5
- package/dist/m365/entra/commands/user/user-hibp.js +0 -5
- package/dist/m365/entra/commands/user/user-license-add.js +0 -5
- package/dist/m365/entra/commands/user/user-license-list.js +0 -5
- package/dist/m365/entra/commands/user/user-license-remove.js +0 -5
- package/dist/m365/entra/commands/user/user-list.js +0 -5
- package/dist/m365/entra/commands/user/user-password-validate.js +0 -5
- package/dist/m365/entra/commands/user/user-recyclebinitem-clear.js +0 -5
- package/dist/m365/entra/commands/user/user-recyclebinitem-list.js +0 -5
- package/dist/m365/entra/commands/user/user-recyclebinitem-remove.js +0 -5
- package/dist/m365/entra/commands/user/user-recyclebinitem-restore.js +0 -5
- package/dist/m365/entra/commands/user/user-registrationdetails-list.js +0 -4
- package/dist/m365/entra/commands/user/user-remove.js +0 -5
- package/dist/m365/entra/commands/user/user-set.js +0 -5
- package/dist/m365/entra/commands/user/user-signin-list.js +0 -5
- package/dist/m365/entra/commands.js +3 -3
- package/dist/m365/external/commands/item/item-add.js +2 -5
- package/dist/m365/file/commands/file-move.js +135 -0
- package/dist/m365/file/commands.js +2 -1
- package/dist/m365/flow/commands/environment/environment-list.js +1 -1
- package/dist/m365/pa/commands/app/app-list.js +1 -6
- package/dist/m365/pa/commands/connector/connector-list.js +1 -6
- package/dist/m365/pa/commands/environment/environment-list.js +1 -1
- package/dist/m365/pp/commands/environment/environment-list.js +1 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0.js +27 -0
- package/dist/m365/spfx/commands/project/project-doctor/rules/FN002021_DEVDEP_rushstack_eslint_config.js +10 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0.js +59 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
- package/dist/m365/spo/commands/app/app-instance-list.js +3 -18
- package/dist/m365/spo/commands/app/app-list.js +1 -8
- package/dist/m365/spo/commands/feature/feature-list.js +1 -8
- package/dist/m365/spo/commands/file/file-copy.js +11 -7
- package/dist/m365/spo/commands/file/file-move.js +55 -33
- package/dist/m365/spo/commands/file/file-remove.js +7 -1
- package/dist/m365/spo/commands/folder/folder-copy.js +43 -35
- package/dist/m365/spo/commands/folder/folder-move.js +43 -35
- package/dist/m365/spo/commands/folder/folder-sharinglink-set.js +90 -0
- package/dist/m365/spo/commands/group/group-member-add.js +3 -23
- package/dist/m365/spo/commands/group/group-member-remove.js +1 -18
- package/dist/m365/spo/commands/list/list-remove.js +14 -4
- package/dist/m365/spo/commands/list/list-webhook-list.js +1 -6
- package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +1 -8
- package/dist/m365/spo/commands/page/page-list.js +1 -1
- package/dist/m365/spo/commands/page/page-publish.js +54 -0
- package/dist/m365/spo/commands/page/page-remove.js +37 -16
- package/dist/m365/spo/commands/page/page-template-list.js +1 -3
- package/dist/m365/spo/commands/site/site-admin-list.js +8 -9
- package/dist/m365/spo/commands/site/site-admin-remove.js +194 -0
- package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
- package/dist/m365/spo/commands/sitescript/sitescript-get.js +3 -2
- package/dist/m365/spo/commands/sitescript/sitescript-list.js +1 -3
- package/dist/m365/spo/commands/tenant/SPOTenantSitePropertiesEnumerable.js +2 -0
- package/dist/m365/spo/commands/tenant/TenantSiteProperties.js +2 -0
- package/dist/m365/spo/commands/{site/site-list.js → tenant/tenant-site-list.js} +15 -12
- package/dist/m365/spo/commands/tenant/tenant-site-membership-list.js +118 -0
- package/dist/m365/spo/commands/{site/site-rename.js → tenant/tenant-site-rename.js} +29 -32
- package/dist/m365/spo/commands/theme/theme-list.js +1 -1
- package/dist/m365/spo/commands/user/user-ensure.js +1 -11
- package/dist/m365/spo/commands/userprofile/userprofile-get.js +1 -1
- package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +1 -6
- package/dist/m365/spo/commands.js +7 -1
- package/dist/m365/spp/commands/model/model-list.js +57 -0
- package/dist/m365/spp/commands.js +2 -1
- package/dist/m365/teams/MeetingTranscript.js +2 -0
- package/dist/m365/teams/commands/channel/channel-get.js +15 -50
- package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
- package/dist/m365/teams/commands/tab/tab-list.js +5 -3
- package/dist/m365/teams/commands/team/team-get.js +16 -21
- package/dist/m365/teams/commands.js +1 -0
- package/dist/m365/viva/commands/engage/Community.js +2 -0
- package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
- package/dist/m365/viva/commands/engage/engage-community-user-list.js +98 -0
- package/dist/m365/viva/commands.js +2 -0
- package/dist/request.js +46 -61
- package/dist/telemetryRunner.js +2 -2
- package/dist/utils/spo.js +98 -29
- package/dist/utils/spp.js +22 -0
- package/dist/utils/teams.js +47 -5
- package/dist/utils/timersUtil.js +13 -0
- package/dist/utils/urlUtil.js +8 -0
- package/dist/utils/vivaEngage.js +61 -0
- package/dist/utils/zod.js +12 -3
- package/docs/docs/cmd/cli/cli-doctor.mdx +24 -23
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-add.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-get.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-list.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-get.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-list.mdx +0 -6
- package/docs/docs/cmd/entra/administrativeunit/administrativeunit-remove.mdx +0 -6
- package/docs/docs/cmd/entra/app/app-add.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-get.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-list.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-permission-add.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-permission-list.mdx +0 -6
- package/docs/docs/cmd/entra/app/app-remove.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-role-add.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-role-list.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-role-remove.mdx +0 -1
- package/docs/docs/cmd/entra/app/app-set.mdx +0 -1
- package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +0 -6
- package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +0 -6
- package/docs/docs/cmd/entra/approleassignment/approleassignment-remove.mdx +0 -6
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +0 -1
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +0 -1
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +0 -1
- package/docs/docs/cmd/entra/group/group-add.mdx +0 -6
- package/docs/docs/cmd/entra/group/group-get.mdx +0 -6
- package/docs/docs/cmd/entra/group/group-list.mdx +0 -6
- package/docs/docs/cmd/entra/group/group-member-add.mdx +62 -0
- package/docs/docs/cmd/entra/group/{group-user-list.mdx → group-member-list.mdx} +14 -20
- package/docs/docs/cmd/entra/group/group-member-set.mdx +62 -0
- package/docs/docs/cmd/entra/group/group-remove.mdx +0 -6
- package/docs/docs/cmd/entra/groupsetting/groupsetting-add.mdx +0 -6
- package/docs/docs/cmd/entra/groupsetting/groupsetting-get.mdx +0 -6
- package/docs/docs/cmd/entra/groupsetting/groupsetting-list.mdx +0 -6
- package/docs/docs/cmd/entra/groupsetting/groupsetting-remove.mdx +0 -6
- package/docs/docs/cmd/entra/groupsetting/groupsetting-set.mdx +0 -6
- package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-get.mdx +0 -6
- package/docs/docs/cmd/entra/groupsettingtemplate/groupsettingtemplate-list.mdx +0 -6
- package/docs/docs/cmd/entra/license/license-list.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-add.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-get.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-list.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-clear.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-remove.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-restore.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-renew.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-report-activitycounts.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-report-activitydetail.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-report-activityfilecounts.mdx +0 -6
- package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +2 -8
- package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +3 -9
- package/docs/docs/cmd/entra/m365group/m365group-set.mdx +38 -23
- package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +5 -11
- package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +5 -14
- package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +0 -12
- package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +26 -21
- package/docs/docs/cmd/entra/m365group/m365group-user-set.mdx +4 -17
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -9
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -7
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +4 -10
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +3 -9
- package/docs/docs/cmd/entra/policy/policy-list.mdx +3 -9
- package/docs/docs/cmd/entra/siteclassification/siteclassification-disable.mdx +3 -9
- package/docs/docs/cmd/entra/siteclassification/siteclassification-enable.mdx +7 -13
- package/docs/docs/cmd/entra/siteclassification/siteclassification-get.mdx +1 -7
- package/docs/docs/cmd/entra/siteclassification/siteclassification-set.mdx +8 -14
- package/docs/docs/cmd/entra/user/user-add.mdx +4 -10
- package/docs/docs/cmd/entra/user/user-get.mdx +7 -13
- package/docs/docs/cmd/entra/user/user-guest-add.mdx +3 -9
- package/docs/docs/cmd/entra/user/user-hibp.mdx +2 -8
- package/docs/docs/cmd/entra/user/user-license-add.mdx +0 -6
- package/docs/docs/cmd/entra/user/user-license-list.mdx +0 -6
- package/docs/docs/cmd/entra/user/user-license-remove.mdx +2 -8
- package/docs/docs/cmd/entra/user/user-list.mdx +1 -7
- package/docs/docs/cmd/entra/user/user-password-validate.mdx +1 -7
- package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +2 -8
- package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +0 -6
- package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +2 -8
- package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +0 -6
- package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +7 -13
- package/docs/docs/cmd/entra/user/user-remove.mdx +2 -8
- package/docs/docs/cmd/entra/user/user-set.mdx +0 -6
- package/docs/docs/cmd/entra/user/user-signin-list.mdx +9 -15
- package/docs/docs/cmd/external/item/item-add.mdx +3 -3
- package/docs/docs/cmd/file/file-move.mdx +79 -0
- package/docs/docs/cmd/login.mdx +9 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
- package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
- package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-move.mdx +116 -11
- package/docs/docs/cmd/spo/file/file-remove.mdx +13 -4
- package/docs/docs/cmd/spo/folder/folder-copy.mdx +84 -13
- package/docs/docs/cmd/spo/folder/folder-move.mdx +84 -13
- package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +116 -0
- package/docs/docs/cmd/spo/group/group-member-add.mdx +8 -14
- package/docs/docs/cmd/spo/group/group-member-remove.mdx +5 -11
- package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
- package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
- package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
- package/docs/docs/cmd/spo/list/list-remove.mdx +10 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
- package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
- package/docs/docs/cmd/spo/page/page-publish.mdx +41 -0
- package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
- package/docs/docs/cmd/spo/site/site-admin-add.mdx +2 -2
- package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
- package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
- package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
- package/docs/docs/cmd/spo/sitescript/sitescript-get.mdx +14 -1
- package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
- package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
- package/docs/docs/cmd/spo/{site/site-list.mdx → tenant/tenant-site-list.mdx} +19 -11
- package/docs/docs/cmd/spo/tenant/tenant-site-membership-list.mdx +122 -0
- package/docs/docs/cmd/spo/{site/site-rename.mdx → tenant/tenant-site-rename.mdx} +7 -7
- package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
- package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
- package/docs/docs/cmd/spo/user/user-ensure.mdx +2 -5
- package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +3 -5
- package/docs/docs/cmd/spp/model/model-list.mdx +140 -0
- package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
- package/docs/docs/cmd/teams/tab/tab-list.mdx +1 -2
- package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
- package/docs/docs/cmd/viva/engage/engage-community-user-list.mdx +123 -0
- package/npm-shrinkwrap.json +2215 -717
- package/package.json +20 -21
- package/dist/m365/cli/commands/cli-reconsent.js +0 -29
- package/dist/m365/entra/aadCommands.js +0 -89
- package/docs/docs/cmd/cli/cli-reconsent.mdx +0 -62
- package/docs/docs/cmd/entra/group/group-user-add.mdx +0 -62
- package/docs/docs/cmd/entra/group/group-user-set.mdx +0 -62
|
@@ -3,6 +3,8 @@ export default {
|
|
|
3
3
|
CONNECTIONS_APP_CREATE: `${prefix} connections app create`,
|
|
4
4
|
ENGAGE_COMMUNITY_ADD: `${prefix} engage community add`,
|
|
5
5
|
ENGAGE_COMMUNITY_GET: `${prefix} engage community get`,
|
|
6
|
+
ENGAGE_COMMUNITY_LIST: `${prefix} engage community list`,
|
|
7
|
+
ENGAGE_COMMUNITY_USER_LIST: `${prefix} engage community user list`,
|
|
6
8
|
ENGAGE_GROUP_LIST: `${prefix} engage group list`,
|
|
7
9
|
ENGAGE_GROUP_USER_ADD: `${prefix} engage group user add`,
|
|
8
10
|
ENGAGE_GROUP_USER_REMOVE: `${prefix} engage group user remove`,
|
package/dist/request.js
CHANGED
|
@@ -4,6 +4,7 @@ import auth, { Auth } from './Auth.js';
|
|
|
4
4
|
import { app } from './utils/app.js';
|
|
5
5
|
import { formatting } from './utils/formatting.js';
|
|
6
6
|
import { timings } from './cli/timings.js';
|
|
7
|
+
import { timersUtil } from './utils/timersUtil.js';
|
|
7
8
|
class Request {
|
|
8
9
|
set debug(debug) {
|
|
9
10
|
// if the value to set is the same as current value return early to avoid
|
|
@@ -125,76 +126,60 @@ class Request {
|
|
|
125
126
|
options.method = 'HEAD';
|
|
126
127
|
return this.execute(options);
|
|
127
128
|
}
|
|
128
|
-
execute(options
|
|
129
|
+
async execute(options) {
|
|
129
130
|
const start = process.hrtime.bigint();
|
|
130
131
|
if (!this._logger) {
|
|
131
|
-
|
|
132
|
+
throw 'Logger not set on the request object';
|
|
132
133
|
}
|
|
133
134
|
this.updateRequestForCloudType(options, auth.connection.cloudType);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
.
|
|
146
|
-
|
|
147
|
-
if (options.headers['x-anonymous']) {
|
|
148
|
-
delete options.headers['x-anonymous'];
|
|
149
|
-
}
|
|
150
|
-
if (options.headers['x-resource']) {
|
|
151
|
-
delete options.headers['x-resource'];
|
|
152
|
-
}
|
|
153
|
-
if (accessToken !== '') {
|
|
154
|
-
options.headers.authorization = `Bearer ${accessToken}`;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
|
|
158
|
-
if (proxyUrl) {
|
|
159
|
-
options.proxy = this.createProxyConfigFromUrl(proxyUrl);
|
|
135
|
+
try {
|
|
136
|
+
let accessToken = '';
|
|
137
|
+
if (options.headers && options.headers['x-anonymous']) {
|
|
138
|
+
accessToken = '';
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
const url = options.headers && options.headers['x-resource'] ? options.headers['x-resource'] : options.url;
|
|
142
|
+
const resource = Auth.getResourceFromUrl(url);
|
|
143
|
+
accessToken = await auth.ensureAccessToken(resource, this._logger, this._debug);
|
|
144
|
+
}
|
|
145
|
+
if (options.headers) {
|
|
146
|
+
if (options.headers['x-anonymous']) {
|
|
147
|
+
delete options.headers['x-anonymous'];
|
|
160
148
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
.then((res) => {
|
|
164
|
-
if (resolve) {
|
|
165
|
-
resolve((options.responseType === 'stream' || options.fullResponse) ? res : res.data);
|
|
149
|
+
if (options.headers['x-resource']) {
|
|
150
|
+
delete options.headers['x-resource'];
|
|
166
151
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
timings.api.push(Number(end - start));
|
|
170
|
-
_resolve((options.responseType === 'stream' || options.fullResponse) ? res : res.data);
|
|
152
|
+
if (accessToken !== '') {
|
|
153
|
+
options.headers.authorization = `Bearer ${accessToken}`;
|
|
171
154
|
}
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
155
|
+
}
|
|
156
|
+
const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
|
|
157
|
+
if (proxyUrl) {
|
|
158
|
+
options.proxy = this.createProxyConfigFromUrl(proxyUrl);
|
|
159
|
+
}
|
|
160
|
+
const res = await this.req(options);
|
|
161
|
+
const end = process.hrtime.bigint();
|
|
162
|
+
timings.api.push(Number(end - start));
|
|
163
|
+
return options.responseType === 'stream' || options.fullResponse ?
|
|
164
|
+
res :
|
|
165
|
+
res.data;
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const end = process.hrtime.bigint();
|
|
169
|
+
timings.api.push(Number(end - start));
|
|
170
|
+
if (error && error.response && (error.response.status === 429 || error.response.status === 503)) {
|
|
171
|
+
let retryAfter = parseInt(error.response.headers['retry-after'] || '10');
|
|
172
|
+
if (isNaN(retryAfter)) {
|
|
173
|
+
retryAfter = 10;
|
|
185
174
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
reject(error);
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
const end = process.hrtime.bigint();
|
|
192
|
-
timings.api.push(Number(end - start));
|
|
193
|
-
_reject(error);
|
|
194
|
-
}
|
|
175
|
+
if (this._debug) {
|
|
176
|
+
await this._logger.log(`Request throttled. Waiting ${retryAfter} sec before retrying...`);
|
|
195
177
|
}
|
|
196
|
-
|
|
197
|
-
|
|
178
|
+
await timersUtil.setTimeout(retryAfter * 1000);
|
|
179
|
+
return this.execute(options);
|
|
180
|
+
}
|
|
181
|
+
throw error;
|
|
182
|
+
}
|
|
198
183
|
}
|
|
199
184
|
updateRequestForCloudType(options, cloudType) {
|
|
200
185
|
const url = new URL(options.url);
|
package/dist/telemetryRunner.js
CHANGED
|
@@ -8,7 +8,7 @@ try {
|
|
|
8
8
|
const data = JSON.parse(input);
|
|
9
9
|
const { commandName, properties, exception, shell, session } = data;
|
|
10
10
|
appInsights.commonProperties.shell = shell;
|
|
11
|
-
appInsights.context.tags[
|
|
11
|
+
appInsights.context.tags[appInsights.context.keys.sessionId] = session;
|
|
12
12
|
if (exception) {
|
|
13
13
|
appInsights.trackException({
|
|
14
14
|
exception
|
|
@@ -20,7 +20,7 @@ try {
|
|
|
20
20
|
properties
|
|
21
21
|
});
|
|
22
22
|
}
|
|
23
|
-
appInsights.flush();
|
|
23
|
+
await appInsights.flush();
|
|
24
24
|
}
|
|
25
25
|
catch { }
|
|
26
26
|
//# sourceMappingURL=telemetryRunner.js.map
|
package/dist/utils/spo.js
CHANGED
|
@@ -11,17 +11,20 @@ import { odata } from './odata.js';
|
|
|
11
11
|
import { RoleType } from '../m365/spo/commands/roledefinition/RoleType.js';
|
|
12
12
|
import { entraGroup } from './entraGroup.js';
|
|
13
13
|
import { SharingCapabilities } from '../m365/spo/commands/site/SharingCapabilities.js';
|
|
14
|
-
import {
|
|
15
|
-
export var
|
|
16
|
-
(function (
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
})(
|
|
14
|
+
import { timersUtil } from './timersUtil.js';
|
|
15
|
+
export var CreateFileCopyJobsNameConflictBehavior;
|
|
16
|
+
(function (CreateFileCopyJobsNameConflictBehavior) {
|
|
17
|
+
CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Fail"] = 0] = "Fail";
|
|
18
|
+
CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Replace"] = 1] = "Replace";
|
|
19
|
+
CreateFileCopyJobsNameConflictBehavior[CreateFileCopyJobsNameConflictBehavior["Rename"] = 2] = "Rename";
|
|
20
|
+
})(CreateFileCopyJobsNameConflictBehavior || (CreateFileCopyJobsNameConflictBehavior = {}));
|
|
21
|
+
export var CreateFolderCopyJobsNameConflictBehavior;
|
|
22
|
+
(function (CreateFolderCopyJobsNameConflictBehavior) {
|
|
23
|
+
CreateFolderCopyJobsNameConflictBehavior[CreateFolderCopyJobsNameConflictBehavior["Fail"] = 0] = "Fail";
|
|
24
|
+
CreateFolderCopyJobsNameConflictBehavior[CreateFolderCopyJobsNameConflictBehavior["Rename"] = 2] = "Rename";
|
|
25
|
+
})(CreateFolderCopyJobsNameConflictBehavior || (CreateFolderCopyJobsNameConflictBehavior = {}));
|
|
21
26
|
// Wrapping this into a settings object so we can alter the values in tests
|
|
22
|
-
|
|
23
|
-
pollingInterval: 3000
|
|
24
|
-
};
|
|
27
|
+
const pollingInterval = 3000;
|
|
25
28
|
export const spo = {
|
|
26
29
|
async getRequestDigest(siteUrl) {
|
|
27
30
|
const requestOptions = {
|
|
@@ -79,7 +82,7 @@ export const spo = {
|
|
|
79
82
|
}
|
|
80
83
|
return;
|
|
81
84
|
}
|
|
82
|
-
await setTimeout(
|
|
85
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
83
86
|
await spo.waitUntilFinished({
|
|
84
87
|
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
85
88
|
siteUrl,
|
|
@@ -691,7 +694,7 @@ export const spo = {
|
|
|
691
694
|
if (!wait || isComplete) {
|
|
692
695
|
return;
|
|
693
696
|
}
|
|
694
|
-
await setTimeout(
|
|
697
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
695
698
|
await spo.waitUntilFinished({
|
|
696
699
|
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
697
700
|
siteUrl: spoAdminUrl,
|
|
@@ -905,7 +908,7 @@ export const spo = {
|
|
|
905
908
|
if (!wait || isComplete) {
|
|
906
909
|
return;
|
|
907
910
|
}
|
|
908
|
-
await setTimeout(
|
|
911
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
909
912
|
await spo.waitUntilFinished({
|
|
910
913
|
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
911
914
|
siteUrl: spoAdminUrl,
|
|
@@ -1051,7 +1054,7 @@ export const spo = {
|
|
|
1051
1054
|
const operation = json[json.length - 1];
|
|
1052
1055
|
const isComplete = operation.IsComplete;
|
|
1053
1056
|
if (!isComplete) {
|
|
1054
|
-
await setTimeout(
|
|
1057
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
1055
1058
|
await spo.waitUntilFinished({
|
|
1056
1059
|
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
1057
1060
|
siteUrl: spoAdminUrl,
|
|
@@ -1551,14 +1554,14 @@ export const spo = {
|
|
|
1551
1554
|
return file;
|
|
1552
1555
|
},
|
|
1553
1556
|
/**
|
|
1554
|
-
* Create a SharePoint copy job to copy a file
|
|
1555
|
-
* @param webUrl Absolute web URL where the source file
|
|
1556
|
-
* @param sourceUrl Absolute URL of the source file
|
|
1557
|
+
* Create a SharePoint copy job to copy a file to another location.
|
|
1558
|
+
* @param webUrl Absolute web URL where the source file is located.
|
|
1559
|
+
* @param sourceUrl Absolute URL of the source file.
|
|
1557
1560
|
* @param destinationUrl Absolute URL of the destination folder.
|
|
1558
1561
|
* @param options Options for the copy job.
|
|
1559
1562
|
* @returns Copy job information. Use {@link spo.getCopyJobResult} to get the result of the copy job.
|
|
1560
1563
|
*/
|
|
1561
|
-
async
|
|
1564
|
+
async createFileCopyJob(webUrl, sourceUrl, destinationUrl, options) {
|
|
1562
1565
|
const requestOptions = {
|
|
1563
1566
|
url: `${webUrl}/_api/Site/CreateCopyJobs`,
|
|
1564
1567
|
headers: {
|
|
@@ -1569,12 +1572,44 @@ export const spo = {
|
|
|
1569
1572
|
destinationUri: destinationUrl,
|
|
1570
1573
|
exportObjectUris: [sourceUrl],
|
|
1571
1574
|
options: {
|
|
1572
|
-
NameConflictBehavior: options?.nameConflictBehavior ??
|
|
1575
|
+
NameConflictBehavior: options?.nameConflictBehavior ?? CreateFileCopyJobsNameConflictBehavior.Fail,
|
|
1573
1576
|
AllowSchemaMismatch: true,
|
|
1574
1577
|
BypassSharedLock: !!options?.bypassSharedLock,
|
|
1575
1578
|
IgnoreVersionHistory: !!options?.ignoreVersionHistory,
|
|
1579
|
+
IncludeItemPermissions: !!options?.includeItemPermissions,
|
|
1580
|
+
CustomizedItemName: options?.newName ? [options.newName] : undefined,
|
|
1581
|
+
SameWebCopyMoveOptimization: true,
|
|
1582
|
+
IsMoveMode: options?.operation === 'move'
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
};
|
|
1586
|
+
const response = await request.post(requestOptions);
|
|
1587
|
+
return response.value[0];
|
|
1588
|
+
},
|
|
1589
|
+
/**
|
|
1590
|
+
* Create a SharePoint copy job to copy a folder to another location.
|
|
1591
|
+
* @param webUrl Absolute web URL where the source folder is located.
|
|
1592
|
+
* @param sourceUrl Absolute URL of the source folder.
|
|
1593
|
+
* @param destinationUrl Absolute URL of the destination folder.
|
|
1594
|
+
* @param options Options for the copy job.
|
|
1595
|
+
* @returns Copy job information. Use {@link spo.getCopyJobResult} to get the result of the copy job.
|
|
1596
|
+
*/
|
|
1597
|
+
async createFolderCopyJob(webUrl, sourceUrl, destinationUrl, options) {
|
|
1598
|
+
const requestOptions = {
|
|
1599
|
+
url: `${webUrl}/_api/Site/CreateCopyJobs`,
|
|
1600
|
+
headers: {
|
|
1601
|
+
accept: 'application/json;odata=nometadata'
|
|
1602
|
+
},
|
|
1603
|
+
responseType: 'json',
|
|
1604
|
+
data: {
|
|
1605
|
+
destinationUri: destinationUrl,
|
|
1606
|
+
exportObjectUris: [sourceUrl],
|
|
1607
|
+
options: {
|
|
1608
|
+
NameConflictBehavior: options?.nameConflictBehavior ?? CreateFolderCopyJobsNameConflictBehavior.Fail,
|
|
1609
|
+
AllowSchemaMismatch: true,
|
|
1576
1610
|
CustomizedItemName: options?.newName ? [options.newName] : undefined,
|
|
1577
|
-
SameWebCopyMoveOptimization: true
|
|
1611
|
+
SameWebCopyMoveOptimization: true,
|
|
1612
|
+
IsMoveMode: options?.operation === 'move'
|
|
1578
1613
|
}
|
|
1579
1614
|
}
|
|
1580
1615
|
};
|
|
@@ -1599,12 +1634,20 @@ export const spo = {
|
|
|
1599
1634
|
copyJobInfo: copyJobInfo
|
|
1600
1635
|
}
|
|
1601
1636
|
};
|
|
1637
|
+
const logs = [];
|
|
1602
1638
|
let progress = await request.post(requestOptions);
|
|
1639
|
+
const newLogs = progress.Logs?.map(l => JSON.parse(l));
|
|
1640
|
+
if (newLogs?.length > 0) {
|
|
1641
|
+
logs.push(...newLogs);
|
|
1642
|
+
}
|
|
1603
1643
|
while (progress.JobState !== 0) {
|
|
1604
|
-
await setTimeout(
|
|
1644
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
1605
1645
|
progress = await request.post(requestOptions);
|
|
1646
|
+
const newLogs = progress.Logs?.map(l => JSON.parse(l));
|
|
1647
|
+
if (newLogs?.length > 0) {
|
|
1648
|
+
logs.push(...newLogs);
|
|
1649
|
+
}
|
|
1606
1650
|
}
|
|
1607
|
-
const logs = progress.Logs.map(l => JSON.parse(l));
|
|
1608
1651
|
// Check if the job has failed
|
|
1609
1652
|
const errorLog = logs.find(l => l.Event === 'JobError');
|
|
1610
1653
|
if (errorLog) {
|
|
@@ -1615,7 +1658,7 @@ export const spo = {
|
|
|
1615
1658
|
return objectInfo;
|
|
1616
1659
|
},
|
|
1617
1660
|
/**
|
|
1618
|
-
* Gets the
|
|
1661
|
+
* Gets the primary owner login from a site as admin.
|
|
1619
1662
|
* @param adminUrl The SharePoint admin URL
|
|
1620
1663
|
* @param siteId The site ID
|
|
1621
1664
|
* @param logger The logger object
|
|
@@ -1629,13 +1672,12 @@ export const spo = {
|
|
|
1629
1672
|
const requestOptions = {
|
|
1630
1673
|
url: `${adminUrl}/_api/SPO.Tenant/sites('${siteId}')?$select=OwnerLoginName`,
|
|
1631
1674
|
headers: {
|
|
1632
|
-
accept: 'application/json;odata=nometadata'
|
|
1633
|
-
|
|
1634
|
-
|
|
1675
|
+
accept: 'application/json;odata=nometadata'
|
|
1676
|
+
},
|
|
1677
|
+
responseType: 'json'
|
|
1635
1678
|
};
|
|
1636
1679
|
const response = await request.get(requestOptions);
|
|
1637
|
-
|
|
1638
|
-
return responseContent.OwnerLoginName;
|
|
1680
|
+
return response.OwnerLoginName;
|
|
1639
1681
|
},
|
|
1640
1682
|
/**
|
|
1641
1683
|
* Gets the primary owner login from a site.
|
|
@@ -1650,7 +1692,6 @@ export const spo = {
|
|
|
1650
1692
|
}
|
|
1651
1693
|
const requestOptions = {
|
|
1652
1694
|
url: `${siteUrl}/_api/site/owner`,
|
|
1653
|
-
method: 'GET',
|
|
1654
1695
|
headers: {
|
|
1655
1696
|
'accept': 'application/json;odata=nometadata'
|
|
1656
1697
|
},
|
|
@@ -1658,6 +1699,34 @@ export const spo = {
|
|
|
1658
1699
|
};
|
|
1659
1700
|
const responseContent = await request.get(requestOptions);
|
|
1660
1701
|
return responseContent?.LoginName;
|
|
1702
|
+
},
|
|
1703
|
+
/**
|
|
1704
|
+
* Retrieves the site admin properties for a given site URL.
|
|
1705
|
+
* @param adminUrl The SharePoint admin url.
|
|
1706
|
+
* @param siteUrl URL of the site for which to retrieve properties.
|
|
1707
|
+
* @param includeDetail Set to true to include detailed properties.
|
|
1708
|
+
* @param logger The logger object.
|
|
1709
|
+
* @param verbose Set for verbose logging.
|
|
1710
|
+
* @returns Tenant Site properties.
|
|
1711
|
+
*/
|
|
1712
|
+
async getSiteAdminPropertiesByUrl(siteUrl, includeDetail, logger, verbose) {
|
|
1713
|
+
if (verbose) {
|
|
1714
|
+
await logger.logToStderr(`Getting site admin properties for URL: ${siteUrl}...`);
|
|
1715
|
+
}
|
|
1716
|
+
const adminUrl = await spo.getSpoAdminUrl(logger, !!verbose);
|
|
1717
|
+
const requestOptions = {
|
|
1718
|
+
url: `${adminUrl}/_api/SPO.Tenant/GetSitePropertiesByUrl`,
|
|
1719
|
+
headers: {
|
|
1720
|
+
accept: 'application/json;odata=nometadata',
|
|
1721
|
+
'content-type': 'application/json;charset=utf-8'
|
|
1722
|
+
},
|
|
1723
|
+
data: {
|
|
1724
|
+
url: siteUrl,
|
|
1725
|
+
includeDetail: includeDetail
|
|
1726
|
+
},
|
|
1727
|
+
responseType: 'json'
|
|
1728
|
+
};
|
|
1729
|
+
return request.post(requestOptions);
|
|
1661
1730
|
}
|
|
1662
1731
|
};
|
|
1663
1732
|
//# sourceMappingURL=spo.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import request from '../request.js';
|
|
2
|
+
export const spp = {
|
|
3
|
+
/**
|
|
4
|
+
* Asserts whether the specified site is a content center.
|
|
5
|
+
* @param siteUrl The URL of the site to check.
|
|
6
|
+
* @throws Error when the site is not a content center.
|
|
7
|
+
*/
|
|
8
|
+
async assertSiteIsContentCenter(siteUrl) {
|
|
9
|
+
const requestOptions = {
|
|
10
|
+
url: `${siteUrl}/_api/web?$select=WebTemplateConfiguration`,
|
|
11
|
+
headers: {
|
|
12
|
+
accept: 'application/json;odata=nometadata'
|
|
13
|
+
},
|
|
14
|
+
responseType: 'json'
|
|
15
|
+
};
|
|
16
|
+
const response = await request.get(requestOptions);
|
|
17
|
+
if (response.WebTemplateConfiguration !== 'CONTENTCTR#0') {
|
|
18
|
+
throw Error(`${siteUrl} is not a content site.`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=spp.js.map
|
package/dist/utils/teams.js
CHANGED
|
@@ -3,6 +3,25 @@ import { odata } from './odata.js';
|
|
|
3
3
|
import { cli } from '../cli/cli.js';
|
|
4
4
|
const graphResource = 'https://graph.microsoft.com';
|
|
5
5
|
export const teams = {
|
|
6
|
+
/**
|
|
7
|
+
* Retrieve a team by its name.
|
|
8
|
+
* @param displayName Name of the team to retrieve.
|
|
9
|
+
* @throws Error if the team cannot be found.
|
|
10
|
+
* @throws Error when multiple teams with the same name and prompting is disabled.
|
|
11
|
+
* @returns The Teams team.
|
|
12
|
+
*/
|
|
13
|
+
async getTeamByDisplayName(displayName) {
|
|
14
|
+
const teams = await odata.getAllItems(`${graphResource}/v1.0/teams?$filter=displayName eq '${formatting.encodeQueryParameter(displayName)}'`);
|
|
15
|
+
if (!teams.length) {
|
|
16
|
+
throw Error(`The specified team '${displayName}' does not exist.`);
|
|
17
|
+
}
|
|
18
|
+
if (teams.length === 1) {
|
|
19
|
+
return teams[0];
|
|
20
|
+
}
|
|
21
|
+
const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', teams);
|
|
22
|
+
const result = await cli.handleMultipleResultsFound(`Multiple teams with name '${displayName}' found.`, resultAsKeyValuePair);
|
|
23
|
+
return result;
|
|
24
|
+
},
|
|
6
25
|
/**
|
|
7
26
|
* Retrieve the id of a team by its name.
|
|
8
27
|
* @param displayName Name of the team to retrieve.
|
|
@@ -15,12 +34,35 @@ export const teams = {
|
|
|
15
34
|
if (!teams.length) {
|
|
16
35
|
throw Error(`The specified team '${displayName}' does not exist.`);
|
|
17
36
|
}
|
|
18
|
-
if (teams.length
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
37
|
+
if (teams.length === 1) {
|
|
38
|
+
return teams[0].id;
|
|
39
|
+
}
|
|
40
|
+
const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', teams);
|
|
41
|
+
const result = await cli.handleMultipleResultsFound(`Multiple teams with name '${displayName}' found.`, resultAsKeyValuePair);
|
|
42
|
+
return result.id;
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Retrieves a channel by its name in a Microsoft Teams team.
|
|
46
|
+
* @param teamId The ID of the team.
|
|
47
|
+
* @param name The name of the channel.
|
|
48
|
+
* @throws Throws an error if the specified channel does not exist in the team.
|
|
49
|
+
* @returns The Teams channel.
|
|
50
|
+
*/
|
|
51
|
+
async getChannelByDisplayName(teamId, name) {
|
|
52
|
+
const channelRequestOptions = {
|
|
53
|
+
url: `${graphResource}/v1.0/teams/${teamId}/channels?$filter=displayName eq '${formatting.encodeQueryParameter(name)}'`,
|
|
54
|
+
headers: {
|
|
55
|
+
accept: 'application/json;odata.metadata=none'
|
|
56
|
+
},
|
|
57
|
+
responseType: 'json'
|
|
58
|
+
};
|
|
59
|
+
const response = await odata.getAllItems(channelRequestOptions);
|
|
60
|
+
// Only one channel can have the same name in a team
|
|
61
|
+
const channelItem = response[0];
|
|
62
|
+
if (!channelItem) {
|
|
63
|
+
throw Error(`The channel '${name}' does not exist in the Microsoft Teams team with ID '${teamId}'.`);
|
|
22
64
|
}
|
|
23
|
-
return
|
|
65
|
+
return channelItem;
|
|
24
66
|
},
|
|
25
67
|
/**
|
|
26
68
|
* Retrieves the channel ID by its name in a Microsoft Teams team.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { setTimeout } from "timers/promises";
|
|
2
|
+
export const timersUtil = {
|
|
3
|
+
/**
|
|
4
|
+
* Timeout for a specific duration.
|
|
5
|
+
* @param duration Duration in milliseconds.
|
|
6
|
+
*/
|
|
7
|
+
/* c8 ignore next 4 */
|
|
8
|
+
// Function is created so we can easily mock it in our tests
|
|
9
|
+
async setTimeout(duration) {
|
|
10
|
+
return setTimeout(duration);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=timersUtil.js.map
|
package/dist/utils/urlUtil.js
CHANGED
|
@@ -198,6 +198,14 @@ export const urlUtil = {
|
|
|
198
198
|
return rootUrl.origin;
|
|
199
199
|
}
|
|
200
200
|
},
|
|
201
|
+
/**
|
|
202
|
+
* Removes leading slashes from the URL.
|
|
203
|
+
* @param url The URL to process.
|
|
204
|
+
* @returns The URL without leading slashes.
|
|
205
|
+
*/
|
|
206
|
+
removeLeadingSlashes(url) {
|
|
207
|
+
return url.replace(/^\/+/, '');
|
|
208
|
+
},
|
|
201
209
|
/**
|
|
202
210
|
* Removes trailing slashes from the URL.
|
|
203
211
|
* @param url The URL to process.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { cli } from '../cli/cli.js';
|
|
2
|
+
import request from '../request.js';
|
|
3
|
+
import { formatting } from './formatting.js';
|
|
4
|
+
import { odata } from './odata.js';
|
|
5
|
+
export const vivaEngage = {
|
|
6
|
+
/**
|
|
7
|
+
* Get Viva Engage group ID by community ID.
|
|
8
|
+
* @param communityId The ID of the Viva Engage community.
|
|
9
|
+
* @returns The ID of the Viva Engage group.
|
|
10
|
+
* @returns The Viva Engage community.
|
|
11
|
+
*/
|
|
12
|
+
async getCommunityById(communityId, selectProperties) {
|
|
13
|
+
const requestOptions = {
|
|
14
|
+
url: `https://graph.microsoft.com/v1.0/employeeExperience/communities/${communityId}?$select=${selectProperties.join(',')}`,
|
|
15
|
+
headers: {
|
|
16
|
+
accept: 'application/json;odata.metadata=none'
|
|
17
|
+
},
|
|
18
|
+
responseType: 'json'
|
|
19
|
+
};
|
|
20
|
+
const community = await request.get(requestOptions);
|
|
21
|
+
if (!community) {
|
|
22
|
+
throw `The specified Viva Engage community with ID '${communityId}' does not exist.`;
|
|
23
|
+
}
|
|
24
|
+
return community;
|
|
25
|
+
},
|
|
26
|
+
/**
|
|
27
|
+
* Get Viva Engage community by display name.
|
|
28
|
+
* @param displayName Community display name.
|
|
29
|
+
* @param selectProperties Properties to select.
|
|
30
|
+
* @returns The Viva Engage community.
|
|
31
|
+
*/
|
|
32
|
+
async getCommunityByDisplayName(displayName, selectProperties) {
|
|
33
|
+
const communities = await odata.getAllItems(`https://graph.microsoft.com/v1.0/employeeExperience/communities?$filter=displayName eq '${formatting.encodeQueryParameter(displayName)}'&$select=${selectProperties.join(',')}`);
|
|
34
|
+
if (communities.length === 0) {
|
|
35
|
+
throw `The specified Viva Engage community '${displayName}' does not exist.`;
|
|
36
|
+
}
|
|
37
|
+
if (communities.length > 1) {
|
|
38
|
+
const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', communities);
|
|
39
|
+
const selectedCommunity = await cli.handleMultipleResultsFound(`Multiple Viva Engage communities with name '${displayName}' found.`, resultAsKeyValuePair);
|
|
40
|
+
return selectedCommunity;
|
|
41
|
+
}
|
|
42
|
+
return communities[0];
|
|
43
|
+
},
|
|
44
|
+
/**
|
|
45
|
+
* Get Viva Engage community by Microsoft Entra group ID.
|
|
46
|
+
* Note: The Graph API doesn't support filtering by groupId, so we need to retrieve all communities and filter them in memory.
|
|
47
|
+
* @param entraGroupId The ID of the Microsoft Entra group.
|
|
48
|
+
* @param selectProperties Properties to select.
|
|
49
|
+
* @returns The Viva Engage community.
|
|
50
|
+
*/
|
|
51
|
+
async getCommunityByEntraGroupId(entraGroupId, selectProperties) {
|
|
52
|
+
const properties = selectProperties.includes('groupId') ? selectProperties : [...selectProperties, 'groupId'];
|
|
53
|
+
const communities = await odata.getAllItems(`https://graph.microsoft.com/v1.0/employeeExperience/communities?$select=${properties.join(',')}`);
|
|
54
|
+
const filteredCommunity = communities.find(c => c.groupId === entraGroupId);
|
|
55
|
+
if (!filteredCommunity) {
|
|
56
|
+
throw `The Microsoft Entra group with id '${entraGroupId}' is not associated with any Viva Engage community.`;
|
|
57
|
+
}
|
|
58
|
+
return filteredCommunity;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=vivaEngage.js.map
|
package/dist/utils/zod.js
CHANGED
|
@@ -60,14 +60,14 @@ function parseDefault(def, _options, currentOption) {
|
|
|
60
60
|
function parseEnum(def, _options, currentOption) {
|
|
61
61
|
if (currentOption) {
|
|
62
62
|
currentOption.type = 'string';
|
|
63
|
-
currentOption.autocomplete = def.values;
|
|
63
|
+
currentOption.autocomplete = [...def.values];
|
|
64
64
|
}
|
|
65
65
|
return;
|
|
66
66
|
}
|
|
67
67
|
function parseNativeEnum(def, _options, currentOption) {
|
|
68
68
|
if (currentOption) {
|
|
69
69
|
currentOption.type = 'string';
|
|
70
|
-
currentOption.autocomplete = Object.
|
|
70
|
+
currentOption.autocomplete = Object.values(def.values).map(v => String(v));
|
|
71
71
|
}
|
|
72
72
|
return;
|
|
73
73
|
}
|
|
@@ -119,6 +119,15 @@ export const zod = {
|
|
|
119
119
|
const options = [];
|
|
120
120
|
parseDef(schema._def, options);
|
|
121
121
|
return options;
|
|
122
|
-
}
|
|
122
|
+
},
|
|
123
|
+
coercedEnum: (e) => z.preprocess(val => {
|
|
124
|
+
const target = String(val)?.toLowerCase();
|
|
125
|
+
for (const k of Object.values(e)) {
|
|
126
|
+
if (String(k)?.toLowerCase() === target) {
|
|
127
|
+
return k;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}, z.nativeEnum(e))
|
|
123
132
|
};
|
|
124
133
|
//# sourceMappingURL=zod.js.map
|