@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.
Files changed (139) hide show
  1. package/.eslintrc.cjs +0 -2
  2. package/dist/GlobalOptions.js +1 -7
  3. package/dist/cli/Cli.js +19 -2
  4. package/dist/m365/aad/commands/app/app-add.js +8 -8
  5. package/dist/m365/aad/commands/app/app-role-add.js +5 -5
  6. package/dist/m365/aad/commands/app/app-set.js +5 -5
  7. package/dist/m365/aad/commands/policy/policy-list.js +5 -5
  8. package/dist/m365/cli/commands/cli-issue.js +5 -5
  9. package/dist/m365/cli/commands/config/config-get.js +5 -5
  10. package/dist/m365/cli/commands/config/config-reset.js +5 -5
  11. package/dist/m365/cli/commands/config/config-set.js +5 -5
  12. package/dist/m365/commands/login.js +5 -5
  13. package/dist/m365/commands/request.js +1 -1
  14. package/dist/m365/flow/commands/owner/owner-ensure.js +5 -5
  15. package/dist/m365/pa/commands/app/app-owner-set.js +5 -5
  16. package/dist/m365/pa/commands/app/app-permission-ensure.js +5 -5
  17. package/dist/m365/pa/commands.js +1 -4
  18. package/dist/m365/planner/commands/task/task-add.js +17 -11
  19. package/dist/m365/planner/commands/task/task-get.js +35 -25
  20. package/dist/m365/planner/commands/task/task-list.js +26 -19
  21. package/dist/m365/planner/commands/task/task-remove.js +39 -34
  22. package/dist/m365/planner/commands/task/task-set.js +35 -23
  23. package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +14 -14
  24. package/dist/m365/spfx/commands/package/package-generate.js +15 -15
  25. package/dist/m365/spfx/commands/project/DeployWorkflow.js +55 -0
  26. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.18.0-beta.1.js → doctor-1.18.0-beta.5.js} +1 -1
  27. package/dist/m365/spfx/commands/project/project-doctor.js +9 -9
  28. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +157 -0
  29. package/dist/m365/spfx/commands/project/project-github-workflow-model.js +2 -0
  30. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
  31. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.18.0-beta.1.js → upgrade-1.18.0-beta.5.js} +26 -26
  32. package/dist/m365/spfx/commands/project/project-upgrade.js +14 -14
  33. package/dist/m365/spfx/commands/spfx-doctor.js +3 -3
  34. package/dist/m365/spfx/commands.js +1 -0
  35. package/dist/m365/spo/commands/app/SpoAppBaseCommand.js +27 -26
  36. package/dist/m365/spo/commands/app/app-add.js +9 -9
  37. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +5 -5
  38. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-list.js +5 -5
  39. package/dist/m365/spo/commands/commandset/commandset-add.js +11 -11
  40. package/dist/m365/spo/commands/commandset/commandset-get.js +8 -8
  41. package/dist/m365/spo/commands/commandset/commandset-list.js +5 -5
  42. package/dist/m365/spo/commands/commandset/commandset-remove.js +5 -5
  43. package/dist/m365/spo/commands/commandset/commandset-set.js +11 -11
  44. package/dist/m365/spo/commands/file/file-move.js +73 -97
  45. package/dist/m365/spo/commands/file/file-sharinglink-add.js +8 -8
  46. package/dist/m365/spo/commands/file/file-sharinglink-list.js +5 -5
  47. package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
  48. package/dist/m365/spo/commands/folder/folder-move.js +89 -47
  49. package/dist/m365/spo/commands/list/list-add.js +4 -4
  50. package/dist/m365/spo/commands/list/list-set.js +4 -4
  51. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +34 -5
  52. package/dist/m365/spo/commands/page/clientsidepages.js +1 -81
  53. package/dist/m365/spo/commands/propertybag/propertybag-base.js +63 -59
  54. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +28 -31
  55. package/dist/m365/spo/commands/serviceprincipal/serviceprincipal-set.js +30 -32
  56. package/dist/m365/spo/commands/site/FlowsPolicy.js +7 -0
  57. package/dist/m365/spo/commands/site/site-add.js +114 -161
  58. package/dist/m365/spo/commands/site/site-apppermission-add.js +15 -18
  59. package/dist/m365/spo/commands/site/site-apppermission-remove.js +34 -38
  60. package/dist/m365/spo/commands/site/site-apppermission-set.js +11 -14
  61. package/dist/m365/spo/commands/site/site-ensure.js +14 -67
  62. package/dist/m365/spo/commands/site/site-hubsite-disconnect.js +22 -22
  63. package/dist/m365/spo/commands/site/site-list.js +27 -43
  64. package/dist/m365/spo/commands/site/site-recyclebinitem-list.js +6 -6
  65. package/dist/m365/spo/commands/site/site-remove.js +166 -210
  66. package/dist/m365/spo/commands/site/site-set.js +177 -198
  67. package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +8 -8
  68. package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +8 -8
  69. package/dist/m365/spo/commands/tenant/tenant-settings-set.js +4 -4
  70. package/dist/m365/spo/commands/theme/theme-remove.js +24 -24
  71. package/dist/m365/spo/commands/theme/theme-set.js +0 -1
  72. package/dist/m365/spo/commands/user/user-remove.js +27 -27
  73. package/dist/m365/spo/commands/web/web-reindex.js +35 -42
  74. package/dist/m365/spo/commands/web/web-remove.js +21 -21
  75. package/dist/m365/spo/commands/web/web-roleassignment-add.js +16 -31
  76. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +33 -44
  77. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +18 -18
  78. package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +19 -19
  79. package/dist/m365/spo/commands/web/web-set.js +5 -5
  80. package/dist/m365/teams/commands/app/app-list.js +5 -5
  81. package/dist/m365/teams/commands/chat/chat-member-add.js +5 -5
  82. package/dist/m365/teams/commands/funsettings/funsettings-set.js +4 -4
  83. package/dist/m365/teams/commands/guestsettings/guestsettings-set.js +4 -4
  84. package/dist/m365/teams/commands/membersettings/membersettings-set.js +4 -4
  85. package/dist/m365/teams/commands/messagingsettings/messagingsettings-set.js +5 -5
  86. package/dist/m365/teams/commands/team/team-set.js +3 -3
  87. package/dist/m365/todo/commands/task/task-add.js +6 -6
  88. package/dist/m365/yammer/commands/message/message-like-set.js +27 -28
  89. package/dist/m365/yammer/commands/message/message-list.js +67 -86
  90. package/dist/m365/yammer/commands/message/message-remove.js +18 -18
  91. package/dist/m365/yammer/commands/yammer-search.js +58 -74
  92. package/dist/utils/aadGroup.js +18 -0
  93. package/dist/utils/fsUtil.js +5 -0
  94. package/dist/utils/spo.js +594 -53
  95. package/dist/utils/validation.js +0 -3
  96. package/docs/docs/cmd/planner/task/task-add.mdx +22 -7
  97. package/docs/docs/cmd/planner/task/task-get.mdx +13 -4
  98. package/docs/docs/cmd/planner/task/task-list.mdx +22 -7
  99. package/docs/docs/cmd/planner/task/task-remove.mdx +25 -8
  100. package/docs/docs/cmd/planner/task/task-set.mdx +22 -7
  101. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +94 -0
  102. package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
  103. package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
  104. package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
  105. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +14 -1
  106. package/docs/docs/cmd/spo/site/site-ensure.mdx +1 -1
  107. package/docs/docs/cmd/spo/site/site-list.mdx +3 -78
  108. package/npm-shrinkwrap.json +240 -1417
  109. package/package.json +6 -7
  110. package/dist/m365/pa/cds-project-mutator.js +0 -91
  111. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/generated/ManifestTypes.d.ts +0 -11
  112. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_ControlManifest.Input.xml +0 -31
  113. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/dataset-template/template_index.ts +0 -51
  114. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/generated/ManifestTypes.d.ts +0 -12
  115. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_ControlManifest.Input.xml +0 -37
  116. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/field-template/template_index.ts +0 -48
  117. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/index.ts +0 -0
  118. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_ControlManifest.Input.xml +0 -31
  119. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-dataset-template/template_index.tsx +0 -58
  120. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_ControlManifest.Input.xml +0 -37
  121. package/dist/m365/pa/commands/pcf/pcf-init/assets/control/virtual-field-template/template_index.tsx +0 -55
  122. package/dist/m365/pa/commands/pcf/pcf-init/assets/package.json +0 -19
  123. package/dist/m365/pa/commands/pcf/pcf-init/assets/pcfconfig.json +0 -3
  124. package/dist/m365/pa/commands/pcf/pcf-init/assets/template_.gitignore +0 -14
  125. package/dist/m365/pa/commands/pcf/pcf-init/assets/template_pcfprojecttype.pcfproj +0 -45
  126. package/dist/m365/pa/commands/pcf/pcf-init/pcf-init-variables.js +0 -2
  127. package/dist/m365/pa/commands/pcf/pcf-init.js +0 -120
  128. package/dist/m365/pa/commands/solution/solution-init/assets/Other/Customizations.xml +0 -18
  129. package/dist/m365/pa/commands/solution/solution-init/assets/Other/Relationships.xml +0 -2
  130. package/dist/m365/pa/commands/solution/solution-init/assets/Other/template_Solution.xml +0 -94
  131. package/dist/m365/pa/commands/solution/solution-init/assets/template_.gitignore +0 -2
  132. package/dist/m365/pa/commands/solution/solution-init/assets/template_solutionprojecttype.cdsproj +0 -44
  133. package/dist/m365/pa/commands/solution/solution-init/solution-init-variables.js +0 -2
  134. package/dist/m365/pa/commands/solution/solution-init.js +0 -126
  135. package/dist/m365/pa/commands/solution/solution-reference-add.js +0 -88
  136. package/dist/m365/pa/template-instantiator.js +0 -57
  137. package/docs/docs/cmd/pa/pcf/pcf-init.mdx +0 -56
  138. package/docs/docs/cmd/pa/solution/solution-init.mdx +0 -46
  139. 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
- const removeSite = async () => {
33
- try {
34
- if (args.options.fromRecycleBin) {
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
- const groupId = await this.getSiteGroupId(args.options.url, logger);
39
- if (groupId === '00000000-0000-0000-0000-000000000000') {
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
- else {
46
- if (this.debug) {
47
- await logger.logToStderr(`Site attached to group ${groupId}. Initiating group delete operation via Graph API`);
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
- try {
50
- const group = await aadGroup.getGroupById(groupId);
51
- if (args.options.skipRecycleBin || args.options.wait) {
52
- await logger.logToStderr(chalk.yellow(`Entered site is a groupified site. Hence, the parameters 'skipRecycleBin' and 'wait' will not be applicable.`));
53
- }
54
- await this.deleteGroup(group.id, logger);
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
- catch (err) {
76
+ const deletedGroups = await this.isSiteGroupDeleted(groupId);
77
+ if (deletedGroups.value.length === 0) {
58
78
  if (this.verbose) {
59
- await logger.logToStderr(`Site group doesn't exist. Searching in the Microsoft 365 deleted groups.`);
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
- else {
72
- throw `Site group still exists in the deleted groups. The site won't be removed.`;
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
- else {
86
- const result = await Cli.prompt({
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
- return spo
109
- .getSpoAdminUrl(logger, this.debug)
110
- .then((spoAdminUrl) => {
111
- const requestOptions = {
112
- url: `${spoAdminUrl}/_api/GroupSiteManager/Delete?siteUrl='${url}'`,
113
- headers: {
114
- 'content-type': 'application/json;odata=nometadata',
115
- accept: 'application/json;odata=nometadata'
116
- },
117
- responseType: 'json'
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
- return spo
124
- .getSpoAdminUrl(logger, this.debug)
125
- .then((spoAdminUrl) => {
126
- this.spoAdminUrl = spoAdminUrl;
127
- return spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
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
- else {
149
- return Promise.resolve();
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
- return new Promise((resolve, reject) => {
155
- spo
156
- .ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug)
157
- .then(async (res) => {
158
- this.context = res;
159
- if (this.verbose) {
160
- await logger.logToStderr(`Deleting site ${url}...`);
161
- }
162
- const requestOptions = {
163
- url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
164
- headers: {
165
- 'X-RequestDigest': this.context.FormDigestValue
166
- },
167
- 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>`
168
- };
169
- return request.post(requestOptions);
170
- })
171
- .then((res) => {
172
- const json = JSON.parse(res);
173
- const response = json[0];
174
- if (response.ErrorInfo) {
175
- reject(response.ErrorInfo.ErrorMessage);
176
- }
177
- else {
178
- const operation = json[json.length - 1];
179
- const isComplete = operation.IsComplete;
180
- if (!wait || isComplete) {
181
- resolve();
182
- return;
183
- }
184
- setTimeout(() => {
185
- spo.waitUntilFinished({
186
- operationId: JSON.stringify(operation._ObjectIdentity_),
187
- siteUrl: this.spoAdminUrl,
188
- resolve,
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
- return new Promise((resolve, reject) => {
202
- spo
203
- .ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug)
204
- .then((res) => {
205
- this.context = res;
206
- const requestOptions = {
207
- url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
208
- headers: {
209
- 'X-RequestDigest': this.context.FormDigestValue
210
- },
211
- 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>`
212
- };
213
- return request.post(requestOptions);
214
- })
215
- .then((res) => {
216
- const json = JSON.parse(res);
217
- const response = json[0];
218
- if (response.ErrorInfo) {
219
- reject(response.ErrorInfo.ErrorMessage);
220
- }
221
- else {
222
- const operation = json[json.length - 1];
223
- const isComplete = operation.IsComplete;
224
- if (!wait || isComplete) {
225
- resolve();
226
- return;
227
- }
228
- setTimeout(() => {
229
- spo.waitUntilFinished({
230
- operationId: JSON.stringify(operation._ObjectIdentity_),
231
- siteUrl: this.spoAdminUrl,
232
- resolve,
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
- return spo
246
- .getSpoAdminUrl(logger, this.debug)
247
- .then((_spoAdminUrl) => {
248
- this.spoAdminUrl = _spoAdminUrl;
249
- return spo.ensureFormDigest(this.spoAdminUrl, logger, this.context, this.debug);
250
- })
251
- .then(async (res) => {
252
- this.context = res;
253
- if (this.verbose) {
254
- await logger.logToStderr(`Retrieving the group Id of the site ${url}`);
255
- }
256
- const requestOptions = {
257
- url: `${this.spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
258
- headers: {
259
- 'X-RequestDigest': this.context.FormDigestValue
260
- },
261
- 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>`
262
- };
263
- return request.post(requestOptions);
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) {