@pnp/cli-microsoft365 6.0.0-beta.a0a813f → 6.0.0-beta.b5f756a

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.
@@ -15,10 +15,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _OutlookMailSendCommand_instances, _OutlookMailSendCommand_initTelemetry, _OutlookMailSendCommand_initOptions, _OutlookMailSendCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ const fs = require("fs");
19
+ const path = require("path");
18
20
  const Auth_1 = require("../../../../Auth");
19
21
  const request_1 = require("../../../../request");
20
22
  const GraphCommand_1 = require("../../../base/GraphCommand");
21
23
  const commands_1 = require("../../commands");
24
+ const validation_1 = require("../../../../utils/validation");
22
25
  class OutlookMailSendCommand extends GraphCommand_1.default {
23
26
  constructor() {
24
27
  super();
@@ -34,7 +37,6 @@ class OutlookMailSendCommand extends GraphCommand_1.default {
34
37
  return 'Sends an email';
35
38
  }
36
39
  commandAction(logger, args) {
37
- var _a, _b;
38
40
  return __awaiter(this, void 0, void 0, function* () {
39
41
  try {
40
42
  const isAppOnlyAuth = Auth_1.Auth.isAppOnlyAuth(Auth_1.default.service.accessTokens[this.resource].accessToken);
@@ -48,28 +50,8 @@ class OutlookMailSendCommand extends GraphCommand_1.default {
48
50
  'content-type': 'application/json'
49
51
  },
50
52
  responseType: 'json',
51
- data: {
52
- message: {
53
- subject: args.options.subject,
54
- body: {
55
- contentType: args.options.bodyContentType || 'Text',
56
- content: args.options.bodyContents
57
- },
58
- toRecipients: this.mapEmailAddressesToRecipients(args.options.to.split(',')),
59
- ccRecipients: this.mapEmailAddressesToRecipients((_a = args.options.cc) === null || _a === void 0 ? void 0 : _a.split(',')),
60
- bccRecipients: this.mapEmailAddressesToRecipients((_b = args.options.bcc) === null || _b === void 0 ? void 0 : _b.split(',')),
61
- importance: args.options.importance
62
- },
63
- saveToSentItems: args.options.saveToSentItems
64
- }
53
+ data: this.getRequestBody(args.options)
65
54
  };
66
- if (args.options.mailbox) {
67
- requestOptions.data.message.from = {
68
- emailAddress: {
69
- address: args.options.mailbox
70
- }
71
- };
72
- }
73
55
  yield request_1.default.post(requestOptions);
74
56
  }
75
57
  catch (err) {
@@ -77,15 +59,40 @@ class OutlookMailSendCommand extends GraphCommand_1.default {
77
59
  }
78
60
  });
79
61
  }
80
- mapEmailAddressesToRecipients(emailAddresses) {
81
- if (!emailAddresses) {
82
- return emailAddresses;
62
+ mapEmailAddressToRecipient(email) {
63
+ if (!email) {
64
+ return undefined;
83
65
  }
84
- return emailAddresses.map(email => ({
66
+ return {
85
67
  emailAddress: {
86
68
  address: email.trim()
87
69
  }
70
+ };
71
+ }
72
+ getRequestBody(options) {
73
+ var _a, _b;
74
+ const attachments = typeof options.attachment === 'string' ? [options.attachment] : options.attachment;
75
+ const attachmentContents = attachments === null || attachments === void 0 ? void 0 : attachments.map(a => ({
76
+ '@odata.type': '#microsoft.graph.fileAttachment',
77
+ name: path.basename(a),
78
+ contentBytes: fs.readFileSync(a, { encoding: 'base64' })
88
79
  }));
80
+ return ({
81
+ message: {
82
+ subject: options.subject,
83
+ body: {
84
+ contentType: options.bodyContentType || 'Text',
85
+ content: options.bodyContents
86
+ },
87
+ from: this.mapEmailAddressToRecipient(options.mailbox),
88
+ toRecipients: options.to.split(',').map(mail => this.mapEmailAddressToRecipient(mail)),
89
+ ccRecipients: (_a = options.cc) === null || _a === void 0 ? void 0 : _a.split(',').map(mail => this.mapEmailAddressToRecipient(mail)),
90
+ bccRecipients: (_b = options.bcc) === null || _b === void 0 ? void 0 : _b.split(',').map(mail => this.mapEmailAddressToRecipient(mail)),
91
+ importance: options.importance,
92
+ attachments: attachmentContents
93
+ },
94
+ saveToSentItems: options.saveToSentItems
95
+ });
89
96
  }
90
97
  }
91
98
  _OutlookMailSendCommand_instances = new WeakSet(), _OutlookMailSendCommand_initTelemetry = function _OutlookMailSendCommand_initTelemetry() {
@@ -97,7 +104,8 @@ _OutlookMailSendCommand_instances = new WeakSet(), _OutlookMailSendCommand_initT
97
104
  saveToSentItems: args.options.saveToSentItems,
98
105
  importance: args.options.importance,
99
106
  mailbox: typeof args.options.mailbox !== 'undefined',
100
- sender: typeof args.options.sender !== 'undefined'
107
+ sender: typeof args.options.sender !== 'undefined',
108
+ attachment: typeof args.options.attachment !== 'undefined'
101
109
  });
102
110
  });
103
111
  }, _OutlookMailSendCommand_initOptions = function _OutlookMailSendCommand_initOptions() {
@@ -121,6 +129,8 @@ _OutlookMailSendCommand_instances = new WeakSet(), _OutlookMailSendCommand_initT
121
129
  }, {
122
130
  option: '--importance [importance]',
123
131
  autocomplete: ['low', 'normal', 'high']
132
+ }, {
133
+ option: '--attachment [attachment]'
124
134
  }, {
125
135
  option: '--saveToSentItems [saveToSentItems]'
126
136
  });
@@ -131,14 +141,28 @@ _OutlookMailSendCommand_instances = new WeakSet(), _OutlookMailSendCommand_initT
131
141
  args.options.bodyContentType !== 'HTML') {
132
142
  return `${args.options.bodyContentType} is not a valid value for the bodyContentType option. Allowed values are Text|HTML`;
133
143
  }
134
- if (args.options.saveToSentItems &&
135
- args.options.saveToSentItems !== 'true' &&
136
- args.options.saveToSentItems !== 'false') {
144
+ if (args.options.saveToSentItems && !validation_1.validation.isValidBoolean(args.options.saveToSentItems)) {
137
145
  return `${args.options.saveToSentItems} is not a valid value for the saveToSentItems option. Allowed values are true|false`;
138
146
  }
139
147
  if (args.options.importance && ['low', 'normal', 'high'].indexOf(args.options.importance) === -1) {
140
148
  return `'${args.options.importance}' is not a valid value for the importance option. Allowed values are low|normal|high`;
141
149
  }
150
+ if (args.options.attachment) {
151
+ const attachments = typeof args.options.attachment === 'string' ? [args.options.attachment] : args.options.attachment;
152
+ for (const attachment of attachments) {
153
+ if (!fs.existsSync(attachment)) {
154
+ return `File with path '${attachment}' was not found.`;
155
+ }
156
+ if (!fs.lstatSync(attachment).isFile()) {
157
+ return `'${attachment}' is not a file.`;
158
+ }
159
+ }
160
+ const requestBody = this.getRequestBody(args.options);
161
+ // The max body size of the request is 4 194 304 chars before getting a 413 response
162
+ if (JSON.stringify(requestBody).length > 4194304) {
163
+ return 'Exceeded the max total size of attachments which is 3MB.';
164
+ }
165
+ }
142
166
  return true;
143
167
  }));
144
168
  };
@@ -46,12 +46,6 @@ class PlannerPlanGetCommand extends GraphCommand_1.default {
46
46
  this.handleError('This command does not support application permissions.');
47
47
  return;
48
48
  }
49
- if (args.options.planId) {
50
- args.options.id = args.options.planId;
51
- }
52
- if (args.options.planTitle) {
53
- args.options.title = args.options.planTitle;
54
- }
55
49
  try {
56
50
  if (args.options.id) {
57
51
  const plan = yield planner_1.planner.getPlanById(args.options.id);
@@ -99,8 +93,6 @@ class PlannerPlanGetCommand extends GraphCommand_1.default {
99
93
  _PlannerPlanGetCommand_instances = new WeakSet(), _PlannerPlanGetCommand_initTelemetry = function _PlannerPlanGetCommand_initTelemetry() {
100
94
  this.telemetry.push((args) => {
101
95
  Object.assign(this.telemetryProperties, {
102
- planId: typeof args.options.planId !== 'undefined',
103
- planTitle: typeof args.options.planTitle !== 'undefined',
104
96
  id: typeof args.options.id !== 'undefined',
105
97
  title: typeof args.options.title !== 'undefined',
106
98
  ownerGroupId: typeof args.options.ownerGroupId !== 'undefined',
@@ -109,10 +101,6 @@ _PlannerPlanGetCommand_instances = new WeakSet(), _PlannerPlanGetCommand_initTel
109
101
  });
110
102
  }, _PlannerPlanGetCommand_initOptions = function _PlannerPlanGetCommand_initOptions() {
111
103
  this.options.unshift({
112
- option: '--planId [planId]'
113
- }, {
114
- option: '--planTitle [planTitle]'
115
- }, {
116
104
  option: '-i, --id [id]'
117
105
  }, {
118
106
  option: '-t, --title [title]'
@@ -123,20 +111,17 @@ _PlannerPlanGetCommand_instances = new WeakSet(), _PlannerPlanGetCommand_initTel
123
111
  });
124
112
  }, _PlannerPlanGetCommand_initValidators = function _PlannerPlanGetCommand_initValidators() {
125
113
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
126
- if (args.options.planId && args.options.planTitle ||
127
- args.options.id && args.options.title ||
128
- args.options.planId && args.options.title ||
129
- args.options.id && args.options.planTitle) {
114
+ if (args.options.id && args.options.title) {
130
115
  return 'Specify either id or title but not both';
131
116
  }
132
- if (!args.options.planId && !args.options.id) {
133
- if (!args.options.planTitle && !args.options.title) {
117
+ if (!args.options.id) {
118
+ if (!args.options.title) {
134
119
  return 'Specify either id or title';
135
120
  }
136
- if ((args.options.title || args.options.planTitle) && !args.options.ownerGroupId && !args.options.ownerGroupName) {
121
+ if (args.options.title && !args.options.ownerGroupId && !args.options.ownerGroupName) {
137
122
  return 'Specify either ownerGroupId or ownerGroupName';
138
123
  }
139
- if ((args.options.title || args.options.planTitle) && args.options.ownerGroupId && args.options.ownerGroupName) {
124
+ if (args.options.title && args.options.ownerGroupId && args.options.ownerGroupName) {
140
125
  return 'Specify either ownerGroupId or ownerGroupName but not both';
141
126
  }
142
127
  if (args.options.ownerGroupId && !validation_1.validation.isValidGuid(args.options.ownerGroupId)) {
@@ -15,7 +15,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _SpoListWebhookListCommand_instances, _SpoListWebhookListCommand_initTelemetry, _SpoListWebhookListCommand_initOptions, _SpoListWebhookListCommand_initValidators, _SpoListWebhookListCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const chalk = require("chalk");
19
18
  const request_1 = require("../../../../request");
20
19
  const formatting_1 = require("../../../../utils/formatting");
21
20
  const urlUtil_1 = require("../../../../utils/urlUtil");
@@ -42,28 +41,16 @@ class SpoListWebhookListCommand extends SpoCommand_1.default {
42
41
  }
43
42
  commandAction(logger, args) {
44
43
  return __awaiter(this, void 0, void 0, function* () {
45
- if (args.options.title && this.verbose) {
46
- logger.logToStderr(chalk.yellow(`Option 'title' is deprecated. Please use 'listTitle' instead`));
47
- }
48
- if (args.options.id && this.verbose) {
49
- logger.logToStderr(chalk.yellow(`Option 'id' is deprecated. Please use 'listId' instead`));
50
- }
51
44
  if (this.verbose) {
52
- logger.logToStderr(`Retrieving webhook information for list ${args.options.id || args.options.listId || args.options.listUrl} in site at ${args.options.webUrl}...`);
45
+ logger.logToStderr(`Retrieving webhook information for list ${args.options.listTitle || args.options.listId || args.options.listUrl} in site at ${args.options.webUrl}...`);
53
46
  }
54
47
  let requestUrl = `${args.options.webUrl}/_api/web`;
55
- if (args.options.id) {
56
- requestUrl += `/lists(guid'${formatting_1.formatting.encodeQueryParameter(args.options.id)}')/Subscriptions`;
57
- }
58
- else if (args.options.listId) {
48
+ if (args.options.listId) {
59
49
  requestUrl += `/lists(guid'${formatting_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions`;
60
50
  }
61
51
  else if (args.options.listTitle) {
62
52
  requestUrl += `/lists/GetByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions`;
63
53
  }
64
- else if (args.options.title) {
65
- requestUrl += `/lists/GetByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.title)}')/Subscriptions`;
66
- }
67
54
  else if (args.options.listUrl) {
68
55
  const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
69
56
  requestUrl += `/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Subscriptions`;
@@ -99,11 +86,9 @@ class SpoListWebhookListCommand extends SpoCommand_1.default {
99
86
  _SpoListWebhookListCommand_instances = new WeakSet(), _SpoListWebhookListCommand_initTelemetry = function _SpoListWebhookListCommand_initTelemetry() {
100
87
  this.telemetry.push((args) => {
101
88
  Object.assign(this.telemetryProperties, {
102
- id: typeof args.options.id !== 'undefined',
103
89
  listId: typeof args.options.listId !== 'undefined',
104
90
  listTitle: typeof args.options.listTitle !== 'undefined',
105
- listUrl: typeof args.options.listUrl !== 'undefined',
106
- title: typeof args.options.title !== 'undefined'
91
+ listUrl: typeof args.options.listUrl !== 'undefined'
107
92
  });
108
93
  });
109
94
  }, _SpoListWebhookListCommand_initOptions = function _SpoListWebhookListCommand_initOptions() {
@@ -115,10 +100,6 @@ _SpoListWebhookListCommand_instances = new WeakSet(), _SpoListWebhookListCommand
115
100
  option: '-t, --listTitle [listTitle]'
116
101
  }, {
117
102
  option: '--listUrl [listUrl]'
118
- }, {
119
- option: '--id [id]'
120
- }, {
121
- option: '--title [title]'
122
103
  });
123
104
  }, _SpoListWebhookListCommand_initValidators = function _SpoListWebhookListCommand_initValidators() {
124
105
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
@@ -126,11 +107,6 @@ _SpoListWebhookListCommand_instances = new WeakSet(), _SpoListWebhookListCommand
126
107
  if (isValidSharePointUrl !== true) {
127
108
  return isValidSharePointUrl;
128
109
  }
129
- if (args.options.id) {
130
- if (!validation_1.validation.isValidGuid(args.options.id)) {
131
- return `${args.options.id} is not a valid GUID`;
132
- }
133
- }
134
110
  if (args.options.listId) {
135
111
  if (!validation_1.validation.isValidGuid(args.options.listId)) {
136
112
  return `${args.options.listId} is not a valid GUID`;
@@ -139,7 +115,7 @@ _SpoListWebhookListCommand_instances = new WeakSet(), _SpoListWebhookListCommand
139
115
  return true;
140
116
  }));
141
117
  }, _SpoListWebhookListCommand_initOptionSets = function _SpoListWebhookListCommand_initOptionSets() {
142
- this.optionSets.push(['id', 'title', 'listId', 'listTitle', 'listUrl']);
118
+ this.optionSets.push(['listId', 'listTitle', 'listUrl']);
143
119
  };
144
120
  module.exports = new SpoListWebhookListCommand();
145
121
  //# sourceMappingURL=list-webhook-list.js.map
@@ -15,7 +15,6 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _SpoSiteAddCommand_instances, _SpoSiteAddCommand_initTelemetry, _SpoSiteAddCommand_initOptions, _SpoSiteAddCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const chalk = require("chalk");
19
18
  const config_1 = require("../../../../config");
20
19
  const request_1 = require("../../../../request");
21
20
  const formatting_1 = require("../../../../utils/formatting");
@@ -59,9 +58,6 @@ class SpoSiteAddCommand extends SpoCommand_1.default {
59
58
  const isTeamSite = args.options.type !== 'CommunicationSite';
60
59
  try {
61
60
  const spoUrl = yield spo_1.spo.getSpoUrl(logger, this.debug);
62
- if (args.options.allowFileSharingForGuestUsers && this.verbose) {
63
- logger.logToStderr(chalk.yellow(`Option 'allowFileSharingForGuestUsers' is deprecated. Please use 'shareByEmailEnabled' instead`));
64
- }
65
61
  if (this.verbose) {
66
62
  logger.logToStderr(`Creating new site...`);
67
63
  }
@@ -130,7 +126,7 @@ class SpoSiteAddCommand extends SpoCommand_1.default {
130
126
  request: {
131
127
  Title: args.options.title,
132
128
  Url: args.options.url,
133
- ShareByEmailEnabled: args.options.shareByEmailEnabled || args.options.allowFileSharingForGuestUsers,
129
+ ShareByEmailEnabled: args.options.shareByEmailEnabled,
134
130
  Description: args.options.description || '',
135
131
  Classification: args.options.classification || '',
136
132
  WebTemplate: 'SITEPAGEPUBLISHING#0',
@@ -388,7 +384,6 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
388
384
  telemetryProps.lcid = args.options.lcid;
389
385
  telemetryProps.owners = typeof args.options.owners !== 'undefined';
390
386
  if (isCommunicationSite) {
391
- telemetryProps.allowFileSharingForGuestUsers = args.options.allowFileSharingForGuestUsers || false;
392
387
  telemetryProps.shareByEmailEnabled = args.options.shareByEmailEnabled || false;
393
388
  telemetryProps.siteDesign = args.options.siteDesign;
394
389
  telemetryProps.siteDesignId = (!(!args.options.siteDesignId)).toString();
@@ -431,8 +426,6 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
431
426
  autocomplete: ['Topic', 'Showcase', 'Blank']
432
427
  }, {
433
428
  option: '--siteDesignId [siteDesignId]'
434
- }, {
435
- option: '--allowFileSharingForGuestUsers'
436
429
  }, {
437
430
  option: '--shareByEmailEnabled'
438
431
  }, {
@@ -466,7 +459,7 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
466
459
  if (!args.options.alias) {
467
460
  return 'Required option alias missing';
468
461
  }
469
- if (args.options.url || args.options.siteDesign || args.options.removeDeletedSite || args.options.wait || args.options.shareByEmailEnabled || args.options.allowFileSharingForGuestUsers || args.options.siteDesignId || args.options.timeZone || args.options.resourceQuota || args.options.resourceQuotaWarningLevel || args.options.storageQuota || args.options.storageQuotaWarningLevel || args.options.webTemplate) {
462
+ if (args.options.url || args.options.siteDesign || args.options.removeDeletedSite || args.options.wait || args.options.shareByEmailEnabled || args.options.siteDesignId || args.options.timeZone || args.options.resourceQuota || args.options.resourceQuotaWarningLevel || args.options.storageQuota || args.options.storageQuotaWarningLevel || args.options.webTemplate) {
470
463
  return "Type TeamSite supports only the parameters title, lcid, alias, owners, classification, isPublic, and description";
471
464
  }
472
465
  }
@@ -497,7 +490,7 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
497
490
  return 'Specify siteDesign or siteDesignId but not both';
498
491
  }
499
492
  if (args.options.timeZone || args.options.isPublic || args.options.removeDeletedSite || args.options.wait || args.options.alias || args.options.resourceQuota || args.options.resourceQuotaWarningLevel || args.options.storageQuota || args.options.storageQuotaWarningLevel || args.options.webTemplate) {
500
- return "Type CommunicationSite supports only the parameters url, title, lcid, classification, siteDesign, shareByEmailEnabled, allowFileSharingForGuestUsers, siteDesignId, owners, and description";
493
+ return "Type CommunicationSite supports only the parameters url, title, lcid, classification, siteDesign, shareByEmailEnabled, siteDesignId, owners, and description";
501
494
  }
502
495
  }
503
496
  else {
@@ -550,7 +543,7 @@ _SpoSiteAddCommand_instances = new WeakSet(), _SpoSiteAddCommand_initTelemetry =
550
543
  if (args.options.storageQuotaWarningLevel > args.options.storageQuota) {
551
544
  return `storageQuotaWarningLevel cannot exceed storageQuota`;
552
545
  }
553
- if (args.options.classification || args.options.shareByEmailEnabled || args.options.allowFileSharingForGuestUsers || args.options.siteDesignId || args.options.siteDesignId || args.options.alias || args.options.isPublic) {
546
+ if (args.options.classification || args.options.shareByEmailEnabled || args.options.siteDesignId || args.options.siteDesignId || args.options.alias || args.options.isPublic) {
554
547
  return "Type ClassicSite supports only the parameters url, title, lcid, storageQuota, storageQuotaWarningLevel, resourceQuota, resourceQuotaWarningLevel, webTemplate, owners, and description";
555
548
  }
556
549
  }
@@ -13,22 +13,22 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
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
14
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
15
  };
16
- var _SpoHubSiteConnectCommand_instances, _SpoHubSiteConnectCommand_initOptions, _SpoHubSiteConnectCommand_initValidators;
16
+ var _SpoSiteHubSiteConnectCommand_instances, _SpoSiteHubSiteConnectCommand_initOptions, _SpoSiteHubSiteConnectCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
19
  const spo_1 = require("../../../../utils/spo");
20
20
  const validation_1 = require("../../../../utils/validation");
21
21
  const SpoCommand_1 = require("../../../base/SpoCommand");
22
22
  const commands_1 = require("../../commands");
23
- class SpoHubSiteConnectCommand extends SpoCommand_1.default {
23
+ class SpoSiteHubSiteConnectCommand extends SpoCommand_1.default {
24
24
  constructor() {
25
25
  super();
26
- _SpoHubSiteConnectCommand_instances.add(this);
27
- __classPrivateFieldGet(this, _SpoHubSiteConnectCommand_instances, "m", _SpoHubSiteConnectCommand_initOptions).call(this);
28
- __classPrivateFieldGet(this, _SpoHubSiteConnectCommand_instances, "m", _SpoHubSiteConnectCommand_initValidators).call(this);
26
+ _SpoSiteHubSiteConnectCommand_instances.add(this);
27
+ __classPrivateFieldGet(this, _SpoSiteHubSiteConnectCommand_instances, "m", _SpoSiteHubSiteConnectCommand_initOptions).call(this);
28
+ __classPrivateFieldGet(this, _SpoSiteHubSiteConnectCommand_instances, "m", _SpoSiteHubSiteConnectCommand_initValidators).call(this);
29
29
  }
30
30
  get name() {
31
- return commands_1.default.HUBSITE_CONNECT;
31
+ return commands_1.default.SITE_HUBSITE_CONNECT;
32
32
  }
33
33
  get description() {
34
34
  return 'Connects the specified site collection to the given hub site';
@@ -53,13 +53,13 @@ class SpoHubSiteConnectCommand extends SpoCommand_1.default {
53
53
  });
54
54
  }
55
55
  }
56
- _SpoHubSiteConnectCommand_instances = new WeakSet(), _SpoHubSiteConnectCommand_initOptions = function _SpoHubSiteConnectCommand_initOptions() {
56
+ _SpoSiteHubSiteConnectCommand_instances = new WeakSet(), _SpoSiteHubSiteConnectCommand_initOptions = function _SpoSiteHubSiteConnectCommand_initOptions() {
57
57
  this.options.unshift({
58
58
  option: '-u, --siteUrl <siteUrl>'
59
59
  }, {
60
60
  option: '-i, --id <id>'
61
61
  });
62
- }, _SpoHubSiteConnectCommand_initValidators = function _SpoHubSiteConnectCommand_initValidators() {
62
+ }, _SpoSiteHubSiteConnectCommand_initValidators = function _SpoSiteHubSiteConnectCommand_initValidators() {
63
63
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
64
64
  const isValidSharePointUrl = validation_1.validation.isValidSharePointUrl(args.options.siteUrl);
65
65
  if (isValidSharePointUrl !== true) {
@@ -71,5 +71,5 @@ _SpoHubSiteConnectCommand_instances = new WeakSet(), _SpoHubSiteConnectCommand_i
71
71
  return true;
72
72
  }));
73
73
  };
74
- module.exports = new SpoHubSiteConnectCommand();
75
- //# sourceMappingURL=hubsite-connect.js.map
74
+ module.exports = new SpoSiteHubSiteConnectCommand();
75
+ //# sourceMappingURL=site-hubsite-connect.js.map
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
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
14
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
15
  };
16
- var _SpoHubSiteDisconnectCommand_instances, _SpoHubSiteDisconnectCommand_initTelemetry, _SpoHubSiteDisconnectCommand_initOptions, _SpoHubSiteDisconnectCommand_initValidators;
16
+ var _SpoSiteHubSiteDisconnectCommand_instances, _SpoSiteHubSiteDisconnectCommand_initTelemetry, _SpoSiteHubSiteDisconnectCommand_initOptions, _SpoSiteHubSiteDisconnectCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const Cli_1 = require("../../../../cli/Cli");
19
19
  const request_1 = require("../../../../request");
@@ -21,16 +21,16 @@ const spo_1 = require("../../../../utils/spo");
21
21
  const validation_1 = require("../../../../utils/validation");
22
22
  const SpoCommand_1 = require("../../../base/SpoCommand");
23
23
  const commands_1 = require("../../commands");
24
- class SpoHubSiteDisconnectCommand extends SpoCommand_1.default {
24
+ class SpoSiteHubSiteDisconnectCommand extends SpoCommand_1.default {
25
25
  constructor() {
26
26
  super();
27
- _SpoHubSiteDisconnectCommand_instances.add(this);
28
- __classPrivateFieldGet(this, _SpoHubSiteDisconnectCommand_instances, "m", _SpoHubSiteDisconnectCommand_initTelemetry).call(this);
29
- __classPrivateFieldGet(this, _SpoHubSiteDisconnectCommand_instances, "m", _SpoHubSiteDisconnectCommand_initOptions).call(this);
30
- __classPrivateFieldGet(this, _SpoHubSiteDisconnectCommand_instances, "m", _SpoHubSiteDisconnectCommand_initValidators).call(this);
27
+ _SpoSiteHubSiteDisconnectCommand_instances.add(this);
28
+ __classPrivateFieldGet(this, _SpoSiteHubSiteDisconnectCommand_instances, "m", _SpoSiteHubSiteDisconnectCommand_initTelemetry).call(this);
29
+ __classPrivateFieldGet(this, _SpoSiteHubSiteDisconnectCommand_instances, "m", _SpoSiteHubSiteDisconnectCommand_initOptions).call(this);
30
+ __classPrivateFieldGet(this, _SpoSiteHubSiteDisconnectCommand_instances, "m", _SpoSiteHubSiteDisconnectCommand_initValidators).call(this);
31
31
  }
32
32
  get name() {
33
- return commands_1.default.HUBSITE_DISCONNECT;
33
+ return commands_1.default.SITE_HUBSITE_DISCONNECT;
34
34
  }
35
35
  get description() {
36
36
  return 'Disconnects the specifies site collection from its hub site';
@@ -44,7 +44,7 @@ class SpoHubSiteDisconnectCommand extends SpoCommand_1.default {
44
44
  logger.logToStderr(`Disconnecting site collection ${args.options.siteUrl} from its hubsite...`);
45
45
  }
46
46
  const requestOptions = {
47
- url: `${args.options.url}/_api/site/JoinHubSite('00000000-0000-0000-0000-000000000000')`,
47
+ url: `${args.options.siteUrl}/_api/site/JoinHubSite('00000000-0000-0000-0000-000000000000')`,
48
48
  headers: {
49
49
  'X-RequestDigest': res.FormDigestValue,
50
50
  accept: 'application/json;odata=nometadata'
@@ -74,20 +74,20 @@ class SpoHubSiteDisconnectCommand extends SpoCommand_1.default {
74
74
  });
75
75
  }
76
76
  }
77
- _SpoHubSiteDisconnectCommand_instances = new WeakSet(), _SpoHubSiteDisconnectCommand_initTelemetry = function _SpoHubSiteDisconnectCommand_initTelemetry() {
77
+ _SpoSiteHubSiteDisconnectCommand_instances = new WeakSet(), _SpoSiteHubSiteDisconnectCommand_initTelemetry = function _SpoSiteHubSiteDisconnectCommand_initTelemetry() {
78
78
  this.telemetry.push((args) => {
79
79
  Object.assign(this.telemetryProperties, {
80
80
  confirm: args.options.confirm || false
81
81
  });
82
82
  });
83
- }, _SpoHubSiteDisconnectCommand_initOptions = function _SpoHubSiteDisconnectCommand_initOptions() {
83
+ }, _SpoSiteHubSiteDisconnectCommand_initOptions = function _SpoSiteHubSiteDisconnectCommand_initOptions() {
84
84
  this.options.unshift({
85
85
  option: '-u, --siteUrl <siteUrl>'
86
86
  }, {
87
87
  option: '--confirm'
88
88
  });
89
- }, _SpoHubSiteDisconnectCommand_initValidators = function _SpoHubSiteDisconnectCommand_initValidators() {
89
+ }, _SpoSiteHubSiteDisconnectCommand_initValidators = function _SpoSiteHubSiteDisconnectCommand_initValidators() {
90
90
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () { return validation_1.validation.isValidSharePointUrl(args.options.siteUrl); }));
91
91
  };
92
- module.exports = new SpoHubSiteDisconnectCommand();
93
- //# sourceMappingURL=hubsite-disconnect.js.map
92
+ module.exports = new SpoSiteHubSiteDisconnectCommand();
93
+ //# sourceMappingURL=site-hubsite-disconnect.js.map
@@ -86,9 +86,7 @@ exports.default = {
86
86
  HOMESITE_GET: `${prefix} homesite get`,
87
87
  HOMESITE_REMOVE: `${prefix} homesite remove`,
88
88
  HOMESITE_SET: `${prefix} homesite set`,
89
- HUBSITE_CONNECT: `${prefix} hubsite connect`,
90
89
  HUBSITE_DATA_GET: `${prefix} hubsite data get`,
91
- HUBSITE_DISCONNECT: `${prefix} hubsite disconnect`,
92
90
  HUBSITE_GET: `${prefix} hubsite get`,
93
91
  HUBSITE_LIST: `${prefix} hubsite list`,
94
92
  HUBSITE_REGISTER: `${prefix} hubsite register`,
@@ -207,6 +205,8 @@ exports.default = {
207
205
  SITE_ENSURE: `${prefix} site ensure`,
208
206
  SITE_GET: `${prefix} site get`,
209
207
  SITE_GROUPIFY: `${prefix} site groupify`,
208
+ SITE_HUBSITE_DISCONNECT: `${prefix} site hubsite disconnect`,
209
+ SITE_HUBSITE_CONNECT: `${prefix} site hubsite connect`,
210
210
  SITE_LIST: `${prefix} site list`,
211
211
  SITE_INPLACERECORDSMANAGEMENT_SET: `${prefix} site inplacerecordsmanagement set`,
212
212
  SITE_RECYCLEBINITEM_LIST: `${prefix} site recyclebinitem list`,
@@ -54,10 +54,6 @@ class TeamsTeamSetCommand extends GraphCommand_1.default {
54
54
  }
55
55
  commandAction(logger, args) {
56
56
  return __awaiter(this, void 0, void 0, function* () {
57
- if (args.options.displayName) {
58
- args.options.name = args.options.displayName;
59
- this.warn(logger, `Option 'displayName' is deprecated. Please use 'name' instead.`);
60
- }
61
57
  const data = this.mapRequestBody(args.options);
62
58
  const requestOptions = {
63
59
  url: `${this.resource}/v1.0/groups/${encodeURIComponent(args.options.id)}`,
@@ -87,8 +83,6 @@ _TeamsTeamSetCommand_instances = new WeakSet(), _TeamsTeamSetCommand_initTelemet
87
83
  option: '-i, --id [id]'
88
84
  }, {
89
85
  option: '-n, --name [name]'
90
- }, {
91
- option: '--displayName [displayName]'
92
86
  }, {
93
87
  option: '--description [description]'
94
88
  }, {
@@ -113,7 +107,6 @@ _TeamsTeamSetCommand_instances = new WeakSet(), _TeamsTeamSetCommand_initTelemet
113
107
  }));
114
108
  };
115
109
  TeamsTeamSetCommand.props = [
116
- 'displayName',
117
110
  'description',
118
111
  'mailNickName',
119
112
  'classification',
@@ -0,0 +1,18 @@
1
+ ## Available settings
2
+
3
+ Following is the list of configuration settings available in CLI for Microsoft 365.
4
+
5
+ Setting name|Definition|Default value
6
+ ------------|----------|-------------
7
+ `autoOpenLinksInBrowser`|Automatically open the browser for all commands which return a url and expect the user to copy paste this to the browser. For example when logging in, using `m365 login` in device code mode.|`false`
8
+ `copyDeviceCodeToClipboard`|Automatically copy the device code to the clipboard when running `m365 login` command in device code mode|`false`
9
+ `csvEscape`|Single character used for escaping; only apply to characters matching the quote and the escape options|`"`
10
+ `csvHeader`|Display the column names on the first line|`true`
11
+ `csvQuote`|The quote characters surrounding a field. An empty quote value will preserve the original field, whether it contains quotation marks or not.|` `
12
+ `csvQuoted`|Quote all the non-empty fields even if not required|`false`
13
+ `csvQuotedEmpty`|Quote empty strings and overrides quoted_string on empty strings when defined|`false`
14
+ `errorOutput`|Defines if errors should be written to `stdout` or `stderr`|`stderr`
15
+ `output`|Defines the default output when issuing a command|`json`
16
+ `printErrorsAsPlainText`|When output mode is set to `json`, print error messages as plain-text rather than JSON|`true`
17
+ `prompt`|Prompts for missing values in required options|`false`
18
+ `showHelpOnFailure`|Automatically display help when executing a command failed|`true`
@@ -37,6 +37,9 @@ m365 outlook mail send [options]
37
37
  `--importance [importance]`
38
38
  : The importance of the message. Available options: `low`, `normal` or `high`. Default is `normal`.
39
39
 
40
+ `--attachment [attachment]`
41
+ : Path to the file that will be added as attachment to the email. This option can be used multiple times to attach multiple attachments.
42
+
40
43
  `--saveToSentItems [saveToSentItems]`
41
44
  : Save email in the sent items folder. Default `true`.
42
45
 
@@ -44,6 +47,10 @@ m365 outlook mail send [options]
44
47
 
45
48
  ## Remarks
46
49
 
50
+ ### Attachments
51
+
52
+ When using the `attachment` option, note that the total size of all attachment files cannot exceed 3 MB.
53
+
47
54
  ### If you are connected using app only authentication
48
55
 
49
56
  - Always specify a user id or upn in the `--sender` option. The email will be sent as if it came from the specified user, and can optionally be saved in the sent folder of that user account.
@@ -110,3 +117,9 @@ Send an email with cc and bcc recipients marked as important
110
117
  ```sh
111
118
  m365 outlook mail send --to chris@contoso.com --cc claire@contoso.com --bcc randy@contoso.com --subject "DG2000 Data Sheets" --bodyContents "The latest data sheets are in the team site" --importance high
112
119
  ```
120
+
121
+ Send an email with multiple attachments
122
+
123
+ ```sh
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
+ ```
@@ -16,12 +16,6 @@ m365 planner plan get [options]
16
16
  `-t, --title [title]`
17
17
  : Title of the plan. Specify either `id` or `title` but not both.
18
18
 
19
- `--planId [planId]`
20
- : (deprecated. Use `id` instead) ID of the plan. Specify either `planId` or `planTitle` but not both.
21
-
22
- `---planTitle [planTitle]`
23
- : (deprecated. Use `title` instead) Title of the plan. Specify either `planId` or `planTitle` but not both.
24
-
25
19
  `--ownerGroupId [ownerGroupId]`
26
20
  : ID of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` when using `title` or the deprecated `planTitle`.
27
21
 
@@ -22,9 +22,6 @@ m365 planner task details get [options]
22
22
  `-t, --title [title]`
23
23
  : Title of the task. Specify either `id` or `title` but not both.
24
24
 
25
- `--taskId [taskId]`
26
- : (deprecated. Use `id` instead) ID of the task.
27
-
28
25
  `--bucketId [bucketId]`
29
26
  : ID of the bucket to which the task belongs. Specify `bucketId` or `bucketName` when using `title`.
30
27
 
@@ -14,19 +14,13 @@ m365 spo list webhook list [options]
14
14
  : URL of the site where the list is located.
15
15
 
16
16
  `-i, --listId [listId]`
17
- : ID of the list. Specify either `id`, `title`, `listTitle`, `listId` or `listUrl`.
17
+ : ID of the list. Specify either `listTitle`, `listId` or `listUrl`.
18
18
 
19
19
  `-t, --listTitle [listTitle]`
20
- : Title of the list. Specify either `id`, `title`, `listTitle`, `listId` or `listUrl`.
20
+ : Title of the list. Specify either `listTitle`, `listId` or `listUrl`.
21
21
 
22
22
  `--listUrl [listUrl]`
23
- : Server- or site-relative URL of the list. Specify either `id`, `title`, `listTitle`, `listId` or `listUrl`.
24
-
25
- `--id [id]`
26
- : (deprecated. Use `listId` instead) ID of the list to retrieve all webhooks for. Specify either `id`, `title`, `listTitle`, `listId` or `listUrl`.
27
-
28
- `--title [title]`
29
- : (deprecated. Use `listTitle` instead) Title of the list to retrieve all webhooks for. Specify either `id`, `title`, `listTitle`, `listId` or `listUrl`.
23
+ : Server- or site-relative URL of the list. Specify either `listTitle`, `listId` or `listUrl`.
30
24
 
31
25
  --8<-- "docs/cmd/_global.md"
32
26
 
@@ -46,9 +46,6 @@ m365 spo site add [options]
46
46
  `--siteDesignId [siteDesignId]`
47
47
  : Id of the custom site design to use to create the site. When creating a communication site, specify either `siteDesign` or `siteDesignId` (applies to type CommunicationSite)
48
48
 
49
- `--allowFileSharingForGuestUsers`
50
- : (deprecated. Use `shareByEmailEnabled` instead) Determines whether it's allowed to share file with guests (applies to type CommunicationSite)
51
-
52
49
  `--shareByEmailEnabled`
53
50
  : Determines whether it's allowed to share file with guests (applies to type CommunicationSite)
54
51
 
@@ -1,11 +1,11 @@
1
- # spo hubsite connect
1
+ # spo site hubsite connect
2
2
 
3
3
  Connects the specified site collection to the given hub site
4
4
 
5
5
  ## Usage
6
6
 
7
7
  ```sh
8
- m365 spo hubsite connect [options]
8
+ m365 spo site hubsite connect [options]
9
9
  ```
10
10
 
11
11
  ## Options
@@ -29,10 +29,10 @@ If the specified `id` doesn't point to a valid hub site, you will get a `Resourc
29
29
 
30
30
  ## Examples
31
31
 
32
- Connect the site collection with URL _https://contoso.sharepoint.com/sites/contoso-sales_ to the hub site with ID _255a50b2-527f-4413-8485-57f4c17a24d1_
32
+ Connect a specific site collection to a hub site
33
33
 
34
34
  ```sh
35
- m365 spo hubsite connect --siteUrl https://contoso.sharepoint.com/sites/contoso-sales --id 255a50b2-527f-4413-8485-57f4c17a24d1
35
+ m365 spo site hubsite connect --siteUrl https://contoso.sharepoint.com/sites/contoso-sales --id 255a50b2-527f-4413-8485-57f4c17a24d1
36
36
  ```
37
37
 
38
38
  ## More information
@@ -1,11 +1,11 @@
1
- # spo hubsite disconnect
1
+ # spo site hubsite disconnect
2
2
 
3
3
  Disconnects the specified site collection from its hub site
4
4
 
5
5
  ## Usage
6
6
 
7
7
  ```sh
8
- m365 spo hubsite disconnect [options]
8
+ m365 spo site hubsite disconnect [options]
9
9
  ```
10
10
 
11
11
  ## Options
@@ -14,7 +14,7 @@ m365 spo hubsite disconnect [options]
14
14
  : URL of the site collection to disconnect from its hub site
15
15
 
16
16
  `--confirm`
17
- : Don't prompt for confirming disconnecting from the hub site
17
+ : Don't prompt for confirmation
18
18
 
19
19
  --8<-- "docs/cmd/_global.md"
20
20
 
@@ -25,16 +25,16 @@ m365 spo hubsite disconnect [options]
25
25
 
26
26
  ## Examples
27
27
 
28
- Disconnect the site collection with URL _https://contoso.sharepoint.com/sites/sales_ from its hub site. Will prompt for confirmation before disconnecting from the hub site.
28
+ Disconnect a specific site collection from its hub site. Will prompt for confirmation before disconnecting from the hub site.
29
29
 
30
30
  ```sh
31
- m365 spo hubsite disconnect --siteUrl https://contoso.sharepoint.com/sites/sales
31
+ m365 spo site hubsite disconnect --siteUrl https://contoso.sharepoint.com/sites/sales
32
32
  ```
33
33
 
34
- Disconnect the site collection with URL _https://contoso.sharepoint.com/sites/sales_ from its hub site without prompting for confirmation
34
+ Disconnect a specific site collection from its hub site without prompting for confirmation.
35
35
 
36
36
  ```sh
37
- m365 spo hubsite disconnect --siteUrl https://contoso.sharepoint.com/sites/sales --confirm
37
+ m365 spo site hubsite disconnect --siteUrl https://contoso.sharepoint.com/sites/sales --confirm
38
38
  ```
39
39
 
40
40
  ## More information
@@ -16,9 +16,6 @@ m365 teams team clone [options]
16
16
  `-n, --name [name]`
17
17
  : The display name for the new Microsoft Teams Team to clone
18
18
 
19
- `--displayName [displayName]`
20
- : (deprecated. Use `name` instead) The display name for the new Microsoft Teams Team to clone
21
-
22
19
  `-p, --partsToClone <partsToClone>`
23
20
  : A comma-separated list of the parts to clone. Allowed values are `apps,channels,members,settings,tabs`
24
21
 
@@ -16,9 +16,6 @@ m365 teams team set [options]
16
16
  `-n, --name [name]`
17
17
  : The display name for the Microsoft Teams team for which to update settings
18
18
 
19
- `--displayName [displayName]`
20
- : (deprecated. Use `name` instead) The display name for the Microsoft Teams team for which to update settings
21
-
22
19
  `--description [description]`
23
20
  : The description for the Microsoft Teams team
24
21
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "6.0.0-beta.a0a813f",
3
+ "version": "6.0.0-beta.b5f756a",
4
4
  "description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/api.js",