@pnp/cli-microsoft365 8.1.0-beta.a4eba60 → 9.0.0-beta.0d94b15

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 (83) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/cli/cli.js +11 -6
  4. package/dist/config.js +1 -1
  5. package/dist/m365/app/commands/permission/permission-add.js +9 -9
  6. package/dist/m365/cli/commands/cli-consent.js +3 -7
  7. package/dist/m365/commands/status.js +2 -2
  8. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +13 -13
  9. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +18 -18
  10. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -1
  11. package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-remove.js +123 -0
  12. package/dist/m365/entra/commands/group/group-set.js +256 -0
  13. package/dist/m365/entra/commands/group/group-user-list.js +4 -4
  14. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +4 -4
  15. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +3 -3
  16. package/dist/m365/entra/commands/m365group/m365group-user-list.js +6 -9
  17. package/dist/m365/entra/commands.js +3 -0
  18. package/dist/m365/flow/commands/flow-get.js +1 -1
  19. package/dist/m365/outlook/commands/message/message-get.js +11 -11
  20. package/dist/m365/pa/commands/app/app-export.js +13 -7
  21. package/dist/m365/spfx/commands/project/DeployWorkflow.js +1 -1
  22. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +1 -10
  23. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +0 -1
  24. package/dist/m365/spo/commands/file/file-copy.js +55 -34
  25. package/dist/m365/spo/commands/folder/folder-set.js +0 -4
  26. package/dist/m365/spo/commands/list/list-list.js +1 -4
  27. package/dist/m365/spo/commands/site/site-appcatalog-remove.js +48 -24
  28. package/dist/m365/spo/commands/site/site-remove.js +1 -7
  29. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +2 -22
  30. package/dist/m365/spo/commands.js +0 -1
  31. package/dist/m365/teams/commands/message/message-restore.js +106 -0
  32. package/dist/m365/teams/commands.js +1 -0
  33. package/dist/m365/viva/commands/engage/engage-group-list.js +0 -5
  34. package/dist/m365/viva/commands/engage/engage-group-user-add.js +0 -5
  35. package/dist/m365/viva/commands/engage/engage-group-user-remove.js +0 -5
  36. package/dist/m365/viva/commands/engage/engage-message-add.js +0 -5
  37. package/dist/m365/viva/commands/engage/engage-message-get.js +0 -5
  38. package/dist/m365/viva/commands/engage/engage-message-like-set.js +0 -5
  39. package/dist/m365/viva/commands/engage/engage-message-list.js +0 -5
  40. package/dist/m365/viva/commands/engage/engage-message-remove.js +0 -5
  41. package/dist/m365/viva/commands/engage/engage-network-list.js +0 -5
  42. package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +0 -8
  43. package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +0 -8
  44. package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +0 -8
  45. package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +0 -8
  46. package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +0 -8
  47. package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +0 -8
  48. package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +0 -8
  49. package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +0 -8
  50. package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +0 -8
  51. package/dist/m365/viva/commands/engage/engage-search.js +0 -5
  52. package/dist/m365/viva/commands/engage/engage-user-get.js +0 -5
  53. package/dist/m365/viva/commands/engage/engage-user-list.js +0 -5
  54. package/dist/utils/spo.js +74 -0
  55. package/docs/docs/cmd/app/permission/permission-add.mdx +5 -5
  56. package/docs/docs/cmd/cli/cli-consent.mdx +1 -1
  57. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +12 -12
  58. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +14 -14
  59. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +5 -5
  60. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-remove.mdx +65 -0
  61. package/docs/docs/cmd/entra/group/group-add.mdx +0 -4
  62. package/docs/docs/cmd/entra/group/group-set.mdx +89 -0
  63. package/docs/docs/cmd/entra/group/group-user-list.mdx +7 -7
  64. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +5 -5
  65. package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +3 -3
  66. package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +1 -1
  67. package/docs/docs/cmd/flow/flow-get.mdx +149 -283
  68. package/docs/docs/cmd/outlook/message/message-get.mdx +5 -5
  69. package/docs/docs/cmd/pa/app/app-export.mdx +15 -9
  70. package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +11 -12
  71. package/docs/docs/cmd/spo/app/app-uninstall.mdx +1 -1
  72. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-get.mdx +6 -5
  73. package/docs/docs/cmd/spo/file/file-copy.mdx +119 -12
  74. package/docs/docs/cmd/spo/folder/folder-set.mdx +0 -6
  75. package/docs/docs/cmd/spo/list/list-list.mdx +5 -7
  76. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +11 -2
  77. package/docs/docs/cmd/spo/site/site-remove.mdx +0 -3
  78. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-restore.mdx +2 -49
  79. package/docs/docs/cmd/teams/message/message-remove.mdx +2 -1
  80. package/docs/docs/cmd/teams/message/message-restore.mdx +62 -0
  81. package/npm-shrinkwrap.json +574 -480
  82. package/package.json +22 -23
  83. package/dist/m365/viva/commands/engage/yammerCommands.js +0 -25
@@ -5,6 +5,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _SpoFileCopyCommand_instances, _SpoFileCopyCommand_initTelemetry, _SpoFileCopyCommand_initOptions, _SpoFileCopyCommand_initValidators, _SpoFileCopyCommand_initOptionSets, _SpoFileCopyCommand_initTypes;
7
7
  import request from '../../../../request.js';
8
+ import { CreateCopyJobsNameConflictBehavior, spo } from '../../../../utils/spo.js';
8
9
  import { urlUtil } from '../../../../utils/urlUtil.js';
9
10
  import { validation } from '../../../../utils/validation.js';
10
11
  import SpoCommand from '../../../base/SpoCommand.js';
@@ -30,39 +31,43 @@ class SpoFileCopyCommand extends SpoCommand {
30
31
  try {
31
32
  const sourceServerRelativePath = await this.getSourcePath(logger, args.options);
32
33
  const sourcePath = this.getAbsoluteUrl(args.options.webUrl, sourceServerRelativePath);
33
- let destinationPath = this.getAbsoluteUrl(args.options.webUrl, args.options.targetUrl) + '/';
34
- if (args.options.newName) {
35
- destinationPath += args.options.newName;
34
+ const destinationPath = this.getAbsoluteUrl(args.options.webUrl, args.options.targetUrl);
35
+ if (this.verbose) {
36
+ await logger.logToStderr(`Copying file '${sourceServerRelativePath}' to '${args.options.targetUrl}'...`);
37
+ }
38
+ let newName = args.options.newName;
39
+ // Add original file extension if not provided
40
+ if (newName && !newName.includes('.')) {
41
+ newName += sourceServerRelativePath.substring(sourceServerRelativePath.lastIndexOf('.'));
36
42
  }
37
- else {
38
- // Keep the original file name
39
- destinationPath += sourcePath.substring(sourcePath.lastIndexOf('/') + 1);
43
+ const copyJobResponse = await spo.createCopyJob(args.options.webUrl, sourcePath, destinationPath, {
44
+ nameConflictBehavior: this.getNameConflictBehaviorValue(args.options.nameConflictBehavior),
45
+ bypassSharedLock: !!args.options.bypassSharedLock,
46
+ ignoreVersionHistory: !!args.options.ignoreVersionHistory,
47
+ newName: newName
48
+ });
49
+ if (args.options.skipWait) {
50
+ return;
40
51
  }
41
52
  if (this.verbose) {
42
- await logger.logToStderr(`Copying file '${sourcePath}' to '${destinationPath}'...`);
53
+ await logger.logToStderr('Waiting for the copy job to complete...');
43
54
  }
55
+ const copyJobResult = await spo.getCopyJobResult(args.options.webUrl, copyJobResponse);
56
+ if (this.verbose) {
57
+ await logger.logToStderr('Getting information about the destination file...');
58
+ }
59
+ // Get destination file data
60
+ const siteRelativeDestinationFolder = '/' + copyJobResult.TargetObjectSiteRelativeUrl.substring(0, copyJobResult.TargetObjectSiteRelativeUrl.lastIndexOf('/'));
61
+ const absoluteWebUrl = destinationPath.substring(0, destinationPath.toLowerCase().lastIndexOf(siteRelativeDestinationFolder.toLowerCase()));
44
62
  const requestOptions = {
45
- url: `${args.options.webUrl}/_api/SP.MoveCopyUtil.CopyFileByPath`,
63
+ url: `${absoluteWebUrl}/_api/Web/GetFileById('${copyJobResult.TargetObjectUniqueId}')`,
46
64
  headers: {
47
65
  accept: 'application/json;odata=nometadata'
48
66
  },
49
- responseType: 'json',
50
- data: {
51
- srcPath: {
52
- DecodedUrl: sourcePath
53
- },
54
- destPath: {
55
- DecodedUrl: destinationPath
56
- },
57
- overwrite: args.options.nameConflictBehavior === 'replace',
58
- options: {
59
- KeepBoth: args.options.nameConflictBehavior === 'rename',
60
- ResetAuthorAndCreatedOnCopy: !!args.options.resetAuthorAndCreated,
61
- ShouldBypassSharedLocks: !!args.options.bypassSharedLock
62
- }
63
- }
67
+ responseType: 'json'
64
68
  };
65
- await request.post(requestOptions);
69
+ const destinationFile = await request.get(requestOptions);
70
+ await logger.log(destinationFile);
66
71
  }
67
72
  catch (err) {
68
73
  this.handleRejectedODataJsonPromise(err);
@@ -76,17 +81,30 @@ class SpoFileCopyCommand extends SpoCommand {
76
81
  await logger.logToStderr(`Retrieving server-relative path for file with ID '${options.sourceId}'...`);
77
82
  }
78
83
  const requestOptions = {
79
- url: `${options.webUrl}/_api/Web/GetFileById('${options.sourceId}')?$select=ServerRelativePath`,
84
+ url: `${options.webUrl}/_api/Web/GetFileById('${options.sourceId}')/ServerRelativePath`,
80
85
  headers: {
81
86
  accept: 'application/json;odata=nometadata'
82
87
  },
83
88
  responseType: 'json'
84
89
  };
85
90
  const file = await request.get(requestOptions);
86
- return file.ServerRelativePath.DecodedUrl;
91
+ return file.DecodedUrl;
92
+ }
93
+ getNameConflictBehaviorValue(nameConflictBehavior) {
94
+ switch (nameConflictBehavior?.toLowerCase()) {
95
+ case 'fail':
96
+ return CreateCopyJobsNameConflictBehavior.Fail;
97
+ case 'replace':
98
+ return CreateCopyJobsNameConflictBehavior.Replace;
99
+ case 'rename':
100
+ return CreateCopyJobsNameConflictBehavior.Rename;
101
+ default:
102
+ return CreateCopyJobsNameConflictBehavior.Fail;
103
+ }
87
104
  }
88
105
  getAbsoluteUrl(webUrl, url) {
89
- return url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
106
+ const result = url.startsWith('https://') ? url : urlUtil.getAbsoluteUrl(webUrl, url);
107
+ return urlUtil.removeTrailingSlashes(result);
90
108
  }
91
109
  }
92
110
  _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry = function _SpoFileCopyCommand_initTelemetry() {
@@ -95,9 +113,10 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
95
113
  sourceUrl: typeof args.options.sourceUrl !== 'undefined',
96
114
  sourceId: typeof args.options.sourceId !== 'undefined',
97
115
  newName: typeof args.options.newName !== 'undefined',
98
- nameConflictBehavior: args.options.nameConflictBehavior || false,
99
- resetAuthorAndCreated: !!args.options.resetAuthorAndCreated,
100
- bypassSharedLock: !!args.options.bypassSharedLock
116
+ nameConflictBehavior: typeof args.options.nameConflictBehavior !== 'undefined',
117
+ ignoreVersionHistory: !!args.options.ignoreVersionHistory,
118
+ bypassSharedLock: !!args.options.bypassSharedLock,
119
+ skipWait: !!args.options.skipWait
101
120
  });
102
121
  });
103
122
  }, _SpoFileCopyCommand_initOptions = function _SpoFileCopyCommand_initOptions() {
@@ -114,10 +133,12 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
114
133
  }, {
115
134
  option: '--nameConflictBehavior [nameConflictBehavior]',
116
135
  autocomplete: this.nameConflictBehaviorOptions
117
- }, {
118
- option: '--resetAuthorAndCreated'
119
136
  }, {
120
137
  option: '--bypassSharedLock'
138
+ }, {
139
+ option: '--ignoreVersionHistory'
140
+ }, {
141
+ option: '--skipWait'
121
142
  });
122
143
  }, _SpoFileCopyCommand_initValidators = function _SpoFileCopyCommand_initValidators() {
123
144
  this.validators.push(async (args) => {
@@ -128,7 +149,7 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
128
149
  if (args.options.sourceId && !validation.isValidGuid(args.options.sourceId)) {
129
150
  return `${args.options.sourceId} is not a valid GUID for sourceId.`;
130
151
  }
131
- if (args.options.nameConflictBehavior && this.nameConflictBehaviorOptions.indexOf(args.options.nameConflictBehavior) === -1) {
152
+ if (args.options.nameConflictBehavior && !this.nameConflictBehaviorOptions.includes(args.options.nameConflictBehavior.toLowerCase())) {
132
153
  return `${args.options.nameConflictBehavior} is not a valid nameConflictBehavior value. Allowed values: ${this.nameConflictBehaviorOptions.join(', ')}.`;
133
154
  }
134
155
  return true;
@@ -137,7 +158,7 @@ _SpoFileCopyCommand_instances = new WeakSet(), _SpoFileCopyCommand_initTelemetry
137
158
  this.optionSets.push({ options: ['sourceUrl', 'sourceId'] });
138
159
  }, _SpoFileCopyCommand_initTypes = function _SpoFileCopyCommand_initTypes() {
139
160
  this.types.string.push('webUrl', 'sourceUrl', 'sourceId', 'targetUrl', 'newName', 'nameConflictBehavior');
140
- this.types.boolean.push('resetAuthorAndCreated', 'bypassSharedLock');
161
+ this.types.boolean.push('bypassSharedLock', 'ignoreVersionHistory', 'skipWait');
141
162
  };
142
163
  export default new SpoFileCopyCommand();
143
164
  //# sourceMappingURL=file-copy.js.map
@@ -18,9 +18,6 @@ class SpoFolderSetCommand extends SpoCommand {
18
18
  get description() {
19
19
  return 'Updates a folder';
20
20
  }
21
- alias() {
22
- return [commands.FOLDER_RENAME];
23
- }
24
21
  constructor() {
25
22
  super();
26
23
  _SpoFolderSetCommand_instances.add(this);
@@ -34,7 +31,6 @@ class SpoFolderSetCommand extends SpoCommand {
34
31
  }
35
32
  async commandAction(logger, args) {
36
33
  try {
37
- await this.showDeprecationWarning(logger, this.alias()[0], this.name);
38
34
  if (this.verbose) {
39
35
  await logger.logToStderr(`Updating folder '${args.options.name}'...`);
40
36
  }
@@ -16,7 +16,7 @@ class SpoListListCommand extends SpoCommand {
16
16
  return 'Lists all available list in the specified site';
17
17
  }
18
18
  defaultProperties() {
19
- return ['Title', 'Url', 'Id'];
19
+ return ['Title', 'Id'];
20
20
  }
21
21
  constructor() {
22
22
  super();
@@ -36,9 +36,6 @@ class SpoListListCommand extends SpoCommand {
36
36
  queryParams.push(`$filter=${args.options.filter}`);
37
37
  }
38
38
  const listInstances = await odata.getAllItems(`${args.options.webUrl}/_api/web/lists?${queryParams.join('&')}`);
39
- listInstances.forEach(l => {
40
- l.Url = l.RootFolder.ServerRelativeUrl;
41
- });
42
39
  await logger.log(listInstances);
43
40
  }
44
41
  catch (err) {
@@ -3,7 +3,8 @@ 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 _SpoSiteAppCatalogRemoveCommand_instances, _SpoSiteAppCatalogRemoveCommand_initOptions, _SpoSiteAppCatalogRemoveCommand_initValidators;
6
+ var _SpoSiteAppCatalogRemoveCommand_instances, _SpoSiteAppCatalogRemoveCommand_initTelemetry, _SpoSiteAppCatalogRemoveCommand_initOptions, _SpoSiteAppCatalogRemoveCommand_initValidators, _SpoSiteAppCatalogRemoveCommand_initTypes;
7
+ import { cli } from '../../../../cli/cli.js';
7
8
  import config from '../../../../config.js';
8
9
  import request from '../../../../request.js';
9
10
  import { formatting } from '../../../../utils/formatting.js';
@@ -21,47 +22,70 @@ class SpoSiteAppCatalogRemoveCommand extends SpoCommand {
21
22
  constructor() {
22
23
  super();
23
24
  _SpoSiteAppCatalogRemoveCommand_instances.add(this);
25
+ __classPrivateFieldGet(this, _SpoSiteAppCatalogRemoveCommand_instances, "m", _SpoSiteAppCatalogRemoveCommand_initTelemetry).call(this);
24
26
  __classPrivateFieldGet(this, _SpoSiteAppCatalogRemoveCommand_instances, "m", _SpoSiteAppCatalogRemoveCommand_initOptions).call(this);
25
27
  __classPrivateFieldGet(this, _SpoSiteAppCatalogRemoveCommand_instances, "m", _SpoSiteAppCatalogRemoveCommand_initValidators).call(this);
28
+ __classPrivateFieldGet(this, _SpoSiteAppCatalogRemoveCommand_instances, "m", _SpoSiteAppCatalogRemoveCommand_initTypes).call(this);
26
29
  }
27
30
  async commandAction(logger, args) {
28
- const url = args.options.siteUrl;
29
- try {
30
- const spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
31
- const requestDigest = await spo.getRequestDigest(spoAdminUrl);
31
+ const removeSiteAppcatalog = async () => {
32
+ const url = args.options.siteUrl;
32
33
  if (this.verbose) {
33
34
  await logger.logToStderr(`Disabling site collection app catalog...`);
34
35
  }
35
- const requestOptions = {
36
- url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
37
- headers: {
38
- 'X-RequestDigest': requestDigest.FormDigestValue
39
- },
40
- 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="50" ObjectPathId="49" /><ObjectPath Id="52" ObjectPathId="51" /><ObjectPath Id="54" ObjectPathId="53" /><ObjectPath Id="56" ObjectPathId="55" /><ObjectPath Id="58" ObjectPathId="57" /><Method Name="Remove" Id="59" ObjectPathId="57"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method></Actions><ObjectPaths><Constructor Id="49" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /><Method Id="51" ParentId="49" Name="GetSiteByUrl"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method><Property Id="53" ParentId="51" Name="RootWeb" /><Property Id="55" ParentId="53" Name="TenantAppCatalog" /><Property Id="57" ParentId="55" Name="SiteCollectionAppCatalogsSites" /></ObjectPaths></Request>`
41
- };
42
- const res = await request.post(requestOptions);
43
- const json = JSON.parse(res);
44
- const response = json[0];
45
- if (response.ErrorInfo) {
46
- throw response.ErrorInfo.ErrorMessage;
47
- }
48
- else {
49
- if (this.verbose) {
50
- await logger.logToStderr('Site collection app catalog disabled');
36
+ try {
37
+ const spoAdminUrl = await spo.getSpoAdminUrl(logger, this.debug);
38
+ const requestDigest = await spo.getRequestDigest(spoAdminUrl);
39
+ const requestOptions = {
40
+ url: `${spoAdminUrl}/_vti_bin/client.svc/ProcessQuery`,
41
+ headers: {
42
+ 'X-RequestDigest': requestDigest.FormDigestValue
43
+ },
44
+ 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="50" ObjectPathId="49" /><ObjectPath Id="52" ObjectPathId="51" /><ObjectPath Id="54" ObjectPathId="53" /><ObjectPath Id="56" ObjectPathId="55" /><ObjectPath Id="58" ObjectPathId="57" /><Method Name="Remove" Id="59" ObjectPathId="57"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method></Actions><ObjectPaths><Constructor Id="49" TypeId="{268004ae-ef6b-4e9b-8425-127220d84719}" /><Method Id="51" ParentId="49" Name="GetSiteByUrl"><Parameters><Parameter Type="String">${formatting.escapeXml(url)}</Parameter></Parameters></Method><Property Id="53" ParentId="51" Name="RootWeb" /><Property Id="55" ParentId="53" Name="TenantAppCatalog" /><Property Id="57" ParentId="55" Name="SiteCollectionAppCatalogsSites" /></ObjectPaths></Request>`
45
+ };
46
+ const res = await request.post(requestOptions);
47
+ const json = JSON.parse(res);
48
+ const response = json[0];
49
+ if (response.ErrorInfo) {
50
+ throw response.ErrorInfo.ErrorMessage;
51
+ }
52
+ else {
53
+ if (this.verbose) {
54
+ await logger.logToStderr('Site collection app catalog disabled');
55
+ }
51
56
  }
52
57
  }
58
+ catch (err) {
59
+ this.handleRejectedPromise(err);
60
+ }
61
+ };
62
+ if (args.options.force) {
63
+ await removeSiteAppcatalog();
53
64
  }
54
- catch (err) {
55
- this.handleRejectedPromise(err);
65
+ else {
66
+ const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove the app catalog from ${args.options.siteUrl}?` });
67
+ if (result) {
68
+ await removeSiteAppcatalog();
69
+ }
56
70
  }
57
71
  }
58
72
  }
59
- _SpoSiteAppCatalogRemoveCommand_instances = new WeakSet(), _SpoSiteAppCatalogRemoveCommand_initOptions = function _SpoSiteAppCatalogRemoveCommand_initOptions() {
73
+ _SpoSiteAppCatalogRemoveCommand_instances = new WeakSet(), _SpoSiteAppCatalogRemoveCommand_initTelemetry = function _SpoSiteAppCatalogRemoveCommand_initTelemetry() {
74
+ this.telemetry.push((args) => {
75
+ Object.assign(this.telemetryProperties, {
76
+ force: !!args.options.force
77
+ });
78
+ });
79
+ }, _SpoSiteAppCatalogRemoveCommand_initOptions = function _SpoSiteAppCatalogRemoveCommand_initOptions() {
60
80
  this.options.unshift({
61
81
  option: '-u, --siteUrl <siteUrl>'
82
+ }, {
83
+ option: '-f, --force'
62
84
  });
63
85
  }, _SpoSiteAppCatalogRemoveCommand_initValidators = function _SpoSiteAppCatalogRemoveCommand_initValidators() {
64
86
  this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.siteUrl));
87
+ }, _SpoSiteAppCatalogRemoveCommand_initTypes = function _SpoSiteAppCatalogRemoveCommand_initTypes() {
88
+ this.types.string.push('siteUrl');
65
89
  };
66
90
  export default new SpoSiteAppCatalogRemoveCommand();
67
91
  //# sourceMappingURL=site-appcatalog-remove.js.map
@@ -31,9 +31,6 @@ class SpoSiteRemoveCommand extends SpoCommand {
31
31
  __classPrivateFieldGet(this, _SpoSiteRemoveCommand_instances, "m", _SpoSiteRemoveCommand_initTypes).call(this);
32
32
  }
33
33
  async commandAction(logger, args) {
34
- if (args.options.wait) {
35
- await this.warn(logger, `Option 'wait' is deprecated and will be removed in the next major release.`);
36
- }
37
34
  if (args.options.force) {
38
35
  await this.removeSite(logger, args.options);
39
36
  }
@@ -196,7 +193,6 @@ _SpoSiteRemoveCommand_instances = new WeakSet(), _SpoSiteRemoveCommand_initTelem
196
193
  Object.assign(this.telemetryProperties, {
197
194
  skipRecycleBin: !!args.options.skipRecycleBin,
198
195
  fromRecycleBin: !!args.options.fromRecycleBin,
199
- wait: !!args.options.wait,
200
196
  force: !!args.options.force
201
197
  });
202
198
  });
@@ -207,8 +203,6 @@ _SpoSiteRemoveCommand_instances = new WeakSet(), _SpoSiteRemoveCommand_initTelem
207
203
  option: '--skipRecycleBin'
208
204
  }, {
209
205
  option: '--fromRecycleBin'
210
- }, {
211
- option: '--wait'
212
206
  }, {
213
207
  option: '-f, --force'
214
208
  });
@@ -230,7 +224,7 @@ _SpoSiteRemoveCommand_instances = new WeakSet(), _SpoSiteRemoveCommand_initTelem
230
224
  });
231
225
  }, _SpoSiteRemoveCommand_initTypes = function _SpoSiteRemoveCommand_initTypes() {
232
226
  this.types.string.push('url');
233
- this.types.boolean.push('skipRecycleBin', 'fromRecycleBin', 'wait', 'force');
227
+ this.types.boolean.push('skipRecycleBin', 'fromRecycleBin', 'force');
234
228
  };
235
229
  export default new SpoSiteRemoveCommand();
236
230
  //# sourceMappingURL=site-remove.js.map
@@ -3,7 +3,7 @@ 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 _SpoTenantRecycleBinItemRestoreCommand_instances, _SpoTenantRecycleBinItemRestoreCommand_initTelemetry, _SpoTenantRecycleBinItemRestoreCommand_initOptions, _SpoTenantRecycleBinItemRestoreCommand_initValidators, _SpoTenantRecycleBinItemRestoreCommand_initTypes;
6
+ var _SpoTenantRecycleBinItemRestoreCommand_instances, _SpoTenantRecycleBinItemRestoreCommand_initOptions, _SpoTenantRecycleBinItemRestoreCommand_initValidators, _SpoTenantRecycleBinItemRestoreCommand_initTypes;
7
7
  import request from '../../../../request.js';
8
8
  import { formatting } from '../../../../utils/formatting.js';
9
9
  import { odata } from '../../../../utils/odata.js';
@@ -22,15 +22,11 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
22
22
  constructor() {
23
23
  super();
24
24
  _SpoTenantRecycleBinItemRestoreCommand_instances.add(this);
25
- __classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initTelemetry).call(this);
26
25
  __classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initOptions).call(this);
27
26
  __classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initValidators).call(this);
28
27
  __classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initTypes).call(this);
29
28
  }
30
29
  async commandAction(logger, args) {
31
- if (args.options.wait) {
32
- await this.warn(logger, `Option 'wait' is deprecated and will be removed in the next major release.`);
33
- }
34
30
  try {
35
31
  if (this.verbose) {
36
32
  await logger.logToStderr(`Restoring site collection '${args.options.siteUrl}' from recycle bin.`);
@@ -62,13 +58,6 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
62
58
  };
63
59
  await request.post(restoreOptions);
64
60
  }
65
- // Here, we return a fixed response because this new API endpoint doesn't return a response while the previous API did.
66
- // This has to be removed in the next major release.
67
- await logger.log({
68
- HasTimedout: false,
69
- IsComplete: !!args.options.wait,
70
- PollingInterval: 15000
71
- });
72
61
  }
73
62
  catch (err) {
74
63
  this.handleRejectedODataJsonPromise(err);
@@ -79,23 +68,14 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
79
68
  return sites[0].GroupId;
80
69
  }
81
70
  }
82
- _SpoTenantRecycleBinItemRestoreCommand_instances = new WeakSet(), _SpoTenantRecycleBinItemRestoreCommand_initTelemetry = function _SpoTenantRecycleBinItemRestoreCommand_initTelemetry() {
83
- this.telemetry.push((args) => {
84
- Object.assign(this.telemetryProperties, {
85
- wait: !!args.options.wait
86
- });
87
- });
88
- }, _SpoTenantRecycleBinItemRestoreCommand_initOptions = function _SpoTenantRecycleBinItemRestoreCommand_initOptions() {
71
+ _SpoTenantRecycleBinItemRestoreCommand_instances = new WeakSet(), _SpoTenantRecycleBinItemRestoreCommand_initOptions = function _SpoTenantRecycleBinItemRestoreCommand_initOptions() {
89
72
  this.options.unshift({
90
73
  option: '-u, --siteUrl <siteUrl>'
91
- }, {
92
- option: '--wait'
93
74
  });
94
75
  }, _SpoTenantRecycleBinItemRestoreCommand_initValidators = function _SpoTenantRecycleBinItemRestoreCommand_initValidators() {
95
76
  this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.siteUrl));
96
77
  }, _SpoTenantRecycleBinItemRestoreCommand_initTypes = function _SpoTenantRecycleBinItemRestoreCommand_initTypes() {
97
78
  this.types.string.push('siteUrl');
98
- this.types.boolean.push('wait');
99
79
  };
100
80
  export default new SpoTenantRecycleBinItemRestoreCommand();
101
81
  //# sourceMappingURL=tenant-recyclebinitem-restore.js.map
@@ -92,7 +92,6 @@ export default {
92
92
  FOLDER_LIST: `${prefix} folder list`,
93
93
  FOLDER_MOVE: `${prefix} folder move`,
94
94
  FOLDER_REMOVE: `${prefix} folder remove`,
95
- FOLDER_RENAME: `${prefix} folder rename`,
96
95
  FOLDER_SET: `${prefix} folder set`,
97
96
  FOLDER_RETENTIONLABEL_ENSURE: `${prefix} folder retentionlabel ensure`,
98
97
  FOLDER_RETENTIONLABEL_REMOVE: `${prefix} folder retentionlabel remove`,
@@ -0,0 +1,106 @@
1
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
+ };
6
+ var _TeamsMessageRestoreCommand_instances, _TeamsMessageRestoreCommand_initTelemetry, _TeamsMessageRestoreCommand_initOptions, _TeamsMessageRestoreCommand_initValidators, _TeamsMessageRestoreCommand_initOptionSets, _TeamsMessageRestoreCommand_initTypes;
7
+ import request from '../../../../request.js';
8
+ import { validation } from '../../../../utils/validation.js';
9
+ import commands from '../../commands.js';
10
+ import DelegatedGraphCommand from '../../../base/DelegatedGraphCommand.js';
11
+ import { teams } from '../../../../utils/teams.js';
12
+ class TeamsMessageRestoreCommand extends DelegatedGraphCommand {
13
+ get name() {
14
+ return commands.MESSAGE_RESTORE;
15
+ }
16
+ get description() {
17
+ return 'Restores a deleted message from a channel in a Microsoft Teams team';
18
+ }
19
+ constructor() {
20
+ super();
21
+ _TeamsMessageRestoreCommand_instances.add(this);
22
+ __classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initTelemetry).call(this);
23
+ __classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initOptions).call(this);
24
+ __classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initValidators).call(this);
25
+ __classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initOptionSets).call(this);
26
+ __classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initTypes).call(this);
27
+ }
28
+ async commandAction(logger, args) {
29
+ try {
30
+ if (this.verbose) {
31
+ await logger.logToStderr(`Restoring deleted message '${args.options.id}' from channel '${args.options.channelId || args.options.channelName}' in the Microsoft Teams team '${args.options.teamId || args.options.teamName}'.`);
32
+ }
33
+ const teamId = await this.getTeamId(args.options, logger);
34
+ const channelId = await this.getChannelId(args.options, teamId, logger);
35
+ const requestOptions = {
36
+ url: `${this.resource}/v1.0/teams/${teamId}/channels/${channelId}/messages/${args.options.id}/undoSoftDelete`,
37
+ headers: {
38
+ accept: 'application/json;odata.metadata=none'
39
+ },
40
+ responseType: 'json'
41
+ };
42
+ await request.post(requestOptions);
43
+ }
44
+ catch (err) {
45
+ this.handleRejectedODataJsonPromise(err);
46
+ }
47
+ }
48
+ async getTeamId(options, logger) {
49
+ if (options.teamId) {
50
+ return options.teamId;
51
+ }
52
+ if (this.verbose) {
53
+ await logger.logToStderr(`Getting the Team ID.`);
54
+ }
55
+ const groupId = await teams.getTeamIdByDisplayName(options.teamName);
56
+ return groupId;
57
+ }
58
+ async getChannelId(options, teamId, logger) {
59
+ if (options.channelId) {
60
+ return options.channelId;
61
+ }
62
+ if (this.verbose) {
63
+ await logger.logToStderr(`Getting the channel ID.`);
64
+ }
65
+ const channelId = await teams.getChannelIdByDisplayName(teamId, options.channelName);
66
+ return channelId;
67
+ }
68
+ }
69
+ _TeamsMessageRestoreCommand_instances = new WeakSet(), _TeamsMessageRestoreCommand_initTelemetry = function _TeamsMessageRestoreCommand_initTelemetry() {
70
+ this.telemetry.push((args) => {
71
+ Object.assign(this.telemetryProperties, {
72
+ teamId: typeof args.options.teamId !== 'undefined',
73
+ teamName: typeof args.options.teamName !== 'undefined',
74
+ channelId: typeof args.options.channelId !== 'undefined',
75
+ channelName: typeof args.options.channelName !== 'undefined'
76
+ });
77
+ });
78
+ }, _TeamsMessageRestoreCommand_initOptions = function _TeamsMessageRestoreCommand_initOptions() {
79
+ this.options.unshift({
80
+ option: '--teamId [teamId]'
81
+ }, {
82
+ option: '--teamName [teamName]'
83
+ }, {
84
+ option: '--channelId [channelId]'
85
+ }, {
86
+ option: '--channelName [channelName]'
87
+ }, {
88
+ option: '-i, --id <id>'
89
+ });
90
+ }, _TeamsMessageRestoreCommand_initValidators = function _TeamsMessageRestoreCommand_initValidators() {
91
+ this.validators.push(async (args) => {
92
+ if (args.options.teamId && !validation.isValidGuid(args.options.teamId)) {
93
+ return `'${args.options.teamId}' is not a valid GUID for 'teamId'.`;
94
+ }
95
+ if (args.options.channelId && !validation.isValidTeamsChannelId(args.options.channelId)) {
96
+ return `'${args.options.channelId}' is not a valid ID for 'channelId'.`;
97
+ }
98
+ return true;
99
+ });
100
+ }, _TeamsMessageRestoreCommand_initOptionSets = function _TeamsMessageRestoreCommand_initOptionSets() {
101
+ this.optionSets.push({ options: ['teamId', 'teamName'] }, { options: ['channelId', 'channelName'] });
102
+ }, _TeamsMessageRestoreCommand_initTypes = function _TeamsMessageRestoreCommand_initTypes() {
103
+ this.types.string.push('teamId', 'teamName', 'channelId', 'channelName', 'id');
104
+ };
105
+ export default new TeamsMessageRestoreCommand();
106
+ //# sourceMappingURL=message-restore.js.map
@@ -39,6 +39,7 @@ export default {
39
39
  MESSAGE_LIST: `${prefix} message list`,
40
40
  MESSAGE_REMOVE: `${prefix} message remove`,
41
41
  MESSAGE_REPLY_LIST: `${prefix} message reply list`,
42
+ MESSAGE_RESTORE: `${prefix} message restore`,
42
43
  MESSAGE_SEND: `${prefix} message send`,
43
44
  MESSAGINGSETTINGS_LIST: `${prefix} messagingsettings list`,
44
45
  MESSAGINGSETTINGS_SET: `${prefix} messagingsettings set`,
@@ -7,7 +7,6 @@ var _VivaEngageGroupListCommand_instances, _VivaEngageGroupListCommand_initTelem
7
7
  import request from '../../../../request.js';
8
8
  import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
9
9
  import commands from '../../commands.js';
10
- import yammerCommands from './yammerCommands.js';
11
10
  class VivaEngageGroupListCommand extends VivaEngageCommand {
12
11
  get name() {
13
12
  return commands.ENGAGE_GROUP_LIST;
@@ -15,9 +14,6 @@ class VivaEngageGroupListCommand extends VivaEngageCommand {
15
14
  get description() {
16
15
  return 'Returns the list of groups in a Viva Engage network or the groups for a specific user';
17
16
  }
18
- alias() {
19
- return [yammerCommands.GROUP_LIST];
20
- }
21
17
  constructor() {
22
18
  super();
23
19
  _VivaEngageGroupListCommand_instances.add(this);
@@ -59,7 +55,6 @@ class VivaEngageGroupListCommand extends VivaEngageCommand {
59
55
  }
60
56
  }
61
57
  async commandAction(logger, args) {
62
- await this.showDeprecationWarning(logger, this.alias()[0], this.name);
63
58
  this.items = []; // this will reset the items array in interactive mode
64
59
  try {
65
60
  await this.getAllItems(logger, args, 1);
@@ -7,7 +7,6 @@ var _VivaEngageGroupUserAddCommand_instances, _VivaEngageGroupUserAddCommand_ini
7
7
  import request from '../../../../request.js';
8
8
  import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
9
9
  import commands from '../../commands.js';
10
- import yammerCommands from './yammerCommands.js';
11
10
  class VivaEngageGroupUserAddCommand extends VivaEngageCommand {
12
11
  get name() {
13
12
  return commands.ENGAGE_GROUP_USER_ADD;
@@ -15,9 +14,6 @@ class VivaEngageGroupUserAddCommand extends VivaEngageCommand {
15
14
  get description() {
16
15
  return 'Adds a user to a Viva Engage Group';
17
16
  }
18
- alias() {
19
- return [yammerCommands.GROUP_USER_ADD];
20
- }
21
17
  constructor() {
22
18
  super();
23
19
  _VivaEngageGroupUserAddCommand_instances.add(this);
@@ -26,7 +22,6 @@ class VivaEngageGroupUserAddCommand extends VivaEngageCommand {
26
22
  __classPrivateFieldGet(this, _VivaEngageGroupUserAddCommand_instances, "m", _VivaEngageGroupUserAddCommand_initValidators).call(this);
27
23
  }
28
24
  async commandAction(logger, args) {
29
- await this.showDeprecationWarning(logger, this.alias()[0], this.name);
30
25
  const requestOptions = {
31
26
  url: `${this.resource}/v1/group_memberships.json`,
32
27
  headers: {
@@ -8,7 +8,6 @@ import { cli } from '../../../../cli/cli.js';
8
8
  import request from '../../../../request.js';
9
9
  import VivaEngageCommand from "../../../base/VivaEngageCommand.js";
10
10
  import commands from '../../commands.js';
11
- import yammerCommands from './yammerCommands.js';
12
11
  class VivaEngageGroupUserRemoveCommand extends VivaEngageCommand {
13
12
  get name() {
14
13
  return commands.ENGAGE_GROUP_USER_REMOVE;
@@ -16,9 +15,6 @@ class VivaEngageGroupUserRemoveCommand extends VivaEngageCommand {
16
15
  get description() {
17
16
  return 'Removes a user from a Viva Engage group';
18
17
  }
19
- alias() {
20
- return [yammerCommands.GROUP_USER_REMOVE];
21
- }
22
18
  constructor() {
23
19
  super();
24
20
  _VivaEngageGroupUserRemoveCommand_instances.add(this);
@@ -27,7 +23,6 @@ class VivaEngageGroupUserRemoveCommand extends VivaEngageCommand {
27
23
  __classPrivateFieldGet(this, _VivaEngageGroupUserRemoveCommand_instances, "m", _VivaEngageGroupUserRemoveCommand_initValidators).call(this);
28
24
  }
29
25
  async commandAction(logger, args) {
30
- await this.showDeprecationWarning(logger, this.alias()[0], this.name);
31
26
  if (args.options.force) {
32
27
  await this.executeRemoveAction(args.options);
33
28
  }
@@ -7,7 +7,6 @@ var _VivaEngageMessageAddCommand_instances, _VivaEngageMessageAddCommand_initTel
7
7
  import request from '../../../../request.js';
8
8
  import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
9
9
  import commands from '../../commands.js';
10
- import yammerCommands from './yammerCommands.js';
11
10
  class VivaEngageMessageAddCommand extends VivaEngageCommand {
12
11
  get name() {
13
12
  return commands.ENGAGE_MESSAGE_ADD;
@@ -15,9 +14,6 @@ class VivaEngageMessageAddCommand extends VivaEngageCommand {
15
14
  get description() {
16
15
  return 'Posts a Viva Engage network message on behalf of the current user';
17
16
  }
18
- alias() {
19
- return [yammerCommands.MESSAGE_ADD];
20
- }
21
17
  defaultProperties() {
22
18
  return ['id'];
23
19
  }
@@ -29,7 +25,6 @@ class VivaEngageMessageAddCommand extends VivaEngageCommand {
29
25
  __classPrivateFieldGet(this, _VivaEngageMessageAddCommand_instances, "m", _VivaEngageMessageAddCommand_initValidators).call(this);
30
26
  }
31
27
  async commandAction(logger, args) {
32
- await this.showDeprecationWarning(logger, this.alias()[0], this.name);
33
28
  const requestOptions = {
34
29
  url: `${this.resource}/v1/messages.json`,
35
30
  headers: {