@pnp/cli-microsoft365 6.0.0-beta.db5e64c → 6.0.0-beta.de4f962

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.
@@ -34,9 +34,6 @@ class AadO365GroupRecycleBinItemRestoreCommand extends GraphCommand_1.default {
34
34
  get description() {
35
35
  return 'Restores a deleted Microsoft 365 Group';
36
36
  }
37
- alias() {
38
- return [commands_1.default.O365GROUP_RESTORE];
39
- }
40
37
  commandAction(logger, args, cb) {
41
38
  if (this.verbose) {
42
39
  logger.logToStderr(`Restoring Microsoft 365 Group: ${args.options.id || args.options.displayName || args.options.mailNickname}...`);
@@ -38,7 +38,6 @@ exports.default = {
38
38
  O365GROUP_REPORT_ACTIVITYFILECOUNTS: `${prefix} o365group report activityfilecounts`,
39
39
  O365GROUP_REPORT_ACTIVITYGROUPCOUNTS: `${prefix} o365group report activitygroupcounts`,
40
40
  O365GROUP_REPORT_ACTIVITYSTORAGE: `${prefix} o365group report activitystorage`,
41
- O365GROUP_RESTORE: `${prefix} o365group restore`,
42
41
  O365GROUP_USER_ADD: `${prefix} o365group user add`,
43
42
  O365GROUP_USER_LIST: `${prefix} o365group user list`,
44
43
  O365GROUP_USER_REMOVE: `${prefix} o365group user remove`,
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Changelog.js.map
@@ -0,0 +1,160 @@
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 _GraphChangelogListCommand_instances, _GraphChangelogListCommand_initTelemetry, _GraphChangelogListCommand_initOptions, _GraphChangelogListCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const utils_1 = require("../../../../utils");
19
+ const AnonymousCommand_1 = require("../../../base/AnonymousCommand");
20
+ const commands_1 = require("../../commands");
21
+ const request_1 = require("../../../../request");
22
+ const xmldom_1 = require("@xmldom/xmldom");
23
+ class GraphChangelogListCommand extends AnonymousCommand_1.default {
24
+ constructor() {
25
+ super();
26
+ _GraphChangelogListCommand_instances.add(this);
27
+ this.allowedVersions = ['beta', 'v1.0'];
28
+ this.allowedChangeTypes = ['Addition', 'Change', 'Deletion', 'Deprecation'];
29
+ this.allowedServices = [
30
+ 'Applications', 'Calendar', 'Change notifications', 'Cloud communications',
31
+ 'Compliance', 'Cross-device experiences', 'Customer booking', 'Device and app management',
32
+ 'Education', 'Files', 'Financials', 'Groups',
33
+ 'Identity and access', 'Mail', 'Notes', 'Notifications',
34
+ 'People and workplace intelligence', 'Personal contacts', 'Reports', 'Search',
35
+ 'Security', 'Sites and lists', 'Tasks and plans', 'Teamwork',
36
+ 'To-do tasks', 'Users', 'Workbooks and charts'
37
+ ];
38
+ __classPrivateFieldGet(this, _GraphChangelogListCommand_instances, "m", _GraphChangelogListCommand_initTelemetry).call(this);
39
+ __classPrivateFieldGet(this, _GraphChangelogListCommand_instances, "m", _GraphChangelogListCommand_initOptions).call(this);
40
+ __classPrivateFieldGet(this, _GraphChangelogListCommand_instances, "m", _GraphChangelogListCommand_initValidators).call(this);
41
+ }
42
+ get name() {
43
+ return commands_1.default.CHANGELOG_LIST;
44
+ }
45
+ get description() {
46
+ return 'Gets an overview of specific API-level changes in Microsoft Graph v1.0 and beta';
47
+ }
48
+ defaultProperties() {
49
+ return ['category', 'title', 'description'];
50
+ }
51
+ commandAction(logger, args, cb) {
52
+ const allowedChangeType = args.options.changeType && this.allowedChangeTypes.find(x => x.toLocaleLowerCase() === args.options.changeType.toLocaleLowerCase());
53
+ const searchParam = args.options.changeType ? `/?filterBy=${allowedChangeType}` : '';
54
+ const requestOptions = {
55
+ url: `https://developer.microsoft.com/en-us/graph/changelog/rss${searchParam}`,
56
+ headers: {
57
+ 'accept': 'text/xml',
58
+ 'x-anonymous': 'true'
59
+ }
60
+ };
61
+ request_1.default
62
+ .get(requestOptions)
63
+ .then((output) => {
64
+ const parser = new xmldom_1.DOMParser();
65
+ const xmlDoc = parser.parseFromString(output.toString(), "text/xml");
66
+ const changelog = this.filterThroughOptions(args.options, this.mapChangelog(xmlDoc, args));
67
+ logger.log(changelog.items);
68
+ cb();
69
+ }, (err) => this.handleRejectedODataJsonPromise(err, logger, cb));
70
+ }
71
+ filterThroughOptions(options, changelog) {
72
+ let items = changelog.items;
73
+ if (options.services) {
74
+ const allowedServices = this.allowedServices
75
+ .filter(allowedService => options.services.toLocaleLowerCase().split(',').includes(allowedService.toLocaleLowerCase()));
76
+ items = changelog.items.filter(item => allowedServices.includes(item.title));
77
+ }
78
+ if (options.versions) {
79
+ const allowedVersions = this.allowedVersions
80
+ .filter(allowedVersion => options.versions.toLocaleLowerCase().split(',').includes(allowedVersion.toLocaleLowerCase()));
81
+ items = items.filter(item => allowedVersions.includes(item.category));
82
+ }
83
+ if (options.startDate) {
84
+ const startDate = new Date(options.startDate);
85
+ items = items.filter(item => item.pubDate >= startDate);
86
+ }
87
+ if (options.endDate) {
88
+ const endDate = new Date(options.endDate);
89
+ items = items.filter(item => item.pubDate <= endDate);
90
+ }
91
+ // Make sure everything is unique based on the item guid
92
+ items = [...new Map(items.map((item) => [item.guid, item])).values()];
93
+ changelog.items = items.sort((itemA, itemB) => Number(itemB.pubDate) - Number(itemA.pubDate));
94
+ return changelog;
95
+ }
96
+ mapChangelog(xmlDoc, args) {
97
+ const channel = xmlDoc.getElementsByTagName('channel').item(0);
98
+ const changelog = {
99
+ title: channel.getElementsByTagName('title').item(0).textContent,
100
+ description: channel.getElementsByTagName('description').item(0).textContent,
101
+ url: channel.getElementsByTagName('link').item(0).textContent,
102
+ items: []
103
+ };
104
+ Array.from(xmlDoc.getElementsByTagName('item')).forEach((item) => {
105
+ const description = args.options.output === 'text' ?
106
+ utils_1.md.md2plain(item.getElementsByTagName('description').item(0).textContent, '') :
107
+ item.getElementsByTagName('description').item(0).textContent;
108
+ changelog.items.push({
109
+ guid: item.getElementsByTagName('guid').item(0).textContent,
110
+ category: item.getElementsByTagName('category').item(1).textContent,
111
+ title: item.getElementsByTagName('title').item(0).textContent,
112
+ description: args.options.output === 'text' ?
113
+ description.length > 50 ? `${description.substring(0, 47)}...` : description :
114
+ description,
115
+ pubDate: new Date(item.getElementsByTagName('pubDate').item(0).textContent)
116
+ });
117
+ });
118
+ return changelog;
119
+ }
120
+ }
121
+ _GraphChangelogListCommand_instances = new WeakSet(), _GraphChangelogListCommand_initTelemetry = function _GraphChangelogListCommand_initTelemetry() {
122
+ this.telemetry.push((args) => {
123
+ Object.assign(this.telemetryProperties, {
124
+ versions: typeof args.options.versions !== 'undefined',
125
+ changeType: typeof args.options.changeType !== 'undefined',
126
+ services: typeof args.options.services !== 'undefined',
127
+ startDate: typeof args.options.startDate !== 'undefined',
128
+ endDate: typeof args.options.endDate !== 'undefined'
129
+ });
130
+ });
131
+ }, _GraphChangelogListCommand_initOptions = function _GraphChangelogListCommand_initOptions() {
132
+ this.options.unshift({ option: '-v, --versions [versions]', autocomplete: this.allowedVersions }, { option: "-c, --changeType [changeType]", autocomplete: this.allowedChangeTypes }, { option: "-s, --services [services]", autocomplete: this.allowedServices }, { option: "--startDate [startDate]" }, { option: "--endDate [endDate]" });
133
+ }, _GraphChangelogListCommand_initValidators = function _GraphChangelogListCommand_initValidators() {
134
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
135
+ if (args.options.versions &&
136
+ args.options.versions.toLocaleLowerCase().split(',').some(x => !this.allowedVersions.map(y => y.toLocaleLowerCase()).includes(x))) {
137
+ return `The verions contains an invalid value. Specify either ${this.allowedVersions.join(', ')} as properties`;
138
+ }
139
+ if (args.options.changeType &&
140
+ !this.allowedChangeTypes.map(x => x.toLocaleLowerCase()).includes(args.options.changeType.toLocaleLowerCase())) {
141
+ return `The change type contain an invalid value. Specify either ${this.allowedChangeTypes.join(', ')} as properties`;
142
+ }
143
+ if (args.options.services &&
144
+ args.options.services.toLocaleLowerCase().split(',').some(x => !this.allowedServices.map(y => y.toLocaleLowerCase()).includes(x))) {
145
+ return `The services contains invalid value. Specify either ${this.allowedServices.join(', ')} as properties`;
146
+ }
147
+ if (args.options.startDate && !utils_1.validation.isValidISODate(args.options.startDate)) {
148
+ return 'The startDate is not a valid ISO date string';
149
+ }
150
+ if (args.options.endDate && !utils_1.validation.isValidISODate(args.options.endDate)) {
151
+ return 'The endDate is not a valid ISO date string';
152
+ }
153
+ if (args.options.endDate && args.options.startDate && new Date(args.options.endDate) < new Date(args.options.startDate)) {
154
+ return 'The endDate should be later than startDate';
155
+ }
156
+ return true;
157
+ }));
158
+ };
159
+ module.exports = new GraphChangelogListCommand();
160
+ //# sourceMappingURL=changelog-list.js.map
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const prefix = 'graph';
4
4
  exports.default = {
5
+ CHANGELOG_LIST: `${prefix} changelog list`,
5
6
  SCHEMAEXTENSION_ADD: `${prefix} schemaextension add`,
6
7
  SCHEMAEXTENSION_GET: `${prefix} schemaextension get`,
7
8
  SCHEMAEXTENSION_LIST: `${prefix} schemaextension list`,
@@ -32,9 +32,6 @@ class OutlookMailSendCommand extends GraphCommand_1.default {
32
32
  get description() {
33
33
  return 'Sends e-mail on behalf of the current user';
34
34
  }
35
- alias() {
36
- return [commands_1.default.SENDMAIL];
37
- }
38
35
  commandAction(logger, args, cb) {
39
36
  const bodyContents = args.options.bodyContents;
40
37
  const requestOptions = {
@@ -17,7 +17,6 @@ exports.default = {
17
17
  REPORT_MAILBOXUSAGEQUOTASTATUSMAILBOXCOUNTS: `${prefix} report mailboxusagequotastatusmailboxcounts`,
18
18
  REPORT_MAILBOXUSAGESTORAGE: `${prefix} report mailboxusagestorage`,
19
19
  ROOM_LIST: `${prefix} room list`,
20
- ROOMLIST_LIST: `${prefix} roomlist list`,
21
- SENDMAIL: `${prefix} sendmail`
20
+ ROOMLIST_LIST: `${prefix} roomlist list`
22
21
  };
23
22
  //# sourceMappingURL=commands.js.map
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const FN001008_DEP_react_1 = require("./rules/FN001008_DEP_react");
4
+ const FN001009_DEP_react_dom_1 = require("./rules/FN001009_DEP_react_dom");
5
+ const FN001022_DEP_office_ui_fabric_react_1 = require("./rules/FN001022_DEP_office_ui_fabric_react");
6
+ const FN002004_DEVDEP_gulp_1 = require("./rules/FN002004_DEVDEP_gulp");
7
+ const FN002007_DEVDEP_ajv_1 = require("./rules/FN002007_DEVDEP_ajv");
8
+ const FN002013_DEVDEP_types_webpack_env_1 = require("./rules/FN002013_DEVDEP_types_webpack_env");
9
+ const FN002015_DEVDEP_types_react_1 = require("./rules/FN002015_DEVDEP_types_react");
10
+ const FN002016_DEVDEP_types_react_dom_1 = require("./rules/FN002016_DEVDEP_types_react_dom");
11
+ const FN002019_DEVDEP_microsoft_rush_stack_compiler_1 = require("./rules/FN002019_DEVDEP_microsoft_rush_stack_compiler");
12
+ module.exports = [
13
+ new FN001008_DEP_react_1.FN001008_DEP_react('16'),
14
+ new FN001009_DEP_react_dom_1.FN001009_DEP_react_dom('16'),
15
+ new FN001022_DEP_office_ui_fabric_react_1.FN001022_DEP_office_ui_fabric_react('7.192.0'),
16
+ new FN002004_DEVDEP_gulp_1.FN002004_DEVDEP_gulp('4.0.2'),
17
+ new FN002007_DEVDEP_ajv_1.FN002007_DEVDEP_ajv('^6.12.5'),
18
+ new FN002013_DEVDEP_types_webpack_env_1.FN002013_DEVDEP_types_webpack_env('~1.15.2'),
19
+ new FN002015_DEVDEP_types_react_1.FN002015_DEVDEP_types_react('16'),
20
+ new FN002016_DEVDEP_types_react_dom_1.FN002016_DEVDEP_types_react_dom('16'),
21
+ new FN002019_DEVDEP_microsoft_rush_stack_compiler_1.FN002019_DEVDEP_microsoft_rush_stack_compiler(['4.5'])
22
+ ];
23
+ //# sourceMappingURL=doctor-1.16.0-beta.1.js.map
@@ -61,7 +61,8 @@ class SpfxProjectDoctorCommand extends base_project_command_1.BaseProjectCommand
61
61
  '1.13.1',
62
62
  '1.14.0',
63
63
  '1.15.0',
64
- '1.15.2'
64
+ '1.15.2',
65
+ '1.16.0-beta.1'
65
66
  ];
66
67
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
67
68
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
@@ -71,9 +71,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
71
71
  _SpfxDoctorCommand_instances.add(this);
72
72
  this.versions = {
73
73
  '1.0.0': {
74
- gulp: {
75
- range: '^3',
76
- fix: 'npm i -g gulp@3'
74
+ gulpCli: {
75
+ range: '^1 || ^2',
76
+ fix: 'npm i -g gulp-cli@2'
77
77
  },
78
78
  node: {
79
79
  range: '^6',
@@ -86,9 +86,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
86
86
  }
87
87
  },
88
88
  '1.1.0': {
89
- gulp: {
90
- range: '^3',
91
- fix: 'npm i -g gulp@3'
89
+ gulpCli: {
90
+ range: '^1 || ^2',
91
+ fix: 'npm i -g gulp-cli@2'
92
92
  },
93
93
  node: {
94
94
  range: '^6',
@@ -101,9 +101,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
101
101
  }
102
102
  },
103
103
  '1.2.0': {
104
- gulp: {
105
- range: '^3',
106
- fix: 'npm i -g gulp@3'
104
+ gulpCli: {
105
+ range: '^1 || ^2',
106
+ fix: 'npm i -g gulp-cli@2'
107
107
  },
108
108
  node: {
109
109
  range: '^6',
@@ -116,9 +116,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
116
116
  }
117
117
  },
118
118
  '1.4.0': {
119
- gulp: {
120
- range: '^3',
121
- fix: 'npm i -g gulp@3'
119
+ gulpCli: {
120
+ range: '^1 || ^2',
121
+ fix: 'npm i -g gulp-cli@2'
122
122
  },
123
123
  node: {
124
124
  range: '^6',
@@ -131,9 +131,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
131
131
  }
132
132
  },
133
133
  '1.4.1': {
134
- gulp: {
135
- range: '^3',
136
- fix: 'npm i -g gulp@3'
134
+ gulpCli: {
135
+ range: '^1 || ^2',
136
+ fix: 'npm i -g gulp-cli@2'
137
137
  },
138
138
  node: {
139
139
  range: '^6 || ^8',
@@ -146,9 +146,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
146
146
  }
147
147
  },
148
148
  '1.5.0': {
149
- gulp: {
150
- range: '^3',
151
- fix: 'npm i -g gulp@3'
149
+ gulpCli: {
150
+ range: '^1 || ^2',
151
+ fix: 'npm i -g gulp-cli@2'
152
152
  },
153
153
  node: {
154
154
  range: '^6 || ^8',
@@ -161,9 +161,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
161
161
  }
162
162
  },
163
163
  '1.5.1': {
164
- gulp: {
165
- range: '^3',
166
- fix: 'npm i -g gulp@3'
164
+ gulpCli: {
165
+ range: '^1 || ^2',
166
+ fix: 'npm i -g gulp-cli@2'
167
167
  },
168
168
  node: {
169
169
  range: '^6 || ^8',
@@ -176,9 +176,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
176
176
  }
177
177
  },
178
178
  '1.6.0': {
179
- gulp: {
180
- range: '^3',
181
- fix: 'npm i -g gulp@3'
179
+ gulpCli: {
180
+ range: '^1 || ^2',
181
+ fix: 'npm i -g gulp-cli@2'
182
182
  },
183
183
  node: {
184
184
  range: '^6 || ^8',
@@ -191,9 +191,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
191
191
  }
192
192
  },
193
193
  '1.7.0': {
194
- gulp: {
195
- range: '^3',
196
- fix: 'npm i -g gulp@3'
194
+ gulpCli: {
195
+ range: '^1 || ^2',
196
+ fix: 'npm i -g gulp-cli@2'
197
197
  },
198
198
  node: {
199
199
  range: '^8',
@@ -206,9 +206,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
206
206
  }
207
207
  },
208
208
  '1.7.1': {
209
- gulp: {
210
- range: '^3',
211
- fix: 'npm i -g gulp@3'
209
+ gulpCli: {
210
+ range: '^1 || ^2',
211
+ fix: 'npm i -g gulp-cli@2'
212
212
  },
213
213
  node: {
214
214
  range: '^8',
@@ -221,9 +221,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
221
221
  }
222
222
  },
223
223
  '1.8.0': {
224
- gulp: {
225
- range: '^3',
226
- fix: 'npm i -g gulp@3'
224
+ gulpCli: {
225
+ range: '^1 || ^2',
226
+ fix: 'npm i -g gulp-cli@2'
227
227
  },
228
228
  node: {
229
229
  range: '^8',
@@ -236,9 +236,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
236
236
  }
237
237
  },
238
238
  '1.8.1': {
239
- gulp: {
240
- range: '^3',
241
- fix: 'npm i -g gulp@3'
239
+ gulpCli: {
240
+ range: '^1 || ^2',
241
+ fix: 'npm i -g gulp-cli@2'
242
242
  },
243
243
  node: {
244
244
  range: '^8',
@@ -251,9 +251,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
251
251
  }
252
252
  },
253
253
  '1.8.2': {
254
- gulp: {
255
- range: '^3',
256
- fix: 'npm i -g gulp@3'
254
+ gulpCli: {
255
+ range: '^1 || ^2',
256
+ fix: 'npm i -g gulp-cli@2'
257
257
  },
258
258
  node: {
259
259
  range: '^8 || ^10',
@@ -266,9 +266,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
266
266
  }
267
267
  },
268
268
  '1.9.0': {
269
- gulp: {
270
- range: '^3',
271
- fix: 'npm i -g gulp@3'
269
+ gulpCli: {
270
+ range: '^1 || ^2',
271
+ fix: 'npm i -g gulp-cli@2'
272
272
  },
273
273
  node: {
274
274
  range: '^8 || ^10',
@@ -281,9 +281,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
281
281
  }
282
282
  },
283
283
  '1.9.1': {
284
- gulp: {
285
- range: '^3',
286
- fix: 'npm i -g gulp@3'
284
+ gulpCli: {
285
+ range: '^1 || ^2',
286
+ fix: 'npm i -g gulp-cli@2'
287
287
  },
288
288
  node: {
289
289
  range: '^10',
@@ -296,9 +296,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
296
296
  }
297
297
  },
298
298
  '1.10.0': {
299
- gulp: {
300
- range: '^3',
301
- fix: 'npm i -g gulp@3'
299
+ gulpCli: {
300
+ range: '^1 || ^2',
301
+ fix: 'npm i -g gulp-cli@2'
302
302
  },
303
303
  node: {
304
304
  range: '^10',
@@ -311,9 +311,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
311
311
  }
312
312
  },
313
313
  '1.11.0': {
314
- gulp: {
315
- range: '^3',
316
- fix: 'npm i -g gulp@3'
314
+ gulpCli: {
315
+ range: '^1 || ^2',
316
+ fix: 'npm i -g gulp-cli@2'
317
317
  },
318
318
  node: {
319
319
  range: '^10',
@@ -326,9 +326,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
326
326
  }
327
327
  },
328
328
  '1.12.0': {
329
- gulp: {
330
- range: '^4',
331
- fix: 'npm i -g gulp@4'
329
+ gulpCli: {
330
+ range: '^1 || ^2',
331
+ fix: 'npm i -g gulp-cli@2'
332
332
  },
333
333
  node: {
334
334
  range: '^12',
@@ -341,9 +341,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
341
341
  }
342
342
  },
343
343
  '1.12.1': {
344
- gulp: {
345
- range: '^4',
346
- fix: 'npm i -g gulp@4'
344
+ gulpCli: {
345
+ range: '^1 || ^2',
346
+ fix: 'npm i -g gulp-cli@2'
347
347
  },
348
348
  node: {
349
349
  range: '^12 || ^14',
@@ -356,9 +356,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
356
356
  }
357
357
  },
358
358
  '1.13.0': {
359
- gulp: {
360
- range: '^4',
361
- fix: 'npm i -g gulp@4'
359
+ gulpCli: {
360
+ range: '^1 || ^2',
361
+ fix: 'npm i -g gulp-cli@2'
362
362
  },
363
363
  node: {
364
364
  range: '^12 || ^14',
@@ -371,9 +371,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
371
371
  }
372
372
  },
373
373
  '1.13.1': {
374
- gulp: {
375
- range: '^4',
376
- fix: 'npm i -g gulp@4'
374
+ gulpCli: {
375
+ range: '^1 || ^2',
376
+ fix: 'npm i -g gulp-cli@2'
377
377
  },
378
378
  node: {
379
379
  range: '^12 || ^14',
@@ -386,9 +386,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
386
386
  }
387
387
  },
388
388
  '1.14.0': {
389
- gulp: {
390
- range: '^4',
391
- fix: 'npm i -g gulp@4'
389
+ gulpCli: {
390
+ range: '^1 || ^2',
391
+ fix: 'npm i -g gulp-cli@2'
392
392
  },
393
393
  node: {
394
394
  range: '^12 || ^14',
@@ -401,9 +401,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
401
401
  }
402
402
  },
403
403
  '1.15.0': {
404
- gulp: {
405
- range: '^4',
406
- fix: 'npm i -g gulp@4'
404
+ gulpCli: {
405
+ range: '^1 || ^2',
406
+ fix: 'npm i -g gulp-cli@2'
407
407
  },
408
408
  node: {
409
409
  range: '^12.13 || ^14.15 || ^16.13',
@@ -416,9 +416,9 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
416
416
  }
417
417
  },
418
418
  '1.15.2': {
419
- gulp: {
420
- range: '^4',
421
- fix: 'npm i -g gulp@4'
419
+ gulpCli: {
420
+ range: '^1 || ^2',
421
+ fix: 'npm i -g gulp-cli@2'
422
422
  },
423
423
  node: {
424
424
  range: '^12.13 || ^14.15 || ^16.13',
@@ -472,7 +472,8 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
472
472
  .then(_ => this.checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger))
473
473
  .then(_ => this.checkNodeVersion(prerequisites, fixes, logger))
474
474
  .then(_ => this.checkYo(prerequisites, fixes, logger))
475
- .then(_ => this.checkGulp(prerequisites, fixes, logger))
475
+ .then(_ => this.checkGulp(fixes, logger))
476
+ .then(_ => this.checkGulpCli(prerequisites, fixes, logger))
476
477
  .then(_ => this.checkTypeScript(fixes, logger))
477
478
  .then(_ => {
478
479
  if (fixes.length > 0) {
@@ -534,16 +535,26 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
534
535
  }
535
536
  });
536
537
  }
537
- checkGulp(prerequisites, fixes, logger) {
538
+ checkGulpCli(prerequisites, fixes, logger) {
539
+ return this
540
+ .getPackageVersion('gulp-cli', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
541
+ .then((gulpCliVersion) => {
542
+ if (gulpCliVersion) {
543
+ this.checkStatus('gulp-cli', gulpCliVersion, prerequisites.gulpCli, OptionalOrRequired.Required, fixes, logger);
544
+ }
545
+ else {
546
+ logger.log(this.getStatus(CheckStatus.Failure, `gulp-cli not found`));
547
+ fixes.push(prerequisites.gulpCli.fix);
548
+ }
549
+ });
550
+ }
551
+ checkGulp(fixes, logger) {
538
552
  return this
539
553
  .getPackageVersion('gulp', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
540
554
  .then((gulpVersion) => {
541
555
  if (gulpVersion) {
542
- this.checkStatus('gulp', gulpVersion, prerequisites.gulp, OptionalOrRequired.Required, fixes, logger);
543
- }
544
- else {
545
- logger.log(this.getStatus(CheckStatus.Failure, `gulp not found`));
546
- fixes.push(prerequisites.gulp.fix);
556
+ logger.log(this.getStatus(CheckStatus.Failure, `gulp should be removed`));
557
+ fixes.push('npm un -g gulp');
547
558
  }
548
559
  });
549
560
  }
@@ -36,11 +36,7 @@ class TeamsChannelMemberAddCommand extends GraphCommand_1.default {
36
36
  get description() {
37
37
  return 'Adds a conversation member in a private channel.';
38
38
  }
39
- alias() {
40
- return [commands_1.default.CONVERSATIONMEMBER_ADD];
41
- }
42
39
  commandAction(logger, args, cb) {
43
- this.showDeprecationWarning(logger, commands_1.default.CONVERSATIONMEMBER_ADD, commands_1.default.CHANNEL_MEMBER_ADD);
44
40
  let teamId = '';
45
41
  let channelId = '';
46
42
  this
@@ -36,14 +36,10 @@ class TeamsChannelMemberListCommand extends GraphCommand_1.default {
36
36
  get description() {
37
37
  return 'Lists members of the specified Microsoft Teams team channel';
38
38
  }
39
- alias() {
40
- return [commands_1.default.CONVERSATIONMEMBER_LIST];
41
- }
42
39
  defaultProperties() {
43
40
  return ['id', 'roles', 'displayName', 'userId', 'email'];
44
41
  }
45
42
  commandAction(logger, args, cb) {
46
- this.showDeprecationWarning(logger, commands_1.default.CONVERSATIONMEMBER_LIST, commands_1.default.CHANNEL_MEMBER_LIST);
47
43
  this
48
44
  .getTeamId(args)
49
45
  .then((teamId) => {
@@ -38,11 +38,7 @@ class TeamsChannelMemberRemoveCommand extends GraphCommand_1.default {
38
38
  get description() {
39
39
  return 'Updates the role of the specified member in the specified Microsoft Teams private team channel';
40
40
  }
41
- alias() {
42
- return [commands_1.default.CONVERSATIONMEMBER_REMOVE];
43
- }
44
41
  commandAction(logger, args, cb) {
45
- this.showDeprecationWarning(logger, commands_1.default.CONVERSATIONMEMBER_REMOVE, commands_1.default.CHANNEL_MEMBER_REMOVE);
46
42
  const removeMember = () => {
47
43
  this
48
44
  .removeMemberFromChannel(args)
@@ -23,9 +23,6 @@ exports.default = {
23
23
  CHAT_MEMBER_LIST: `${prefix} chat member list`,
24
24
  CHAT_MESSAGE_LIST: `${prefix} chat message list`,
25
25
  CHAT_MESSAGE_SEND: `${prefix} chat message send`,
26
- CONVERSATIONMEMBER_ADD: `${prefix} conversationmember add`,
27
- CONVERSATIONMEMBER_LIST: `${prefix} conversationmember list`,
28
- CONVERSATIONMEMBER_REMOVE: `${prefix} conversationmember remove`,
29
26
  FUNSETTINGS_LIST: `${prefix} funsettings list`,
30
27
  FUNSETTINGS_SET: `${prefix} funsettings set`,
31
28
  GUESTSETTINGS_LIST: `${prefix} guestsettings list`,
@@ -1,4 +1,4 @@
1
- # aad o365group restore
1
+ # aad o365group recyclebinitem restore
2
2
 
3
3
  Restores a deleted Microsoft 365 Group
4
4
 
@@ -8,12 +8,6 @@ Restores a deleted Microsoft 365 Group
8
8
  m365 aad o365group recyclebinitem restore [options]
9
9
  ```
10
10
 
11
- ## Alias
12
-
13
- ```sh
14
- m365 aad o365group restore [options]
15
- ```
16
-
17
11
  ## Options
18
12
 
19
13
  `-i, --id [id]`
@@ -0,0 +1,53 @@
1
+ # graph changelog list
2
+
3
+ Gets an overview of specific API-level changes in Microsoft Graph v1.0 and beta
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 graph changelog list [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `-v, --versions [versions]`
14
+ : Comma-separated list of versions to show changes for. `Beta, v1.0`. When no version is selected all versions are returned.
15
+
16
+ `-c, --changeType [changeType]`
17
+ : Change type to show changes for. `Addition, Change, Deletion`. When no changeType is selected all change types are returned.
18
+
19
+ `-s, --services [services]`
20
+ : Comma-separated list of services to show changes for. `Applications, Calendar, Change notifications, Cloud communications, Compliance, Cross-device experiences, Customer booking, Device and app management, Education, Files, Financials, Groups, Identity and access, Mail, Notes, Notifications, People and workplace intelligence, Personal contacts, Reports, Search, Security, Sites and lists, Tasks and plans, Teamwork, To-do tasks, Users, Workbooks and charts`. When no service is selected all services are returned.
21
+
22
+ `--startDate [startDate]`
23
+ : The startdate used to query for changes. Supported date format is `YYYY-MM-DD`. When no date is specified all changes are returned.
24
+
25
+ `--endDate [endDate]`
26
+ : The enddate used to query for changes. Supported date format is `YYYY-MM-DD`. When no date is specified all changes are returned.
27
+
28
+ --8<-- "docs/cmd/_global.md"
29
+
30
+ ## Remarks
31
+
32
+ !!! attention
33
+ This command is based on an API that is currently in preview and is subject to change once the API reached general availability.
34
+
35
+ ## Examples
36
+
37
+ Get all changes within Microsoft Graph.
38
+
39
+ ```sh
40
+ m365 graph changelog list
41
+ ```
42
+
43
+ Get all changes within Microsoft Graph for the services _Groups_ and _Users_.
44
+
45
+ ```sh
46
+ m365 graph changelog list --services 'Groups,Users'
47
+ ```
48
+
49
+ Get all changes within Microsoft Graph that happend between _2021-01-01_ and _2021-05-01_.
50
+
51
+ ```sh
52
+ m365 graph changelog list --startDate '2021-01-01' --endDate '2021-05-01'
53
+ ```
@@ -1,4 +1,4 @@
1
- # outlook sendmail
1
+ # outlook mail send
2
2
 
3
3
  Sends e-mail on behalf of the current user
4
4
 
@@ -8,12 +8,6 @@ Sends e-mail on behalf of the current user
8
8
  m365 outlook mail send [options]
9
9
  ```
10
10
 
11
- ## Alias
12
-
13
- ```sh
14
- m365 outlook sendmail [options]
15
- ```
16
-
17
11
  ## Options
18
12
 
19
13
  `-s, --subject <subject>`
@@ -37,7 +37,7 @@ This commands helps you to verify if your environment meets all prerequisites fo
37
37
 
38
38
  The command starts by detecting the version of SharePoint Framework that you want to use. First, it looks at the current project. If you didn't run the command in the context of a SharePoint Framework project, the command will try to determine the SharePoint Framework version based on the SharePoint Framework Yeoman generator that you have installed either in the current directory or globally.
39
39
 
40
- Based on the determined version of the SharePoint Framework, the command will look at other dependencies such as Node.js, npm, Yeoman, Gulp and TypeScript to verify if their meet the requirements of that particular version of the SharePoint Framework.
40
+ Based on the determined version of the SharePoint Framework, the command will look at other dependencies such as Node.js, npm, Yeoman, Gulp CLI and TypeScript to verify if their meet the requirements of that particular version of the SharePoint Framework.
41
41
 
42
42
  If you miss any required tools or use a version that doesn't meet the SharePoint Framework requirements, the command will give you a list of recommendation how to address these issues.
43
43
 
@@ -51,11 +51,11 @@ Next to verifying the readiness of your environment to use a particular version
51
51
  Verify if your environment meets the requirements to work with the SharePoint Framework
52
52
 
53
53
  ```sh
54
- m365 spfx doctor
54
+ m365 spfx doctor --output text
55
55
  ```
56
56
 
57
57
  Verify if your environment meets the requirements to work with the SharePoint Framework and also if the version of the SharePoint Framework that you're using is compatible with SharePoint 2019
58
58
 
59
59
  ```sh
60
- m365 spfx doctor --env sp2019
60
+ m365 spfx doctor --env sp2019 --output text
61
61
  ```
@@ -87,9 +87,9 @@ The value of the `--storageQuota` option must not exceed the company's available
87
87
 
88
88
  The value of the `--storageQuotaWarningLevel` option must not exceed the the value of the `--storageQuota` option.
89
89
 
90
- If you try to create a site with the same URL as a site that has been previously moved to the recycle bin, you will get an error. To avoid this error, you can use the `--removeDeletedSite` option. Prior to creating the site, the spo site classic add command will check if the site with the specified URL has been previously moved to the recycle bin and if so, will remove it. Because removing sites from the recycle bin might take a moment, it should be used in conjunction with the `--wait` option so that the new site is not created before the old site is fully removed.
90
+ If you try to create a site with the same URL as a site that has been previously moved to the recycle bin, you will get an error. To avoid this error, you can use the `--removeDeletedSite` option. Prior to creating the site, the spo site add command will check if the site with the specified URL has been previously moved to the recycle bin and if so, will remove it. Because removing sites from the recycle bin might take a moment, it should be used in conjunction with the `--wait` option so that the new site is not created before the old site is fully removed.
91
91
 
92
- Deleting and creating classic site collections is by default asynchronous and depending on the current state of Office 365, might take up to few minutes. If you're building a script with steps that require the site to be fully provisioned, you should use the `--wait` flag. When using this flag, the spo site classic add command will keep running until it received confirmation from Office 365 that the site has been fully provisioned.
92
+ Deleting and creating classic site collections is by default asynchronous and depending on the current state of Office 365, might take up to few minutes. If you're building a script with steps that require the site to be fully provisioned, you should use the `--wait` flag. When using this flag, the spo site add command will keep running until it received confirmation from Office 365 that the site has been fully provisioned.
93
93
 
94
94
  ## Remarks for modern sites
95
95
 
@@ -11,12 +11,6 @@ Connects site collection to an Microsoft 365 Group
11
11
  m365 spo site groupify [options]
12
12
  ```
13
13
 
14
- ## Alias
15
-
16
- ```sh
17
- m365 spo site groupify
18
- ```
19
-
20
14
  ## Options
21
15
 
22
16
  `-u, --url <url>`
@@ -8,12 +8,6 @@ Adds a specified member in the specified Microsoft Teams private team channel
8
8
  m365 teams channel member add [options]
9
9
  ```
10
10
 
11
- ## Alias
12
-
13
- ```sh
14
- m365 teams conversationmember add [options]
15
- ```
16
-
17
11
  ## Options
18
12
 
19
13
  `-i, --teamId [teamId]`
@@ -8,12 +8,6 @@ Lists members of the specified Microsoft Teams team channel
8
8
  m365 teams channel member list [options]
9
9
  ```
10
10
 
11
- ## Alias
12
-
13
- ```sh
14
- m365 teams conversationmember list [options]
15
- ```
16
-
17
11
  ## Options
18
12
 
19
13
  `-i, --teamId [teamId]`
@@ -8,12 +8,6 @@ Remove the specified member from the specified Microsoft Teams private team chan
8
8
  m365 teams channel member remove [options]
9
9
  ```
10
10
 
11
- ## Alias
12
-
13
- ```sh
14
- m365 teams conversationmember remove [options]
15
- ```
16
-
17
11
  ## Options
18
12
 
19
13
  `--teamId [teamId]`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "6.0.0-beta.db5e64c",
3
+ "version": "6.0.0-beta.de4f962",
4
4
  "description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/api.js",
@@ -138,6 +138,7 @@
138
138
  "Kelkar, Vipul <vipul.kelkar@outlook.com>",
139
139
  "Kesavanarayanan, Sudharsan <10280385+sudharsank@users.noreply.github.com>",
140
140
  "Khalil, Bassem <bk@bassems-air.home>",
141
+ "Kirkham, Don <donkirkham@live.com>",
141
142
  "Kumar, Shantha <34408892+ktskumar@users.noreply.github.com>",
142
143
  "Lamber, Patrick <patrick@nubo.eu>",
143
144
  "Laskewitz, Daniel <daniel@laskewitz.nl>",