@pnp/cli-microsoft365 6.4.0-beta.6b65014 → 6.4.0-beta.91f8cd3

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 (87) hide show
  1. package/README.md +12 -1
  2. package/dist/m365/aad/commands/user/user-get.js +3 -0
  3. package/dist/m365/aad/commands/user/user-set.js +3 -0
  4. package/dist/m365/aad/commands/user/user-signin-list.js +3 -0
  5. package/dist/m365/planner/commands/roster/roster-member-add.js +3 -0
  6. package/dist/m365/spfx/commands/spfx-doctor.js +43 -29
  7. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-get.js +118 -0
  8. package/dist/m365/spo/commands.js +1 -0
  9. package/dist/utils/md.js +7 -0
  10. package/dist/utils/spo.js +14 -0
  11. package/docs/docs/cmd/onenote/page/page-list.md +1 -1
  12. package/docs/docs/cmd/outlook/mail/mail-send.md +4 -0
  13. package/docs/docs/cmd/outlook/message/message-get.md +143 -0
  14. package/docs/docs/cmd/outlook/message/message-list.md +119 -0
  15. package/docs/docs/cmd/outlook/message/message-move.md +4 -0
  16. package/docs/docs/cmd/outlook/report/report-mailactivitycounts.md +40 -0
  17. package/docs/docs/cmd/outlook/report/report-mailactivityusercounts.md +40 -0
  18. package/docs/docs/cmd/outlook/report/report-mailactivityuserdetail.md +45 -0
  19. package/docs/docs/cmd/outlook/report/report-mailappusageappsusercounts.md +43 -0
  20. package/docs/docs/cmd/outlook/report/report-mailappusageusercounts.md +44 -0
  21. package/docs/docs/cmd/outlook/report/report-mailappusageuserdetail.md +48 -0
  22. package/docs/docs/cmd/outlook/report/report-mailappusageversionsusercounts.md +41 -0
  23. package/docs/docs/cmd/outlook/report/report-mailboxusagedetail.md +49 -0
  24. package/docs/docs/cmd/outlook/report/report-mailboxusagemailboxcount.md +37 -0
  25. package/docs/docs/cmd/outlook/report/report-mailboxusagequotastatusmailboxcounts.md +40 -0
  26. package/docs/docs/cmd/outlook/report/report-mailboxusagestorage.md +36 -0
  27. package/docs/docs/cmd/outlook/room/room-list.md +81 -0
  28. package/docs/docs/cmd/outlook/roomlist/roomlist-list.md +58 -0
  29. package/docs/docs/cmd/planner/plan/plan-add.md +3 -3
  30. package/docs/docs/cmd/planner/plan/plan-set.md +73 -7
  31. package/docs/docs/cmd/planner/roster/roster-add.md +16 -1
  32. package/docs/docs/cmd/planner/task/task-add.md +230 -0
  33. package/docs/docs/cmd/planner/task/task-checklistitem-add.md +55 -0
  34. package/docs/docs/cmd/planner/task/task-checklistitem-list.md +55 -0
  35. package/docs/docs/cmd/planner/task/task-checklistitem-remove.md +4 -0
  36. package/docs/docs/cmd/planner/task/task-get.md +131 -0
  37. package/docs/docs/cmd/planner/task/task-list.md +92 -0
  38. package/docs/docs/cmd/planner/task/task-reference-add.md +46 -0
  39. package/docs/docs/cmd/planner/task/task-reference-list.md +46 -0
  40. package/docs/docs/cmd/planner/task/task-reference-remove.md +4 -0
  41. package/docs/docs/cmd/planner/task/task-remove.md +4 -0
  42. package/docs/docs/cmd/planner/task/task-set.md +230 -0
  43. package/docs/docs/cmd/planner/tenant/tenant-settings-list.md +55 -0
  44. package/docs/docs/cmd/planner/tenant/tenant-settings-set.md +55 -0
  45. package/docs/docs/cmd/pp/card/card-get.md +2 -2
  46. package/docs/docs/cmd/pp/card/card-list.md +2 -2
  47. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.md +7 -7
  48. package/docs/docs/cmd/skype/report/report-activitycounts.md +38 -0
  49. package/docs/docs/cmd/skype/report/report-activityusercounts.md +38 -0
  50. package/docs/docs/cmd/skype/report/report-activityuserdetail.md +67 -0
  51. package/docs/docs/cmd/spo/listitem/listitem-add.md +1 -1
  52. package/docs/docs/cmd/spo/listitem/listitem-batch-add.md +1 -1
  53. package/docs/docs/cmd/spo/listitem/listitem-set.md +1 -1
  54. package/docs/docs/cmd/spo/site/site-set.md +2 -2
  55. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-get.md +142 -0
  56. package/docs/docs/cmd/spo/term/term-list.md +1 -1
  57. package/docs/docs/cmd/teams/channel/channel-get.md +1 -1
  58. package/docs/docs/cmd/teams/message/message-get.md +39 -4
  59. package/docs/docs/cmd/teams/message/message-list.md +41 -6
  60. package/docs/docs/cmd/teams/message/message-reply-list.md +39 -4
  61. package/docs/docs/cmd/teams/messagingsettings/messagingsettings-list.md +20 -2
  62. package/docs/docs/cmd/teams/messagingsettings/messagingsettings-set.md +8 -8
  63. package/docs/docs/cmd/teams/report/report-deviceusagedistributionusercounts.md +12 -5
  64. package/docs/docs/cmd/teams/report/report-deviceusageusercounts.md +13 -6
  65. package/docs/docs/cmd/teams/report/report-deviceusageuserdetail.md +14 -7
  66. package/docs/docs/cmd/teams/report/report-directroutingcalls.md +13 -6
  67. package/docs/docs/cmd/teams/report/report-pstncalls.md +13 -6
  68. package/docs/docs/cmd/teams/report/report-useractivitycounts.md +13 -6
  69. package/docs/docs/cmd/teams/report/report-useractivityusercounts.md +13 -6
  70. package/docs/docs/cmd/teams/report/report-useractivityuserdetail.md +13 -6
  71. package/docs/docs/cmd/teams/tab/tab-add.md +16 -0
  72. package/docs/docs/cmd/teams/tab/tab-get.md +17 -0
  73. package/docs/docs/cmd/teams/tab/tab-list.md +19 -0
  74. package/docs/docs/cmd/teams/team/team-add.md +77 -8
  75. package/docs/docs/cmd/teams/team/team-app-list.md +18 -2
  76. package/docs/docs/cmd/teams/team/team-archive.md +2 -2
  77. package/docs/docs/cmd/teams/team/team-clone.md +8 -8
  78. package/docs/docs/cmd/teams/team/team-get.md +34 -4
  79. package/docs/docs/cmd/teams/team/team-list.md +34 -3
  80. package/docs/docs/cmd/teams/team/team-remove.md +3 -3
  81. package/docs/docs/cmd/teams/team/team-set.md +8 -8
  82. package/docs/docs/cmd/teams/team/team-unarchive.md +3 -2
  83. package/docs/docs/cmd/teams/user/user-app-add.md +3 -3
  84. package/docs/docs/cmd/teams/user/user-app-list.md +18 -2
  85. package/docs/docs/cmd/teams/user/user-app-remove.md +4 -4
  86. package/docs/docs/cmd/teams/user/user-list.md +21 -4
  87. package/package.json +1 -1
package/README.md CHANGED
@@ -15,7 +15,7 @@
15
15
  alt="GitHub" />
16
16
  </a>
17
17
 
18
- <a href="https://discord.com/invite/7rfW4kg6B5">
18
+ <a href="https://discord.gg/35HTFJ544b">
19
19
  <img src="https://img.shields.io/badge/Discord-Join-7289da?style=flat-square"
20
20
  alt="Discord" />
21
21
  </a>
@@ -213,6 +213,17 @@ If you want to get involved with helping us grow the CLI, whether that is sugges
213
213
 
214
214
  Checkout our [Wiki](https://github.com/pnp/cli-microsoft365/wiki) for guides on how to contribute to this project.
215
215
 
216
+ ## Need Help?
217
+
218
+ <h4 align="center">
219
+ Join our community
220
+ </h4>
221
+ <p align="center">
222
+ <a href="https://discord.gg/35HTFJ544b">
223
+ <img alt="Discord" src="./docs/docs/images/discord-logo.png" width="100"/>
224
+ </a>
225
+ </p>
226
+
216
227
  ## Microsoft 365 Platform Community
217
228
 
218
229
  CLI for Microsoft 365 is a [Microsoft 365 Platform Community](https://pnp.github.io) (PnP) project. Microsoft 365 Platform Community is a virtual team consisting of Microsoft employees and community members focused on helping the community make the best use of Microsoft products. CLI for Microsoft 365 is an open-source project not affiliated with Microsoft and not covered by Microsoft support. If you experience any issues using the CLI, please submit an issue in the [issues list](https://github.com/pnp/cli-microsoft365/issues).
@@ -101,6 +101,9 @@ _AadUserGetCommand_instances = new WeakSet(), _AadUserGetCommand_initTelemetry =
101
101
  !validation_1.validation.isValidGuid(args.options.id)) {
102
102
  return `${args.options.id} is not a valid GUID`;
103
103
  }
104
+ if (args.options.userName && !validation_1.validation.isValidUserPrincipalName(args.options.userName)) {
105
+ return `${args.options.userName} is not a valid userName`;
106
+ }
104
107
  return true;
105
108
  }));
106
109
  }, _AadUserGetCommand_initOptionSets = function _AadUserGetCommand_initOptionSets() {
@@ -170,6 +170,9 @@ _AadUserSetCommand_instances = new WeakSet(), _AadUserSetCommand_initTelemetry =
170
170
  !validation_1.validation.isValidGuid(args.options.objectId)) {
171
171
  return `${args.options.objectId} is not a valid GUID`;
172
172
  }
173
+ if (args.options.userPrincipalName && !validation_1.validation.isValidUserPrincipalName(args.options.userPrincipalName)) {
174
+ return `${args.options.userPrincipalName} is not a valid userPrincipalName`;
175
+ }
173
176
  if (!args.options.resetPassword && ((args.options.currentPassword && !args.options.newPassword) || (args.options.newPassword && !args.options.currentPassword))) {
174
177
  return `Specify both currentPassword and newPassword when you want to change your password`;
175
178
  }
@@ -90,6 +90,9 @@ _AadUserSigninListCommand_instances = new WeakSet(), _AadUserSigninListCommand_i
90
90
  if (args.options.appId && args.options.appDisplayName) {
91
91
  return 'Specify either appId or appDisplayName, but not both';
92
92
  }
93
+ if (args.options.userName && !validation_1.validation.isValidUserPrincipalName(args.options.userName)) {
94
+ return `${args.options.userName} is not a valid userName`;
95
+ }
93
96
  if (args.options.userId && !validation_1.validation.isValidGuid(args.options.userId)) {
94
97
  return `${args.options.userId} is not a valid GUID`;
95
98
  }
@@ -106,6 +106,9 @@ _PlannerRosterMemberAddCommand_instances = new WeakSet(), _PlannerRosterMemberAd
106
106
  if (args.options.userId && !validation_1.validation.isValidGuid(args.options.userId)) {
107
107
  return `${args.options.userId} is not a valid GUID`;
108
108
  }
109
+ if (args.options.userName && !validation_1.validation.isValidUserPrincipalName(args.options.userName)) {
110
+ return `${args.options.userName} is not a valid user principal name (UPN)`;
111
+ }
109
112
  return true;
110
113
  }));
111
114
  };
@@ -18,8 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const chalk = require("chalk");
19
19
  const child_process = require("child_process");
20
20
  const semver_1 = require("semver");
21
- const AnonymousCommand_1 = require("../../base/AnonymousCommand");
22
21
  const commands_1 = require("../commands");
22
+ const base_project_command_1 = require("./project/base-project-command");
23
23
  /**
24
24
  * Has the particular check passed or failed
25
25
  */
@@ -64,7 +64,7 @@ var SharePointVersion;
64
64
  SharePointVersion[SharePointVersion["SPO"] = 4] = "SPO";
65
65
  SharePointVersion[SharePointVersion["All"] = 7] = "All";
66
66
  })(SharePointVersion || (SharePointVersion = {}));
67
- class SpfxDoctorCommand extends AnonymousCommand_1.default {
67
+ class SpfxDoctorCommand extends base_project_command_1.BaseProjectCommand {
68
68
  get allowedOutputs() {
69
69
  return ['text'];
70
70
  }
@@ -479,6 +479,7 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
479
479
  if (!args.options.output) {
480
480
  args.options.output = 'text';
481
481
  }
482
+ this.projectRootPath = this.getProjectRoot(process.cwd());
482
483
  logger.log(' ');
483
484
  logger.log('CLI for Microsoft 365 SharePoint Framework doctor');
484
485
  logger.log('Verifying configuration of your system for working with the SharePoint Framework');
@@ -557,9 +558,11 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
557
558
  });
558
559
  }
559
560
  checkSharePointFrameworkVersion(spfxVersionRequested, fixes, logger) {
560
- return this
561
- .getPackageVersion('@microsoft/generator-sharepoint', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
562
- .then((spfxVersionDetected) => {
561
+ return __awaiter(this, void 0, void 0, function* () {
562
+ let spfxVersionDetected = this.getSPFxVersionFromYoRcFile(logger);
563
+ if (!spfxVersionDetected) {
564
+ spfxVersionDetected = yield this.getPackageVersion('@microsoft/generator-sharepoint', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
565
+ }
563
566
  const versionCheck = {
564
567
  range: spfxVersionRequested,
565
568
  fix: `npm i -g @microsoft/generator-sharepoint@${spfxVersionRequested}`
@@ -625,39 +628,50 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
625
628
  spVersionStringToEnum(sp) {
626
629
  return SharePointVersion[sp.toUpperCase()];
627
630
  }
631
+ getSPFxVersionFromYoRcFile(logger) {
632
+ if (this.projectRootPath !== null) {
633
+ const spfxVersion = this.getProjectVersion();
634
+ if (spfxVersion) {
635
+ if (this.debug) {
636
+ logger.logToStderr(`SPFx version retrieved from .yo-rc.json file. Retrieved version: ${spfxVersion}`);
637
+ }
638
+ return spfxVersion;
639
+ }
640
+ }
641
+ return undefined;
642
+ }
628
643
  getSharePointFrameworkVersion(logger) {
629
- return new Promise((resolve, reject) => {
630
- if (this.debug) {
631
- logger.logToStderr('Detecting SharePoint Framework version based on @microsoft/sp-core-library local...');
644
+ return __awaiter(this, void 0, void 0, function* () {
645
+ let spfxVersion = this.getSPFxVersionFromYoRcFile(logger);
646
+ if (spfxVersion) {
647
+ return spfxVersion;
632
648
  }
633
- this
634
- .getPackageVersion('@microsoft/sp-core-library', PackageSearchMode.LocalOnly, HandlePromise.Fail, logger)
635
- .then((version) => {
649
+ try {
650
+ spfxVersion = yield this.getPackageVersion('@microsoft/sp-core-library', PackageSearchMode.LocalOnly, HandlePromise.Fail, logger);
636
651
  if (this.debug) {
637
- logger.logToStderr(`Found @microsoft/sp-core-library@${version}`);
652
+ logger.logToStderr(`Found @microsoft/sp-core-library@${spfxVersion}`);
638
653
  }
639
- return Promise.resolve(version);
640
- })
641
- .catch(() => {
654
+ return spfxVersion;
655
+ }
656
+ catch (_a) {
642
657
  if (this.debug) {
643
658
  logger.logToStderr(`@microsoft/sp-core-library not found. Search for @microsoft/generator-sharepoint local or global...`);
644
659
  }
645
- return this.getPackageVersion('@microsoft/generator-sharepoint', PackageSearchMode.LocalAndGlobal, HandlePromise.Fail, logger);
646
- })
647
- .then((version) => {
648
- resolve(version);
649
- })
650
- .catch((error) => {
651
- if (this.debug) {
652
- logger.logToStderr('@microsoft/generator-sharepoint not found');
653
- }
654
- if (error && error.indexOf('ENOENT') > -1) {
655
- reject('npm not found');
660
+ try {
661
+ return yield this.getPackageVersion('@microsoft/generator-sharepoint', PackageSearchMode.LocalAndGlobal, HandlePromise.Fail, logger);
656
662
  }
657
- else {
658
- resolve('');
663
+ catch (error) {
664
+ if (this.debug) {
665
+ logger.logToStderr('@microsoft/generator-sharepoint not found');
666
+ }
667
+ if (error && error.indexOf('ENOENT') > -1) {
668
+ throw 'npm not found';
669
+ }
670
+ else {
671
+ return '';
672
+ }
659
673
  }
660
- });
674
+ }
661
675
  });
662
676
  }
663
677
  getPackageVersion(packageName, searchMode, handlePromise, logger) {
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ 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");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoTenantApplicationCustomizerGetCommand_instances, _SpoTenantApplicationCustomizerGetCommand_initTelemetry, _SpoTenantApplicationCustomizerGetCommand_initOptions, _SpoTenantApplicationCustomizerGetCommand_initValidators, _SpoTenantApplicationCustomizerGetCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Command_1 = require("../../../../Command");
19
+ const request_1 = require("../../../../request");
20
+ const formatting_1 = require("../../../../utils/formatting");
21
+ const spo_1 = require("../../../../utils/spo");
22
+ const urlUtil_1 = require("../../../../utils/urlUtil");
23
+ const validation_1 = require("../../../../utils/validation");
24
+ const SpoCommand_1 = require("../../../base/SpoCommand");
25
+ const commands_1 = require("../../commands");
26
+ class SpoTenantApplicationCustomizerGetCommand extends SpoCommand_1.default {
27
+ get name() {
28
+ return commands_1.default.TENANT_APPLICATIONCUSTOMIZER_GET;
29
+ }
30
+ get description() {
31
+ return 'Get an application customizer that is installed tenant wide';
32
+ }
33
+ constructor() {
34
+ super();
35
+ _SpoTenantApplicationCustomizerGetCommand_instances.add(this);
36
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initTelemetry).call(this);
37
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initOptions).call(this);
38
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initValidators).call(this);
39
+ __classPrivateFieldGet(this, _SpoTenantApplicationCustomizerGetCommand_instances, "m", _SpoTenantApplicationCustomizerGetCommand_initOptionSets).call(this);
40
+ }
41
+ commandAction(logger, args) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ const appCatalogUrl = yield spo_1.spo.getTenantAppCatalogUrl(logger, this.debug);
44
+ if (!appCatalogUrl) {
45
+ throw new Command_1.CommandError('No app catalog URL found');
46
+ }
47
+ let filter = '';
48
+ if (args.options.title) {
49
+ filter = `Title eq '${args.options.title}'`;
50
+ }
51
+ else if (args.options.id) {
52
+ filter = `GUID eq '${args.options.id}'`;
53
+ }
54
+ else if (args.options.clientSideComponentId) {
55
+ filter = `TenantWideExtensionComponentId eq '${args.options.clientSideComponentId}'`;
56
+ }
57
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
58
+ const reqOptions = {
59
+ url: `${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/items?$filter=${filter}`,
60
+ headers: {
61
+ 'accept': 'application/json;odata=nometadata'
62
+ },
63
+ responseType: 'json'
64
+ };
65
+ let listItemInstances;
66
+ try {
67
+ listItemInstances = yield request_1.default.get(reqOptions);
68
+ }
69
+ catch (err) {
70
+ return this.handleRejectedODataJsonPromise(err);
71
+ }
72
+ if (listItemInstances) {
73
+ if (listItemInstances.value.length === 0) {
74
+ throw new Command_1.CommandError('The specified application customizer was not found');
75
+ }
76
+ if (listItemInstances.value.length > 1) {
77
+ throw new Command_1.CommandError(`Multiple application customizers with ${args.options.title || args.options.clientSideComponentId} were found. Please disambiguate (IDs): ${listItemInstances.value.map(item => item.GUID).join(', ')}`);
78
+ }
79
+ listItemInstances.value.forEach(v => delete v['ID']);
80
+ logger.log(listItemInstances.value[0]);
81
+ }
82
+ else {
83
+ throw new Command_1.CommandError('The specified application customizer was not found');
84
+ }
85
+ });
86
+ }
87
+ }
88
+ _SpoTenantApplicationCustomizerGetCommand_instances = new WeakSet(), _SpoTenantApplicationCustomizerGetCommand_initTelemetry = function _SpoTenantApplicationCustomizerGetCommand_initTelemetry() {
89
+ this.telemetry.push((args) => {
90
+ Object.assign(this.telemetryProperties, {
91
+ title: typeof args.options.title !== 'undefined',
92
+ id: typeof args.options.id !== 'undefined',
93
+ clientSideComponentId: typeof args.options.clientSideComponentId !== 'undefined'
94
+ });
95
+ });
96
+ }, _SpoTenantApplicationCustomizerGetCommand_initOptions = function _SpoTenantApplicationCustomizerGetCommand_initOptions() {
97
+ this.options.unshift({
98
+ option: '-t, --title [title]'
99
+ }, {
100
+ option: '-i, --id [id]'
101
+ }, {
102
+ option: '-c, --clientSideComponentId [clientSideComponentId]'
103
+ });
104
+ }, _SpoTenantApplicationCustomizerGetCommand_initValidators = function _SpoTenantApplicationCustomizerGetCommand_initValidators() {
105
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
106
+ if (args.options.id && !validation_1.validation.isValidGuid(args.options.id)) {
107
+ return `${args.options.id} is not a valid GUID`;
108
+ }
109
+ if (args.options.clientSideComponentId && !validation_1.validation.isValidGuid(args.options.clientSideComponentId)) {
110
+ return `${args.options.clientSideComponentId} is not a valid GUID`;
111
+ }
112
+ return true;
113
+ }));
114
+ }, _SpoTenantApplicationCustomizerGetCommand_initOptionSets = function _SpoTenantApplicationCustomizerGetCommand_initOptionSets() {
115
+ this.optionSets.push({ options: ['title', 'id', 'clientSideComponentId'] });
116
+ };
117
+ module.exports = new SpoTenantApplicationCustomizerGetCommand();
118
+ //# sourceMappingURL=tenant-applicationcustomizer-get.js.map
@@ -279,6 +279,7 @@ exports.default = {
279
279
  TENANT_APPCATALOG_ADD: `${prefix} tenant appcatalog add`,
280
280
  TENANT_APPCATALOGURL_GET: `${prefix} tenant appcatalogurl get`,
281
281
  TENANT_APPLICATIONCUSTOMIZER_ADD: `${prefix} tenant applicationcustomizer add`,
282
+ TENANT_APPLICATIONCUSTOMIZER_GET: `${prefix} tenant applicationcustomizer get`,
282
283
  TENANT_RECYCLEBINITEM_LIST: `${prefix} tenant recyclebinitem list`,
283
284
  TENANT_RECYCLEBINITEM_REMOVE: `${prefix} tenant recyclebinitem remove`,
284
285
  TENANT_RECYCLEBINITEM_RESTORE: `${prefix} tenant recyclebinitem restore`,
package/dist/utils/md.js CHANGED
@@ -51,6 +51,12 @@ function convertContentTabs(md) {
51
51
  return ` ${title}${os_1.EOL}${os_1.EOL}${content.replace(/^ /gms, '')}`;
52
52
  });
53
53
  }
54
+ function convertMdOutput(md) {
55
+ const regex = new RegExp('(?<=^ ```md)(.*)(?= ```)', 'gms');
56
+ return md.replace(regex, (match, content) => {
57
+ return content.replace(/^ /gms, '');
58
+ });
59
+ }
54
60
  function convertCodeFences(md) {
55
61
  const regex = new RegExp('^```.*?(?:\r\n|\n)(.*?)```(?:\r\n|\n)', 'gms');
56
62
  return md.replace(regex, (match, code) => {
@@ -79,6 +85,7 @@ const convertFunctions = [
79
85
  convertAdmonitions,
80
86
  convertDd,
81
87
  convertHyperlinks,
88
+ convertMdOutput,
82
89
  convertContentTabs,
83
90
  convertCodeFences,
84
91
  removeInlineMarkup,
package/dist/utils/spo.js CHANGED
@@ -536,6 +536,20 @@ exports.spo = {
536
536
  const customActionOnSite = yield getById(webUrl, id, "Site");
537
537
  return customActionOnSite;
538
538
  });
539
+ },
540
+ getTenantAppCatalogUrl(logger, debug) {
541
+ return __awaiter(this, void 0, void 0, function* () {
542
+ const spoUrl = yield exports.spo.getSpoUrl(logger, debug);
543
+ const requestOptions = {
544
+ url: `${spoUrl}/_api/SP_TenantSettings_Current`,
545
+ headers: {
546
+ accept: 'application/json;odata=nometadata'
547
+ },
548
+ responseType: 'json'
549
+ };
550
+ const result = yield request_1.default.get(requestOptions);
551
+ return result.CorporateCatalogUrl;
552
+ });
539
553
  }
540
554
  };
541
555
  //# sourceMappingURL=spo.js.map
@@ -118,7 +118,7 @@ m365 onenote page list --webUrl https://contoso.sharepoint.com/sites/testsite
118
118
  === "Markdown"
119
119
 
120
120
  ```md
121
- # onenote page list --userName "mathijs@mathijsdev2.onmicrosoft.com"
121
+ # onenote page list --userName "john.doe@contoso.onmicrosoft.com"
122
122
 
123
123
  Date: 07/01/2023
124
124
 
@@ -123,3 +123,7 @@ Send an email with multiple attachments
123
123
  ```sh
124
124
  m365 outlook mail send --to chris@contoso.com --subject "Monthly reports" --bodyContents "Here are the reports of this month." --attachment "C:/Reports/File1.jpg" --attachment "C:/Reports/File2.docx" --attachment "C:/Reports/File3.xlsx"
125
125
  ```
126
+
127
+ ## Response
128
+
129
+ The command won't return a response on success.
@@ -46,3 +46,146 @@ Get a specific message from a specific user retrieved by user principal name usi
46
46
  ```sh
47
47
  m365 outlook message get --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAEMAAAiIsqMbYjsT5e-T7KzowPTAALvuv07AAA= --userPrincipalName user@tenant.com
48
48
  ```
49
+
50
+ ## Response
51
+
52
+ === "JSON"
53
+
54
+ ```json
55
+ {
56
+ "id": "AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA=",
57
+ "createdDateTime": "2023-01-26T19:22:44Z",
58
+ "lastModifiedDateTime": "2023-01-26T19:22:46Z",
59
+ "changeKey": "CQAAABYAAAAhebtol4HnTZCmNsr9Gnh6AAPehsHb",
60
+ "categories": [],
61
+ "receivedDateTime": "2023-01-26T19:22:45Z",
62
+ "sentDateTime": "2023-01-26T19:22:42Z",
63
+ "hasAttachments": true,
64
+ "internetMessageId": "<HE1P190MB032953D4D9C86FCEF5FFA8C4CECF9@HE1P190MB0329.EURP190.PROD.OUTLOOK.COM>",
65
+ "subject": "Lorem ipsum",
66
+ "bodyPreview": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra.",
67
+ "importance": "normal",
68
+ "parentFolderId": "AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAuAAAAAABn1FpEFqPeR7YAnkzP_VgXAQAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAA=",
69
+ "conversationId": "AAQkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAQAJfvGq77YHxJvRN73_QiuVw=",
70
+ "conversationIndex": "AQHZMbuNl+8arvtgfEm9E3vf5CK5XA==",
71
+ "isDeliveryReceiptRequested": false,
72
+ "isReadReceiptRequested": false,
73
+ "isRead": false,
74
+ "isDraft": false,
75
+ "webLink": "https://outlook.office365.com/owa/?ItemID=AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP%2BVgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA%3D&exvsurl=1&viewmodel=ReadMessageItem",
76
+ "inferenceClassification": "focused",
77
+ "body": {
78
+ "contentType": "html",
79
+ "content": "<html><head>\r\\\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><style type=\"text/css\" style=\"display:none\">\r\\\n<!--\r\\\np\r\\\n\t{margin-top:0;\r\\\n\tmargin-bottom:0}\r\\\n-->\r\\\n</style></head><body dir=\"ltr\"><div class=\"elementToProof ContentPasted0\" style=\"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255)\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra. Suspendisse cursus turpis vel urna volutpat congue. Etiam auctor nec nulla sed suscipit. Vestibulum rhoncus quis mi ac faucibus. Curabitur eget eleifend felis. Vestibulum ut dolor non elit molestie ornare. <br></div></body></html>"
80
+ },
81
+ "sender": {
82
+ "emailAddress": {
83
+ "name": "John Doe",
84
+ "address": "john.doe@contoso.com"
85
+ }
86
+ },
87
+ "from": {
88
+ "emailAddress": {
89
+ "name": "John Doe",
90
+ "address": "john.doe@contoso.com"
91
+ }
92
+ },
93
+ "toRecipients": [
94
+ {
95
+ "emailAddress": {
96
+ "name": "Megan Bowen",
97
+ "address": "megan.bowen@contoso.com"
98
+ }
99
+ }
100
+ ],
101
+ "ccRecipients": [],
102
+ "bccRecipients": [],
103
+ "replyTo": [],
104
+ "flag": {
105
+ "flagStatus": "notFlagged"
106
+ }
107
+ }
108
+ ```
109
+
110
+ === "Text"
111
+
112
+ ```txt
113
+ bccRecipients : []
114
+ body : {"contentType":"html","content":"<html><head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><style type=\"text/css\" style=\"display:none\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style></head><body dir=\"ltr\"><div class=\"elementToProof ContentPasted0\" style=\"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255)\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra. Suspendisse cursus turpis vel urna volutpat congue. Etiam auctor nec nulla sed suscipit. Vestibulum rhoncus quis mi ac faucibus. Curabitur eget eleifend felis. Vestibulum ut dolor non elit molestie ornare. <br></div></body></html>"}
115
+ bodyPreview : Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra.
116
+ categories : []
117
+ ccRecipients : []
118
+ changeKey : CQAAABYAAAAhebtol4HnTZCmNsr9Gnh6AAPehsHb
119
+ conversationId : AAQkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAQAJfvGq77YHxJvRN73_QiuVw=
120
+ conversationIndex : AQHZMbuNl+8arvtgfEm9E3vf5CK5XA==
121
+ createdDateTime : 2023-01-26T19:22:44Z
122
+ flag : {"flagStatus":"notFlagged"}
123
+ from : {"emailAddress":{"name":"John Doe","address":"john.doe@contoso.com"}}
124
+ hasAttachments : true
125
+ id : AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA=
126
+ importance : normal
127
+ inferenceClassification : focused
128
+ internetMessageId : <HE1P190MB032953D4D9C86FCEF5FFA8C4CECF9@HE1P190MB0329.EURP190.PROD.OUTLOOK.COM>
129
+ isDeliveryReceiptRequested: false
130
+ isDraft : false
131
+ isRead : false
132
+ isReadReceiptRequested : false
133
+ lastModifiedDateTime : 2023-01-26T19:22:46Z
134
+ parentFolderId : AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAuAAAAAABn1FpEFqPeR7YAnkzP_VgXAQAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAA=
135
+ receivedDateTime : 2023-01-26T19:22:45Z
136
+ replyTo : []
137
+ sender : {"emailAddress":{"name":"John Doe","address":"john.doe@contoso.com"}}
138
+ sentDateTime : 2023-01-26T19:22:42Z
139
+ subject : Lorem ipsum
140
+ toRecipients : [{"emailAddress":{"name":"Megan Bowen","address":"megan.bowen@contoso.com"}}]
141
+ webLink : https://outlook.office365.com/owa/?ItemID=AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP%2BVgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA%3D&exvsurl=1&viewmodel=ReadMessageItem
142
+ ```
143
+
144
+ === "CSV"
145
+
146
+ ```csv
147
+ id,createdDateTime,lastModifiedDateTime,changeKey,categories,receivedDateTime,sentDateTime,hasAttachments,internetMessageId,subject,bodyPreview,importance,parentFolderId,conversationId,conversationIndex,isDeliveryReceiptRequested,isReadReceiptRequested,isRead,isDraft,webLink,inferenceClassification,body,sender,from,toRecipients,ccRecipients,bccRecipients,replyTo,flag
148
+ AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA=,2023-01-26T19:22:44Z,2023-01-26T19:22:46Z,CQAAABYAAAAhebtol4HnTZCmNsr9Gnh6AAPehsHb,[],2023-01-26T19:22:45Z,2023-01-26T19:22:42Z,1,<HE1P190MB032953D4D9C86FCEF5FFA8C4CECF9@HE1P190MB0329.EURP190.PROD.OUTLOOK.COM>,Lorem ipsum,"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra.",normal,AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAuAAAAAABn1FpEFqPeR7YAnkzP_VgXAQAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAA=,AAQkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAQAJfvGq77YHxJvRN73_QiuVw=,AQHZMbuNl+8arvtgfEm9E3vf5CK5XA==,,,,,https://outlook.office365.com/owa/?ItemID=AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP%2BVgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA%3D&exvsurl=1&viewmodel=ReadMessageItem,focused,"{""contentType"":""html"",""content"":""<html><head>\r\n<meta http-equiv=\""Content-Type\"" content=\""text/html; charset=utf-8\""><style type=\""text/css\"" style=\""display:none\"">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style></head><body dir=\""ltr\""><div class=\""elementToProof ContentPasted0\"" style=\""font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255)\"">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra. Suspendisse cursus turpis vel urna volutpat congue. Etiam auctor nec nulla sed suscipit. Vestibulum rhoncus quis mi ac faucibus. Curabitur eget eleifend felis. Vestibulum ut dolor non elit molestie ornare. <br></div></body></html>""}","{""emailAddress"":{""name"":""John Doe"",""address"":""john.doe@contoso.com""}}","{""emailAddress"":{""name"":""John Doe"",""address"":""john.doe@contoso.com""}}","[{""emailAddress"":{""name"":""Megan Bowen"",""address"":""megan.bowen@contoso.com""}}]",[],[],[],"{""flagStatus"":""notFlagged""}"
149
+ ```
150
+
151
+ === "Markdown"
152
+
153
+ ```md
154
+ # outlook message get --id "AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA="
155
+
156
+ Date: 4/2/2023
157
+
158
+ ## AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA=
159
+
160
+ Property | Value
161
+ ---------|-------
162
+ id | AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP_VgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA=
163
+ createdDateTime | 2023-01-26T19:22:44Z
164
+ lastModifiedDateTime | 2023-01-26T19:22:46Z
165
+ changeKey | CQAAABYAAAAhebtol4HnTZCmNsr9Gnh6AAPk7Plc
166
+ categories | []
167
+ receivedDateTime | 2023-01-26T19:22:45Z
168
+ sentDateTime | 2023-01-26T19:22:42Z
169
+ hasAttachments | true
170
+ internetMessageId | <HE1P190MB032953D4D9C86FCEF5FFA8C4CECF9@HE1P190MB0329.EURP190.PROD.OUTLOOK.COM>
171
+ subject | Lorem ipsum
172
+ bodyPreview | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra.
173
+ importance | normal
174
+ parentFolderId | AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAuAAAAAABn1FpEFqPeR7YAnkzP\_VgXAQAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAA=
175
+ conversationId | AAQkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQAQAJfvGq77YHxJvRN73\_QiuVw=
176
+ conversationIndex | AQHZMbuNl+8arvtgfEm9E3vf5CK5XA==
177
+ isDeliveryReceiptRequested | false
178
+ isReadReceiptRequested | false
179
+ isRead | true
180
+ isDraft | false
181
+ webLink | https://outlook.office365.com/owa/?ItemID=AAMkAGUzZWVmZWU4LTM5ZmItNDA4My04OTIzLWY1MGUxNzdiYTQ0MQBGAAAAAABn1FpEFqPeR7YAnkzP%2BVgXBwAhebtol4HnTZCmNsr9Gnh6AAAAAAEMAAAhebtol4HnTZCmNsr9Gnh6AAPfHbtVAAA%3D&exvsurl=1&viewmodel=ReadMessageItem
182
+ inferenceClassification | focused
183
+ body | {"contentType":"html","content":"<html><head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"><style type=\"text/css\" style=\"display:none\">\r\n<!--\r\np\r\n\t{margin-top:0;\r\n\tmargin-bottom:0}\r\n-->\r\n</style></head><body dir=\"ltr\"><div class=\"elementToProof ContentPasted0\" style=\"font-family:Calibri,Arial,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0); background-color:rgb(255,255,255)\">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis vel diam gravida, auctor mauris nec, posuere tellus. Vivamus placerat, nunc ac cursus feugiat, arcu tellus mattis nisl, id cursus nisl lectus eu lacus. Praesent malesuada ut orci vitae viverra. Suspendisse cursus turpis vel urna volutpat congue. Etiam auctor nec nulla sed suscipit. Vestibulum rhoncus quis mi ac faucibus. Curabitur eget eleifend felis. Vestibulum ut dolor non elit molestie ornare. <br></div></body></html>"}
184
+ sender | {"emailAddress":{"name":"John Doe","address":"john.doe@contoso.com"}}
185
+ from | {"emailAddress":{"name":"John Doe","address":"john.doe@contoso.com"}}
186
+ toRecipients | [{"emailAddress":{"name":"Megan Bowen","address":"megan.bowen@contoso.com"}}]
187
+ ccRecipients | []
188
+ bccRecipients | []
189
+ replyTo | []
190
+ flag | {"flagStatus":"notFlagged"}
191
+ ```