@pnp/cli-microsoft365 7.0.0-beta.99e75a7 → 7.0.0-beta.aa2d71e
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 +0 -2
- package/dist/GlobalOptions.js +1 -7
- package/dist/cli/Cli.js +19 -2
- package/dist/m365/aad/commands/app/app-add.js +8 -8
- package/dist/m365/aad/commands/app/app-role-add.js +5 -5
- package/dist/m365/aad/commands/app/app-set.js +5 -5
- package/dist/m365/aad/commands/policy/policy-list.js +5 -5
- package/dist/m365/cli/commands/cli-issue.js +5 -5
- package/dist/m365/cli/commands/config/config-get.js +5 -5
- package/dist/m365/cli/commands/config/config-reset.js +5 -5
- package/dist/m365/cli/commands/config/config-set.js +5 -5
- package/dist/m365/commands/login.js +5 -5
- package/dist/m365/commands/request.js +1 -1
- package/dist/m365/flow/commands/owner/owner-ensure.js +5 -5
- package/dist/m365/pa/commands/app/app-owner-set.js +5 -5
- package/dist/m365/pa/commands/app/app-permission-ensure.js +5 -5
- package/dist/m365/pa/commands.js +1 -4
- package/dist/m365/planner/commands/task/task-add.js +17 -11
- package/dist/m365/planner/commands/task/task-get.js +35 -25
- package/dist/m365/planner/commands/task/task-list.js +26 -19
- package/dist/m365/planner/commands/task/task-remove.js +39 -34
- package/dist/m365/planner/commands/task/task-set.js +35 -23
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +14 -14
- package/dist/m365/spfx/commands/package/package-generate.js +15 -15
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +55 -0
- package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.18.0-beta.1.js → doctor-1.18.0-beta.5.js} +1 -1
- package/dist/m365/spfx/commands/project/project-doctor.js +9 -9
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +157 -0
- package/dist/m365/spfx/commands/project/project-github-workflow-model.js +2 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
- package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.18.0-beta.1.js → upgrade-1.18.0-beta.5.js} +26 -26
- package/dist/m365/spfx/commands/project/project-upgrade.js +14 -14
- package/dist/m365/spfx/commands/spfx-doctor.js +3 -3
- package/dist/m365/spfx/commands.js +1 -0
- package/dist/m365/spo/commands/app/SpoAppBaseCommand.js +27 -26
- package/dist/m365/spo/commands/app/app-add.js +9 -9
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +5 -5
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-list.js +5 -5
- package/dist/m365/spo/commands/commandset/commandset-add.js +11 -11
- package/dist/m365/spo/commands/commandset/commandset-get.js +8 -8
- package/dist/m365/spo/commands/commandset/commandset-list.js +5 -5
- package/dist/m365/spo/commands/commandset/commandset-remove.js +5 -5
- package/dist/m365/spo/commands/commandset/commandset-set.js +11 -11
- package/dist/m365/spo/commands/file/file-move.js +73 -97
- package/dist/m365/spo/commands/file/file-sharinglink-add.js +8 -8
- package/dist/m365/spo/commands/file/file-sharinglink-list.js +5 -5
- package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
- package/dist/m365/spo/commands/folder/folder-move.js +89 -47
- package/dist/m365/spo/commands/list/list-add.js +4 -4
- package/dist/m365/spo/commands/list/list-set.js +4 -4
- package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +34 -5
- package/dist/m365/spo/commands/page/clientsidepages.js +1 -81
- package/dist/m365/spo/commands/propertybag/propertybag-base.js +63 -59
- package/dist/m365/spo/commands/propertybag/propertybag-remove.js +28 -31
- package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +30 -32
- package/dist/m365/spo/commands/site/FlowsPolicy.js +7 -0
- package/dist/m365/spo/commands/site/site-add.js +114 -161
- package/dist/m365/spo/commands/site/site-apppermission-add.js +15 -18
- package/dist/m365/spo/commands/site/site-apppermission-remove.js +34 -38
- package/dist/m365/spo/commands/site/site-apppermission-set.js +11 -14
- package/dist/m365/spo/commands/site/site-ensure.js +14 -67
- package/dist/m365/spo/commands/site/site-hubsite-disconnect.js +22 -22
- package/dist/m365/spo/commands/site/site-list.js +27 -43
- package/dist/m365/spo/commands/site/site-recyclebinitem-list.js +6 -6
- package/dist/m365/spo/commands/site/site-remove.js +166 -210
- package/dist/m365/spo/commands/site/site-set.js +177 -198
- package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +8 -8
- package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +8 -8
- package/dist/m365/spo/commands/tenant/tenant-settings-set.js +4 -4
- package/dist/m365/spo/commands/theme/theme-remove.js +24 -24
- package/dist/m365/spo/commands/theme/theme-set.js +0 -1
- package/dist/m365/spo/commands/user/user-remove.js +27 -27
- package/dist/m365/spo/commands/web/web-reindex.js +35 -42
- package/dist/m365/spo/commands/web/web-remove.js +21 -21
- package/dist/m365/spo/commands/web/web-roleassignment-add.js +16 -31
- package/dist/m365/spo/commands/web/web-roleassignment-remove.js +33 -44
- package/dist/m365/spo/commands/web/web-roleinheritance-break.js +18 -18
- package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +19 -19
- package/dist/m365/spo/commands/web/web-set.js +5 -5
- package/dist/m365/teams/commands/app/app-list.js +5 -5
- package/dist/m365/teams/commands/chat/chat-member-add.js +5 -5
- package/dist/m365/teams/commands/funsettings/funsettings-set.js +4 -4
- package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +4 -4
- package/dist/m365/teams/commands/membersettings/membersettings-set.js +4 -4
- package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +5 -5
- package/dist/m365/teams/commands/team/team-set.js +3 -3
- package/dist/m365/todo/commands/task/task-add.js +6 -6
- package/dist/m365/yammer/commands/message/message-like-set.js +27 -28
- package/dist/m365/yammer/commands/message/message-list.js +67 -86
- package/dist/m365/yammer/commands/message/message-remove.js +18 -18
- package/dist/m365/yammer/commands/yammer-search.js +58 -74
- package/dist/utils/aadGroup.js +18 -0
- package/dist/utils/fsUtil.js +5 -0
- package/dist/utils/spo.js +594 -53
- package/dist/utils/validation.js +0 -3
- package/docs/docs/cmd/planner/task/task-add.mdx +22 -7
- package/docs/docs/cmd/planner/task/task-get.mdx +13 -4
- package/docs/docs/cmd/planner/task/task-list.mdx +22 -7
- package/docs/docs/cmd/planner/task/task-remove.mdx +25 -8
- package/docs/docs/cmd/planner/task/task-set.mdx +22 -7
- package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +94 -0
- package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
- package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
- package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
- package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +14 -1
- package/docs/docs/cmd/spo/site/site-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-list.mdx +3 -78
- package/npm-shrinkwrap.json +240 -1417
- package/package.json +6 -7
- package/dist/m365/pa/cds-project-mutator.js +0 -91
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/generated/ManifestTypes.d.ts +0 -11
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_ControlManifest.Input.xml +0 -31
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_index.ts +0 -51
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/generated/ManifestTypes.d.ts +0 -12
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_ControlManifest.Input.xml +0 -37
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_index.ts +0 -48
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/index.ts +0 -0
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_ControlManifest.Input.xml +0 -31
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_index.tsx +0 -58
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_ControlManifest.Input.xml +0 -37
- package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_index.tsx +0 -55
- package/dist/m365/pa/commands/pcf/pcf-init/assets/package.json +0 -19
- package/dist/m365/pa/commands/pcf/pcf-init/assets/pcfconfig.json +0 -3
- package/dist/m365/pa/commands/pcf/pcf-init/assets/template_.gitignore +0 -14
- package/dist/m365/pa/commands/pcf/pcf-init/assets/template_pcfprojecttype.pcfproj +0 -45
- package/dist/m365/pa/commands/pcf/pcf-init/pcf-init-variables.js +0 -2
- package/dist/m365/pa/commands/pcf/pcf-init.js +0 -120
- package/dist/m365/pa/commands/solution/solution-init/assets/Other/Customizations.xml +0 -18
- package/dist/m365/pa/commands/solution/solution-init/assets/Other/Relationships.xml +0 -2
- package/dist/m365/pa/commands/solution/solution-init/assets/Other/template_Solution.xml +0 -94
- package/dist/m365/pa/commands/solution/solution-init/assets/template_.gitignore +0 -2
- package/dist/m365/pa/commands/solution/solution-init/assets/template_solutionprojecttype.cdsproj +0 -44
- package/dist/m365/pa/commands/solution/solution-init/solution-init-variables.js +0 -2
- package/dist/m365/pa/commands/solution/solution-init.js +0 -126
- package/dist/m365/pa/commands/solution/solution-reference-add.js +0 -88
- package/dist/m365/pa/template-instantiator.js +0 -57
- package/docs/docs/cmd/pa/pcf/pcf-init.mdx +0 -56
- package/docs/docs/cmd/pa/solution/solution-init.mdx +0 -46
- package/docs/docs/cmd/pa/solution/solution-reference-add.mdx +0 -42
|
@@ -29,69 +29,69 @@ class SpoSiteRemoveCommand extends SpoCommand {
|
|
|
29
29
|
__classPrivateFieldGet(this, _SpoSiteRemoveCommand_instances, "m", _SpoSiteRemoveCommand_initValidators).call(this);
|
|
30
30
|
}
|
|
31
31
|
async commandAction(logger, args) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
if (args.options.force) {
|
|
33
|
+
await this.removeSite(logger, args);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const result = await Cli.prompt({
|
|
37
|
+
type: 'confirm',
|
|
38
|
+
name: 'continue',
|
|
39
|
+
default: false,
|
|
40
|
+
message: `Are you sure you want to remove the site ${args.options.url}?`
|
|
41
|
+
});
|
|
42
|
+
if (result.continue) {
|
|
43
|
+
await this.removeSite(logger, args);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async removeSite(logger, args) {
|
|
48
|
+
try {
|
|
49
|
+
if (args.options.fromRecycleBin) {
|
|
50
|
+
await this.deleteSiteWithoutGroup(logger, args);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
const groupId = await this.getSiteGroupId(args.options.url, logger);
|
|
54
|
+
if (groupId === '00000000-0000-0000-0000-000000000000') {
|
|
55
|
+
if (this.debug) {
|
|
56
|
+
await logger.logToStderr('Site is not groupified. Going ahead with the conventional site deletion options');
|
|
57
|
+
}
|
|
35
58
|
await this.deleteSiteWithoutGroup(logger, args);
|
|
36
59
|
}
|
|
37
60
|
else {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (this.debug) {
|
|
41
|
-
await logger.logToStderr('Site is not groupified. Going ahead with the conventional site deletion options');
|
|
42
|
-
}
|
|
43
|
-
await this.deleteSiteWithoutGroup(logger, args);
|
|
61
|
+
if (this.debug) {
|
|
62
|
+
await logger.logToStderr(`Site attached to group ${groupId}. Initiating group delete operation via Graph API`);
|
|
44
63
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
64
|
+
try {
|
|
65
|
+
const group = await aadGroup.getGroupById(groupId);
|
|
66
|
+
if (args.options.skipRecycleBin || args.options.wait) {
|
|
67
|
+
await logger.logToStderr(chalk.yellow(`Entered site is a groupified site. Hence, the parameters 'skipRecycleBin' and 'wait' will not be applicable.`));
|
|
48
68
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
await
|
|
55
|
-
await this.deleteSite(args.options.url, args.options.wait, logger);
|
|
69
|
+
await this.deleteGroup(group.id, logger);
|
|
70
|
+
await this.deleteSite(args.options.url, args.options.wait, logger);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
if (this.verbose) {
|
|
74
|
+
await logger.logToStderr(`Site group doesn't exist. Searching in the Microsoft 365 deleted groups.`);
|
|
56
75
|
}
|
|
57
|
-
|
|
76
|
+
const deletedGroups = await this.isSiteGroupDeleted(groupId);
|
|
77
|
+
if (deletedGroups.value.length === 0) {
|
|
58
78
|
if (this.verbose) {
|
|
59
|
-
await logger.logToStderr(
|
|
60
|
-
}
|
|
61
|
-
const deletedGroups = await this.isSiteGroupDeleted(groupId);
|
|
62
|
-
if (deletedGroups.value.length === 0) {
|
|
63
|
-
if (this.verbose) {
|
|
64
|
-
await logger.logToStderr("Site group doesn't exist anymore. Deleting the site.");
|
|
65
|
-
}
|
|
66
|
-
if (args.options.wait) {
|
|
67
|
-
await logger.logToStderr(chalk.yellow(`Entered site is a groupified site. Hence, the parameter 'wait' will not be applicable.`));
|
|
68
|
-
}
|
|
69
|
-
await this.deleteOrphanedSite(logger, args.options.url);
|
|
79
|
+
await logger.logToStderr("Site group doesn't exist anymore. Deleting the site.");
|
|
70
80
|
}
|
|
71
|
-
|
|
72
|
-
|
|
81
|
+
if (args.options.wait) {
|
|
82
|
+
await logger.logToStderr(chalk.yellow(`Entered site is a groupified site. Hence, the parameter 'wait' will not be applicable.`));
|
|
73
83
|
}
|
|
84
|
+
await this.deleteOrphanedSite(logger, args.options.url);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw `Site group still exists in the deleted groups. The site won't be removed.`;
|
|
74
88
|
}
|
|
75
89
|
}
|
|
76
90
|
}
|
|
77
91
|
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
this.handleRejectedPromise(err);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
if (args.options.force) {
|
|
83
|
-
await removeSite();
|
|
84
92
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
type: 'confirm',
|
|
88
|
-
name: 'continue',
|
|
89
|
-
default: false,
|
|
90
|
-
message: `Are you sure you want to remove the site ${args.options.url}?`
|
|
91
|
-
});
|
|
92
|
-
if (result.continue) {
|
|
93
|
-
await removeSite();
|
|
94
|
-
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
this.handleRejectedPromise(err);
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
isSiteGroupDeleted(groupId) {
|
|
@@ -104,175 +104,131 @@ class SpoSiteRemoveCommand extends SpoCommand {
|
|
|
104
104
|
};
|
|
105
105
|
return request.get(requestOptions);
|
|
106
106
|
}
|
|
107
|
-
deleteOrphanedSite(logger, url) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
};
|
|
119
|
-
return request.post(requestOptions);
|
|
120
|
-
});
|
|
107
|
+
async deleteOrphanedSite(logger, url) {
|
|
108
|
+
const spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
|
|
109
|
+
const requestOptions = {
|
|
110
|
+
url: `${spoAdminUrl}/_api/GroupSiteManager/Delete?siteUrl='${url}'`,
|
|
111
|
+
headers: {
|
|
112
|
+
'content-type': 'application/json;odata=nometadata',
|
|
113
|
+
accept: 'application/json;odata=nometadata'
|
|
114
|
+
},
|
|
115
|
+
responseType: 'json'
|
|
116
|
+
};
|
|
117
|
+
return await request.post(requestOptions);
|
|
121
118
|
}
|
|
122
|
-
deleteSiteWithoutGroup(logger, args) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
this.
|
|
127
|
-
|
|
128
|
-
})
|
|
129
|
-
.then(async (res) => {
|
|
130
|
-
this.context = res;
|
|
131
|
-
if (args.options.fromRecycleBin) {
|
|
132
|
-
if (this.verbose) {
|
|
133
|
-
await logger.logToStderr(`Deleting site from recycle bin ${args.options.url}...`);
|
|
134
|
-
}
|
|
135
|
-
return this.deleteSiteFromTheRecycleBin(args.options.url, args.options.wait, logger);
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
return this.deleteSite(args.options.url, args.options.wait, logger);
|
|
139
|
-
}
|
|
140
|
-
})
|
|
141
|
-
.then(async () => {
|
|
142
|
-
if (args.options.skipRecycleBin) {
|
|
143
|
-
if (this.verbose) {
|
|
144
|
-
await logger.logToStderr(`Also deleting site from tenant recycle bin ${args.options.url}...`);
|
|
145
|
-
}
|
|
146
|
-
return this.deleteSiteFromTheRecycleBin(args.options.url, args.options.wait, logger);
|
|
119
|
+
async deleteSiteWithoutGroup(logger, args) {
|
|
120
|
+
this.spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
|
|
121
|
+
this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
|
|
122
|
+
if (args.options.fromRecycleBin) {
|
|
123
|
+
if (this.verbose) {
|
|
124
|
+
await logger.logToStderr(`Deleting site from recycle bin ${args.options.url}...`);
|
|
147
125
|
}
|
|
148
|
-
|
|
149
|
-
|
|
126
|
+
await this.deleteSiteFromTheRecycleBin(args.options.url, args.options.wait, logger);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
await this.deleteSite(args.options.url, args.options.wait, logger);
|
|
130
|
+
}
|
|
131
|
+
if (args.options.skipRecycleBin) {
|
|
132
|
+
if (this.verbose) {
|
|
133
|
+
await logger.logToStderr(`Also deleting site from tenant recycle bin ${args.options.url}...`);
|
|
150
134
|
}
|
|
151
|
-
|
|
135
|
+
await this.deleteSiteFromTheRecycleBin(args.options.url, args.options.wait, logger);
|
|
136
|
+
}
|
|
152
137
|
}
|
|
153
|
-
deleteSite(url, wait, logger) {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
reject,
|
|
190
|
-
logger,
|
|
191
|
-
currentContext: this.context,
|
|
192
|
-
debug: this.debug,
|
|
193
|
-
verbose: this.verbose
|
|
194
|
-
});
|
|
195
|
-
}, operation.PollingInterval);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
138
|
+
async deleteSite(url, wait, logger) {
|
|
139
|
+
this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
|
|
140
|
+
if (this.verbose) {
|
|
141
|
+
await logger.logToStderr(`Deleting site ${url}...`);
|
|
142
|
+
}
|
|
143
|
+
const requestOptions = {
|
|
144
|
+
url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
145
|
+
headers: {
|
|
146
|
+
'X-RequestDigest': this.context.FormDigestValue
|
|
147
|
+
},
|
|
148
|
+
data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="55" ObjectPathId="54"/><ObjectPath Id="57" ObjectPathId="56"/><Query Id="58" ObjectPathId="54"><Query SelectAllProperties="true"><Properties/></Query></Query><Query Id="59" ObjectPathId="56"><Query SelectAllProperties="false"><Properties><Property Name="IsComplete" ScalarProperty="true"/><Property Name="PollingInterval" ScalarProperty="true"/></Properties></Query></Query></Actions><ObjectPaths><Constructor Id="54" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}"/><Method Id="56" ParentId="54" Name="RemoveSite"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method></ObjectPaths></Request>`
|
|
149
|
+
};
|
|
150
|
+
const response = await request.post(requestOptions);
|
|
151
|
+
const json = JSON.parse(response);
|
|
152
|
+
const responseContent = json[0];
|
|
153
|
+
if (responseContent.ErrorInfo) {
|
|
154
|
+
throw responseContent.ErrorInfo.ErrorMessage;
|
|
155
|
+
}
|
|
156
|
+
const operation = json[json.length - 1];
|
|
157
|
+
const isComplete = operation.IsComplete;
|
|
158
|
+
if (!wait || isComplete) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
await new Promise((resolve, reject) => {
|
|
162
|
+
setTimeout(() => {
|
|
163
|
+
spo.waitUntilFinished({
|
|
164
|
+
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
165
|
+
siteUrl: this.spoAdminUrl,
|
|
166
|
+
resolve,
|
|
167
|
+
reject,
|
|
168
|
+
logger,
|
|
169
|
+
currentContext: this.context,
|
|
170
|
+
debug: this.debug,
|
|
171
|
+
verbose: this.verbose
|
|
172
|
+
});
|
|
173
|
+
}, operation.PollingInterval);
|
|
198
174
|
});
|
|
199
175
|
}
|
|
200
|
-
deleteSiteFromTheRecycleBin(url, wait, logger) {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.context
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
reject,
|
|
234
|
-
logger,
|
|
235
|
-
currentContext: this.context,
|
|
236
|
-
debug: this.debug,
|
|
237
|
-
verbose: this.verbose
|
|
238
|
-
});
|
|
239
|
-
}, operation.PollingInterval);
|
|
240
|
-
}
|
|
241
|
-
});
|
|
176
|
+
async deleteSiteFromTheRecycleBin(url, wait, logger) {
|
|
177
|
+
this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
|
|
178
|
+
const requestOptions = {
|
|
179
|
+
url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
180
|
+
headers: {
|
|
181
|
+
'X-RequestDigest': this.context.FormDigestValue
|
|
182
|
+
},
|
|
183
|
+
data: `<Request AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}" xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009"><Actions><ObjectPath Id="185" ObjectPathId="184" /><Query Id="186" ObjectPathId="184"><Query SelectAllProperties="false"><Properties><Property Name="IsComplete" ScalarProperty="true" /><Property Name="PollingInterval" ScalarProperty="true" /></Properties></Query></Query></Actions><ObjectPaths><Method Id="184" ParentId="175" Name="RemoveDeletedSite"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method><Constructor Id="175" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /></ObjectPaths></Request>`
|
|
184
|
+
};
|
|
185
|
+
const response = await request.post(requestOptions);
|
|
186
|
+
const json = JSON.parse(response);
|
|
187
|
+
const responseContent = json[0];
|
|
188
|
+
if (responseContent.ErrorInfo) {
|
|
189
|
+
throw responseContent.ErrorInfo.ErrorMessage;
|
|
190
|
+
}
|
|
191
|
+
const operation = json[json.length - 1];
|
|
192
|
+
const isComplete = operation.IsComplete;
|
|
193
|
+
if (!wait || isComplete) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
await new Promise((resolve, reject) => {
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
spo.waitUntilFinished({
|
|
199
|
+
operationId: JSON.stringify(operation._ObjectIdentity_),
|
|
200
|
+
siteUrl: this.spoAdminUrl,
|
|
201
|
+
resolve,
|
|
202
|
+
reject,
|
|
203
|
+
logger,
|
|
204
|
+
currentContext: this.context,
|
|
205
|
+
debug: this.debug,
|
|
206
|
+
verbose: this.verbose
|
|
207
|
+
});
|
|
208
|
+
}, operation.PollingInterval);
|
|
242
209
|
});
|
|
243
210
|
}
|
|
244
|
-
getSiteGroupId(url, logger) {
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
.then((res) => {
|
|
266
|
-
const json = JSON.parse(res);
|
|
267
|
-
const response = json[0];
|
|
268
|
-
if (response.ErrorInfo) {
|
|
269
|
-
return Promise.reject(response.ErrorInfo.ErrorMessage);
|
|
270
|
-
}
|
|
271
|
-
else {
|
|
272
|
-
const groupId = json[json.length - 1].GroupId.replace('/Guid(', '').replace(')/', '');
|
|
273
|
-
return Promise.resolve(groupId);
|
|
274
|
-
}
|
|
275
|
-
});
|
|
211
|
+
async getSiteGroupId(url, logger) {
|
|
212
|
+
this.spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
|
|
213
|
+
this.context = await spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
|
|
214
|
+
if (this.verbose) {
|
|
215
|
+
await logger.logToStderr(`Retrieving the group Id of the site ${url}`);
|
|
216
|
+
}
|
|
217
|
+
const requestOptions = {
|
|
218
|
+
url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
|
|
219
|
+
headers: {
|
|
220
|
+
'X-RequestDigest': this.context.FormDigestValue
|
|
221
|
+
},
|
|
222
|
+
data: `<Request xmlns="http://schemas.microsoft.com/sharepoint/clientquery/2009" AddExpandoFieldTypeSuffix="true" SchemaVersion="15.0.0.0" LibraryVersion="16.0.0.0" ApplicationName="${config.applicationName}"><Actions><ObjectPath Id="4" ObjectPathId="3"/><Query Id="5" ObjectPathId="3"><Query SelectAllProperties="false"><Properties><Property Name="GroupId" ScalarProperty="true"/></Properties></Query></Query></Actions><ObjectPaths><Constructor Id="1" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}"/><Method Id="3" ParentId="1" Name="GetSitePropertiesByUrl"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method></ObjectPaths></Request>`
|
|
223
|
+
};
|
|
224
|
+
const response = await request.post(requestOptions);
|
|
225
|
+
const json = JSON.parse(response);
|
|
226
|
+
const responseContent = json[0];
|
|
227
|
+
if (responseContent.ErrorInfo) {
|
|
228
|
+
throw responseContent.ErrorInfo.ErrorMessage;
|
|
229
|
+
}
|
|
230
|
+
const groupId = json[json.length - 1].GroupId.replace('/Guid(', '').replace(')/', '');
|
|
231
|
+
return groupId;
|
|
276
232
|
}
|
|
277
233
|
async deleteGroup(groupId, logger) {
|
|
278
234
|
if (this.verbose) {
|