@pnp/cli-microsoft365 10.0.0-beta.58f28f9 → 10.0.0-beta.67e608f
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/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- 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 +138 -73
- package/dist/m365/entra/commands/m365group/m365group-teamify.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +0 -6
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +0 -5
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +93 -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 +0 -5
- 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/spfx/commands/project/project-doctor/{doctor-1.20.0-rc.1.js → doctor-1.20.0.js} +4 -2
- 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 +1 -1
- package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.20.0-rc.1.js → upgrade-1.20.0.js} +28 -26
- package/dist/m365/spfx/commands/project/project-upgrade.js +13 -15
- package/dist/m365/spfx/commands/spfx-doctor.js +1 -1
- package/dist/m365/spo/commands/file/file-copy.js +6 -6
- package/dist/m365/spo/commands/file/file-move.js +6 -6
- package/dist/m365/spo/commands/folder/folder-move.js +43 -35
- 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/page/page-remove.js +37 -16
- package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
- package/dist/m365/spo/commands/user/user-ensure.js +1 -11
- package/dist/m365/spo/commands.js +1 -0
- package/dist/utils/spo.js +62 -21
- package/dist/utils/timersUtil.js +2 -1
- package/dist/utils/urlUtil.js +8 -0
- package/dist/utils/zod.js +11 -2
- 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 +2 -8
- package/docs/docs/cmd/entra/m365group/m365group-set.mdx +34 -22
- package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +5 -11
- package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +5 -11
- package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +0 -12
- package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +29 -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/login.mdx +9 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-move.mdx +1 -3
- package/docs/docs/cmd/spo/folder/folder-move.mdx +84 -13
- 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/page/page-remove.mdx +30 -12
- package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
- package/docs/docs/cmd/spo/user/user-ensure.mdx +2 -5
- package/package.json +1 -1
- package/dist/m365/entra/aadCommands.js +0 -89
- 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,10 +3,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
3
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
|
-
var _SpoPageRemoveCommand_instances, _SpoPageRemoveCommand_initOptions, _SpoPageRemoveCommand_initValidators;
|
|
6
|
+
var _SpoPageRemoveCommand_instances, _SpoPageRemoveCommand_initTelemetry, _SpoPageRemoveCommand_initOptions, _SpoPageRemoveCommand_initValidators, _SpoPageRemoveCommand_initTypes;
|
|
7
7
|
import { cli } from '../../../../cli/cli.js';
|
|
8
8
|
import request from '../../../../request.js';
|
|
9
|
-
import {
|
|
9
|
+
import { formatting } from '../../../../utils/formatting.js';
|
|
10
10
|
import { urlUtil } from '../../../../utils/urlUtil.js';
|
|
11
11
|
import { validation } from '../../../../utils/validation.js';
|
|
12
12
|
import SpoCommand from '../../../base/SpoCommand.js';
|
|
@@ -21,15 +21,17 @@ class SpoPageRemoveCommand extends SpoCommand {
|
|
|
21
21
|
constructor() {
|
|
22
22
|
super();
|
|
23
23
|
_SpoPageRemoveCommand_instances.add(this);
|
|
24
|
+
__classPrivateFieldGet(this, _SpoPageRemoveCommand_instances, "m", _SpoPageRemoveCommand_initTelemetry).call(this);
|
|
24
25
|
__classPrivateFieldGet(this, _SpoPageRemoveCommand_instances, "m", _SpoPageRemoveCommand_initOptions).call(this);
|
|
25
26
|
__classPrivateFieldGet(this, _SpoPageRemoveCommand_instances, "m", _SpoPageRemoveCommand_initValidators).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _SpoPageRemoveCommand_instances, "m", _SpoPageRemoveCommand_initTypes).call(this);
|
|
26
28
|
}
|
|
27
29
|
async commandAction(logger, args) {
|
|
28
30
|
if (args.options.force) {
|
|
29
31
|
await this.removePage(logger, args);
|
|
30
32
|
}
|
|
31
33
|
else {
|
|
32
|
-
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove
|
|
34
|
+
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove page '${args.options.name}'?` });
|
|
33
35
|
if (result) {
|
|
34
36
|
await this.removePage(logger, args);
|
|
35
37
|
}
|
|
@@ -37,44 +39,63 @@ class SpoPageRemoveCommand extends SpoCommand {
|
|
|
37
39
|
}
|
|
38
40
|
async removePage(logger, args) {
|
|
39
41
|
try {
|
|
40
|
-
|
|
41
|
-
let pageName = args.options.name;
|
|
42
|
-
|
|
43
|
-
requestDigest = reqDigest.FormDigestValue;
|
|
44
|
-
if (!pageName.endsWith('.aspx')) {
|
|
42
|
+
// Remove leading slashes from the page name (page can be nested in folders)
|
|
43
|
+
let pageName = urlUtil.removeLeadingSlashes(args.options.name);
|
|
44
|
+
if (!pageName.toLowerCase().endsWith('.aspx')) {
|
|
45
45
|
pageName += '.aspx';
|
|
46
46
|
}
|
|
47
47
|
if (this.verbose) {
|
|
48
48
|
await logger.logToStderr(`Removing page ${pageName}...`);
|
|
49
49
|
}
|
|
50
|
+
const filePath = `${urlUtil.getServerRelativeSiteUrl(args.options.webUrl)}/SitePages/${pageName}`;
|
|
50
51
|
const requestOptions = {
|
|
51
|
-
url: `${args.options
|
|
52
|
-
.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${urlUtil.getServerRelativeSiteUrl(args.options.webUrl)}/sitepages/${pageName}')`,
|
|
52
|
+
url: `${args.options.webUrl}/_api/web/GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(filePath)}')`,
|
|
53
53
|
headers: {
|
|
54
|
-
'X-RequestDigest': requestDigest,
|
|
55
|
-
'X-HTTP-Method': 'DELETE',
|
|
56
|
-
'content-type': 'application/json;odata=nometadata',
|
|
57
54
|
accept: 'application/json;odata=nometadata'
|
|
58
55
|
},
|
|
59
56
|
responseType: 'json'
|
|
60
57
|
};
|
|
61
|
-
|
|
58
|
+
if (args.options.bypassSharedLock) {
|
|
59
|
+
requestOptions.headers.Prefer = 'bypass-shared-lock';
|
|
60
|
+
}
|
|
61
|
+
if (args.options.recycle) {
|
|
62
|
+
requestOptions.url += '/Recycle';
|
|
63
|
+
await request.post(requestOptions);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
await request.delete(requestOptions);
|
|
67
|
+
}
|
|
62
68
|
}
|
|
63
69
|
catch (err) {
|
|
64
70
|
this.handleRejectedODataJsonPromise(err);
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
|
-
_SpoPageRemoveCommand_instances = new WeakSet(),
|
|
74
|
+
_SpoPageRemoveCommand_instances = new WeakSet(), _SpoPageRemoveCommand_initTelemetry = function _SpoPageRemoveCommand_initTelemetry() {
|
|
75
|
+
this.telemetry.push((args) => {
|
|
76
|
+
Object.assign(this.telemetryProperties, {
|
|
77
|
+
force: !!args.options.force,
|
|
78
|
+
recycle: !!args.options.recycle,
|
|
79
|
+
bypassSharedLock: !!args.options.bypassSharedLock
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}, _SpoPageRemoveCommand_initOptions = function _SpoPageRemoveCommand_initOptions() {
|
|
69
83
|
this.options.unshift({
|
|
84
|
+
option: '-u, --webUrl <webUrl>'
|
|
85
|
+
}, {
|
|
70
86
|
option: '-n, --name <name>'
|
|
71
87
|
}, {
|
|
72
|
-
option: '
|
|
88
|
+
option: '--recycle'
|
|
89
|
+
}, {
|
|
90
|
+
option: '--bypassSharedLock'
|
|
73
91
|
}, {
|
|
74
92
|
option: '-f, --force'
|
|
75
93
|
});
|
|
76
94
|
}, _SpoPageRemoveCommand_initValidators = function _SpoPageRemoveCommand_initValidators() {
|
|
77
95
|
this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.webUrl));
|
|
96
|
+
}, _SpoPageRemoveCommand_initTypes = function _SpoPageRemoveCommand_initTypes() {
|
|
97
|
+
this.types.string.push('name', 'webUrl');
|
|
98
|
+
this.types.boolean.push('force', 'bypassSharedLock', 'recycle');
|
|
78
99
|
};
|
|
79
100
|
export default new SpoPageRemoveCommand();
|
|
80
101
|
//# sourceMappingURL=page-remove.js.map
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import SpoCommand from '../../../base/SpoCommand.js';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { zod } from '../../../../utils/zod.js';
|
|
5
|
+
import commands from '../../commands.js';
|
|
6
|
+
import { validation } from '../../../../utils/validation.js';
|
|
7
|
+
import request from '../../../../request.js';
|
|
8
|
+
const options = globalOptionsZod
|
|
9
|
+
.extend({
|
|
10
|
+
siteUrl: zod.alias('u', z.string()
|
|
11
|
+
.refine(url => validation.isValidSharePointUrl(url) === true, url => ({
|
|
12
|
+
message: `'${url}' is not a valid SharePoint Online site URL.`
|
|
13
|
+
}))),
|
|
14
|
+
capability: z.enum(['full', 'limited', 'ownersOnly'])
|
|
15
|
+
})
|
|
16
|
+
.strict();
|
|
17
|
+
class SpoSiteSharingPermissionSetCommand extends SpoCommand {
|
|
18
|
+
get name() {
|
|
19
|
+
return commands.SITE_SHARINGPERMISSION_SET;
|
|
20
|
+
}
|
|
21
|
+
get description() {
|
|
22
|
+
return 'Controls how a site and its components can be shared';
|
|
23
|
+
}
|
|
24
|
+
get schema() {
|
|
25
|
+
return options;
|
|
26
|
+
}
|
|
27
|
+
async commandAction(logger, args) {
|
|
28
|
+
try {
|
|
29
|
+
if (this.verbose) {
|
|
30
|
+
await logger.logToStderr(`Updating sharing permissions for site '${args.options.siteUrl}'...`);
|
|
31
|
+
}
|
|
32
|
+
const { capability } = args.options;
|
|
33
|
+
if (this.verbose) {
|
|
34
|
+
await logger.logToStderr(`Updating site sharing permissions...`);
|
|
35
|
+
}
|
|
36
|
+
const requestOptionsWeb = {
|
|
37
|
+
url: `${args.options.siteUrl}/_api/Web`,
|
|
38
|
+
headers: {
|
|
39
|
+
accept: 'application/json;odata=nometadata'
|
|
40
|
+
},
|
|
41
|
+
responseType: 'json',
|
|
42
|
+
data: {
|
|
43
|
+
MembersCanShare: capability === 'full' || capability === 'limited'
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
await request.patch(requestOptionsWeb);
|
|
47
|
+
if (this.verbose) {
|
|
48
|
+
await logger.logToStderr(`Updating associated member group sharing permissions...`);
|
|
49
|
+
}
|
|
50
|
+
const requestOptionsMemberGroup = {
|
|
51
|
+
url: `${args.options.siteUrl}/_api/Web/AssociatedMemberGroup`,
|
|
52
|
+
headers: {
|
|
53
|
+
accept: 'application/json;odata=nometadata'
|
|
54
|
+
},
|
|
55
|
+
responseType: 'json',
|
|
56
|
+
data: {
|
|
57
|
+
AllowMembersEditMembership: capability === 'full'
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
await request.patch(requestOptionsMemberGroup);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
this.handleRejectedODataJsonPromise(err);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export default new SpoSiteSharingPermissionSetCommand();
|
|
68
|
+
//# sourceMappingURL=site-sharingpermission-set.js.map
|
|
@@ -25,10 +25,6 @@ class SpoUserEnsureCommand extends SpoCommand {
|
|
|
25
25
|
__classPrivateFieldGet(this, _SpoUserEnsureCommand_instances, "m", _SpoUserEnsureCommand_initOptionSets).call(this);
|
|
26
26
|
}
|
|
27
27
|
async commandAction(logger, args) {
|
|
28
|
-
if (args.options.aadId) {
|
|
29
|
-
args.options.entraId = args.options.aadId;
|
|
30
|
-
await this.warn(logger, `Option 'aadId' is deprecated. Please use 'entraId' instead`);
|
|
31
|
-
}
|
|
32
28
|
if (this.verbose) {
|
|
33
29
|
await logger.logToStderr(`Ensuring user ${args.options.entraId || args.options.userName} at site ${args.options.webUrl}`);
|
|
34
30
|
}
|
|
@@ -62,7 +58,6 @@ _SpoUserEnsureCommand_instances = new WeakSet(), _SpoUserEnsureCommand_initTelem
|
|
|
62
58
|
this.telemetry.push((args) => {
|
|
63
59
|
Object.assign(this.telemetryProperties, {
|
|
64
60
|
entraId: typeof args.options.entraId !== 'undefined',
|
|
65
|
-
aadId: typeof args.options.aadId !== 'undefined',
|
|
66
61
|
userName: typeof args.options.userName !== 'undefined'
|
|
67
62
|
});
|
|
68
63
|
});
|
|
@@ -71,8 +66,6 @@ _SpoUserEnsureCommand_instances = new WeakSet(), _SpoUserEnsureCommand_initTelem
|
|
|
71
66
|
option: '-u, --webUrl <webUrl>'
|
|
72
67
|
}, {
|
|
73
68
|
option: '--entraId [entraId]'
|
|
74
|
-
}, {
|
|
75
|
-
option: '--aadId [aadId]'
|
|
76
69
|
}, {
|
|
77
70
|
option: '--userName [userName]'
|
|
78
71
|
});
|
|
@@ -85,16 +78,13 @@ _SpoUserEnsureCommand_instances = new WeakSet(), _SpoUserEnsureCommand_initTelem
|
|
|
85
78
|
if (args.options.entraId && !validation.isValidGuid(args.options.entraId)) {
|
|
86
79
|
return `${args.options.entraId} is not a valid GUID.`;
|
|
87
80
|
}
|
|
88
|
-
if (args.options.aadId && !validation.isValidGuid(args.options.aadId)) {
|
|
89
|
-
return `${args.options.aadId} is not a valid GUID.`;
|
|
90
|
-
}
|
|
91
81
|
if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
|
|
92
82
|
return `${args.options.userName} is not a valid userName.`;
|
|
93
83
|
}
|
|
94
84
|
return true;
|
|
95
85
|
});
|
|
96
86
|
}, _SpoUserEnsureCommand_initOptionSets = function _SpoUserEnsureCommand_initOptionSets() {
|
|
97
|
-
this.optionSets.push({ options: ['entraId', '
|
|
87
|
+
this.optionSets.push({ options: ['entraId', 'userName'] });
|
|
98
88
|
};
|
|
99
89
|
export default new SpoUserEnsureCommand();
|
|
100
90
|
//# sourceMappingURL=user-ensure.js.map
|
|
@@ -271,6 +271,7 @@ export default {
|
|
|
271
271
|
SITE_RECYCLEBINITEM_RESTORE: `${prefix} site recyclebinitem restore`,
|
|
272
272
|
SITE_REMOVE: `${prefix} site remove`,
|
|
273
273
|
SITE_SET: `${prefix} site set`,
|
|
274
|
+
SITE_SHARINGPERMISSION_SET: `${prefix} site sharingpermission set`,
|
|
274
275
|
SITE_CHROME_SET: `${prefix} site chrome set`,
|
|
275
276
|
SITEDESIGN_ADD: `${prefix} sitedesign add`,
|
|
276
277
|
SITEDESIGN_APPLY: `${prefix} sitedesign apply`,
|
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,7 +1572,7 @@ 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,
|
|
@@ -1583,6 +1586,36 @@ export const spo = {
|
|
|
1583
1586
|
const response = await request.post(requestOptions);
|
|
1584
1587
|
return response.value[0];
|
|
1585
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,
|
|
1610
|
+
CustomizedItemName: options?.newName ? [options.newName] : undefined,
|
|
1611
|
+
SameWebCopyMoveOptimization: true,
|
|
1612
|
+
IsMoveMode: options?.operation === 'move'
|
|
1613
|
+
}
|
|
1614
|
+
}
|
|
1615
|
+
};
|
|
1616
|
+
const response = await request.post(requestOptions);
|
|
1617
|
+
return response.value[0];
|
|
1618
|
+
},
|
|
1586
1619
|
/**
|
|
1587
1620
|
* Poll until the copy job is finished and return the result.
|
|
1588
1621
|
* @param webUrl Absolute web URL where the copy job was created.
|
|
@@ -1601,12 +1634,20 @@ export const spo = {
|
|
|
1601
1634
|
copyJobInfo: copyJobInfo
|
|
1602
1635
|
}
|
|
1603
1636
|
};
|
|
1637
|
+
const logs = [];
|
|
1604
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
|
+
}
|
|
1605
1643
|
while (progress.JobState !== 0) {
|
|
1606
|
-
await setTimeout(
|
|
1644
|
+
await timersUtil.setTimeout(pollingInterval);
|
|
1607
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
|
+
}
|
|
1608
1650
|
}
|
|
1609
|
-
const logs = progress.Logs.map(l => JSON.parse(l));
|
|
1610
1651
|
// Check if the job has failed
|
|
1611
1652
|
const errorLog = logs.find(l => l.Event === 'JobError');
|
|
1612
1653
|
if (errorLog) {
|
package/dist/utils/timersUtil.js
CHANGED
|
@@ -4,7 +4,8 @@ export const timersUtil = {
|
|
|
4
4
|
* Timeout for a specific duration.
|
|
5
5
|
* @param duration Duration in milliseconds.
|
|
6
6
|
*/
|
|
7
|
-
/* c8 ignore next
|
|
7
|
+
/* c8 ignore next 4 */
|
|
8
|
+
// Function is created so we can easily mock it in our tests
|
|
8
9
|
async setTimeout(duration) {
|
|
9
10
|
return setTimeout(duration);
|
|
10
11
|
}
|
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.
|
package/dist/utils/zod.js
CHANGED
|
@@ -67,7 +67,7 @@ function parseEnum(def, _options, currentOption) {
|
|
|
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
|
|
@@ -10,12 +10,6 @@ Add a member (user, group, or device) to an administrative unit
|
|
|
10
10
|
m365 entra administrativeunit member add [options]
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
## Alias
|
|
14
|
-
|
|
15
|
-
```sh
|
|
16
|
-
m365 aad administrativeunit member add [options]
|
|
17
|
-
```
|
|
18
|
-
|
|
19
13
|
## Options
|
|
20
14
|
|
|
21
15
|
```md definition-list
|
|
@@ -12,12 +12,6 @@ Retrieves info about a specific member of an administrative unit
|
|
|
12
12
|
m365 entra administrativeunit member get [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Alias
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
m365 aad administrativeunit member get [options]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
15
|
## Options
|
|
22
16
|
|
|
23
17
|
```md definition-list
|
|
@@ -12,12 +12,6 @@ Retrieves members (users, groups, or devices) of an administrative unit
|
|
|
12
12
|
m365 entra administrativeunit member list [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Alias
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
m365 aad administrativeunit member list [options]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
15
|
## Options
|
|
22
16
|
|
|
23
17
|
```md definition-list
|
|
@@ -12,12 +12,6 @@ Lists the application and delegated permissions for a specified Entra Applicatio
|
|
|
12
12
|
m365 entra app permission list [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Alias
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
m365 aad app permission list [options]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
15
|
## Options
|
|
22
16
|
|
|
23
17
|
```md definition-list
|
|
@@ -12,12 +12,6 @@ Adds service principal permissions also known as scopes and app role assignments
|
|
|
12
12
|
m365 entra approleassignment add [options]
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
## Alias
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
m365 aad approleassignment add [options]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
15
|
## Options
|
|
22
16
|
|
|
23
17
|
```md definition-list
|