@pnp/cli-microsoft365 11.7.0-beta.b9f508d → 11.7.0-beta.bd906c5

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 (32) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/m365/outlook/commands/calendargroup/calendargroup-set.js +115 -0
  4. package/dist/m365/outlook/commands.js +1 -0
  5. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +21 -6
  6. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.23.0-rc.0.js +19 -0
  7. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  8. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002021_DEVDEP_rushstack_eslint_config.js +2 -2
  9. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002032_DEVDEP_typescript_eslint_parser.js +2 -2
  10. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015008_FILE_eslintrc_js.js +1 -1
  11. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015016_FILE_eslint_config_js.js +10 -0
  12. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.23.0-rc.0.js +84 -0
  13. package/dist/m365/spfx/commands/project/project-upgrade.js +12 -11
  14. package/docs/docs/cmd/entra/user/user-groupmembership-list.mdx +19 -0
  15. package/docs/docs/cmd/entra/user/user-guest-add.mdx +19 -0
  16. package/docs/docs/cmd/entra/user/user-password-validate.mdx +12 -0
  17. package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +21 -0
  18. package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +19 -0
  19. package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +21 -0
  20. package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +19 -0
  21. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +19 -0
  22. package/docs/docs/cmd/entra/user/user-session-revoke.mdx +21 -0
  23. package/docs/docs/cmd/entra/user/user-signin-list.mdx +19 -0
  24. package/docs/docs/cmd/exo/approleassignment/approleassignment-add.mdx +19 -0
  25. package/docs/docs/cmd/file/convert/convert-pdf.mdx +21 -0
  26. package/docs/docs/cmd/file/file-add.mdx +21 -0
  27. package/docs/docs/cmd/file/file-copy.mdx +21 -0
  28. package/docs/docs/cmd/file/file-list.mdx +19 -0
  29. package/docs/docs/cmd/file/file-move.mdx +21 -0
  30. package/docs/docs/cmd/outlook/calendargroup/calendargroup-set.mdx +83 -0
  31. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  32. package/package.json +1 -1
@@ -0,0 +1,115 @@
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
3
+ import GraphCommand from '../../../base/GraphCommand.js';
4
+ import commands from '../../commands.js';
5
+ import { validation } from '../../../../utils/validation.js';
6
+ import request from '../../../../request.js';
7
+ import { accessToken } from '../../../../utils/accessToken.js';
8
+ import auth from '../../../../Auth.js';
9
+ import { formatting } from '../../../../utils/formatting.js';
10
+ import { calendarGroup } from '../../../../utils/calendarGroup.js';
11
+ export const options = z.strictObject({
12
+ ...globalOptionsZod.shape,
13
+ id: z.string().optional(),
14
+ name: z.string().optional(),
15
+ userId: z.string().refine(id => validation.isValidGuid(id), {
16
+ error: e => `'${e.input}' is not a valid GUID.`
17
+ }).optional(),
18
+ userName: z.string().refine(name => validation.isValidUserPrincipalName(name), {
19
+ error: e => `'${e.input}' is not a valid UPN.`
20
+ }).optional(),
21
+ newName: z.string()
22
+ });
23
+ class OutlookCalendarGroupSetCommand extends GraphCommand {
24
+ get name() {
25
+ return commands.CALENDARGROUP_SET;
26
+ }
27
+ get description() {
28
+ return 'Updates a calendar group for a user';
29
+ }
30
+ get schema() {
31
+ return options;
32
+ }
33
+ getRefinedSchema(schema) {
34
+ return schema
35
+ .refine(options => !(options.userId && options.userName), {
36
+ error: 'Specify either userId or userName, but not both.'
37
+ })
38
+ .refine(options => !(!options.id && !options.name), {
39
+ error: 'Specify either id or name.'
40
+ })
41
+ .refine(options => !(options.id && options.name), {
42
+ error: 'Specify either id or name, but not both.'
43
+ });
44
+ }
45
+ async commandAction(logger, args) {
46
+ try {
47
+ const token = auth.connection.accessTokens[auth.defaultResource].accessToken;
48
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(token);
49
+ let userUrl;
50
+ let graphUserId;
51
+ if (isAppOnlyAccessToken) {
52
+ if (!args.options.userId && !args.options.userName) {
53
+ throw 'When running with application permissions either userId or userName is required.';
54
+ }
55
+ graphUserId = (args.options.userId ?? args.options.userName);
56
+ userUrl = `${this.resource}/v1.0/users('${formatting.encodeQueryParameter(graphUserId)}')`;
57
+ if (this.verbose) {
58
+ await logger.logToStderr(`Updating calendar group using application permissions for user '${graphUserId}'...`);
59
+ }
60
+ }
61
+ else if (args.options.userId || args.options.userName) {
62
+ const currentUserId = accessToken.getUserIdFromAccessToken(token);
63
+ const currentUserName = accessToken.getUserNameFromAccessToken(token);
64
+ const isOtherUser = (args.options.userId && args.options.userId !== currentUserId) ||
65
+ (args.options.userName && args.options.userName.toLowerCase() !== currentUserName?.toLowerCase());
66
+ if (isOtherUser) {
67
+ const scopes = accessToken.getScopesFromAccessToken(token);
68
+ const hasSharedScope = scopes.some(s => s === 'Calendars.ReadWrite.Shared');
69
+ if (!hasSharedScope) {
70
+ throw `To update calendar groups of other users, the Entra ID application used for authentication must have the Calendars.ReadWrite.Shared delegated permission assigned.`;
71
+ }
72
+ }
73
+ graphUserId = (args.options.userId ?? args.options.userName);
74
+ userUrl = `${this.resource}/v1.0/users('${formatting.encodeQueryParameter(graphUserId)}')`;
75
+ if (this.verbose) {
76
+ await logger.logToStderr(`Updating calendar group using delegated permissions for user '${graphUserId}'...`);
77
+ }
78
+ }
79
+ else {
80
+ graphUserId = accessToken.getUserIdFromAccessToken(token);
81
+ userUrl = `${this.resource}/v1.0/me`;
82
+ if (this.verbose) {
83
+ await logger.logToStderr('Updating calendar group for the signed-in user...');
84
+ }
85
+ }
86
+ let calendarGroupId;
87
+ if (args.options.id) {
88
+ calendarGroupId = args.options.id;
89
+ }
90
+ else {
91
+ const calendarGroupResult = await calendarGroup.getUserCalendarGroupByName(graphUserId, args.options.name);
92
+ calendarGroupId = calendarGroupResult.id;
93
+ }
94
+ if (this.verbose) {
95
+ await logger.logToStderr(`Updating calendar group '${calendarGroupId}'...`);
96
+ }
97
+ const requestOptions = {
98
+ url: `${userUrl}/calendarGroups/${calendarGroupId}`,
99
+ headers: {
100
+ accept: 'application/json;odata.metadata=none'
101
+ },
102
+ responseType: 'json',
103
+ data: {
104
+ name: args.options.newName
105
+ }
106
+ };
107
+ await request.patch(requestOptions);
108
+ }
109
+ catch (err) {
110
+ this.handleRejectedODataJsonPromise(err);
111
+ }
112
+ }
113
+ }
114
+ export default new OutlookCalendarGroupSetCommand();
115
+ //# sourceMappingURL=calendargroup-set.js.map
@@ -4,6 +4,7 @@ export default {
4
4
  CALENDAR_GET: `${prefix} calendar get`,
5
5
  CALENDAR_REMOVE: `${prefix} calendar remove`,
6
6
  CALENDARGROUP_LIST: `${prefix} calendargroup list`,
7
+ CALENDARGROUP_SET: `${prefix} calendargroup set`,
7
8
  EVENT_CANCEL: `${prefix} event cancel`,
8
9
  EVENT_LIST: `${prefix} event list`,
9
10
  EVENT_REMOVE: `${prefix} event remove`,
@@ -590,8 +590,8 @@ export const versions = {
590
590
  },
591
591
  sp: SharePointVersion.SPO,
592
592
  yo: {
593
- range: '^4 || ^5 || ^6',
594
- fix: 'npm i -g yo@6'
593
+ range: '^4 || ^5 || ^6 || ^7',
594
+ fix: 'npm i -g yo@7'
595
595
  }
596
596
  },
597
597
  '1.22.1': {
@@ -605,8 +605,8 @@ export const versions = {
605
605
  },
606
606
  sp: SharePointVersion.SPO,
607
607
  yo: {
608
- range: '^4 || ^5 || ^6',
609
- fix: 'npm i -g yo@6'
608
+ range: '^4 || ^5 || ^6 || ^7',
609
+ fix: 'npm i -g yo@7'
610
610
  }
611
611
  },
612
612
  '1.22.2': {
@@ -620,8 +620,23 @@ export const versions = {
620
620
  },
621
621
  sp: SharePointVersion.SPO,
622
622
  yo: {
623
- range: '^4 || ^5 || ^6',
624
- fix: 'npm i -g yo@6'
623
+ range: '^4 || ^5 || ^6 || ^7',
624
+ fix: 'npm i -g yo@7'
625
+ }
626
+ },
627
+ '1.23.0-rc.0': {
628
+ heft: {
629
+ range: '^1',
630
+ fix: 'npm i -g @rushstack/heft@1'
631
+ },
632
+ node: {
633
+ range: '>=22.14.0 <23.0.0',
634
+ fix: 'Install Node.js >=22.14.0 <23.0.0'
635
+ },
636
+ sp: SharePointVersion.SPO,
637
+ yo: {
638
+ range: '^4 || ^5 || ^6 || ^7',
639
+ fix: 'npm i -g yo@7'
625
640
  }
626
641
  }
627
642
  };
@@ -0,0 +1,19 @@
1
+ import { FN001008_DEP_react } from './rules/FN001008_DEP_react.js';
2
+ import { FN001009_DEP_react_dom } from './rules/FN001009_DEP_react_dom.js';
3
+ import { FN001035_DEP_fluentui_react } from './rules/FN001035_DEP_fluentui_react.js';
4
+ import { FN002013_DEVDEP_types_webpack_env } from './rules/FN002013_DEVDEP_types_webpack_env.js';
5
+ import { FN002015_DEVDEP_types_react } from './rules/FN002015_DEVDEP_types_react.js';
6
+ import { FN002016_DEVDEP_types_react_dom } from './rules/FN002016_DEVDEP_types_react_dom.js';
7
+ import { FN002022_DEVDEP_typescript } from './rules/FN002022_DEVDEP_typescript.js';
8
+ import { FN021001_PKG_spfx_deps_versions_match_project_version } from './rules/FN021001_PKG_spfx_deps_versions_match_project_version.js';
9
+ export default [
10
+ new FN001008_DEP_react('17'),
11
+ new FN001009_DEP_react_dom('17'),
12
+ new FN001035_DEP_fluentui_react('^8.106.4'),
13
+ new FN002013_DEVDEP_types_webpack_env('~1.15.2'),
14
+ new FN002015_DEVDEP_types_react('17'),
15
+ new FN002016_DEVDEP_types_react_dom('17'),
16
+ new FN002022_DEVDEP_typescript('~5.8.0'),
17
+ new FN021001_PKG_spfx_deps_versions_match_project_version(true)
18
+ ];
19
+ //# sourceMappingURL=doctor-1.23.0-rc.0.js.map
@@ -76,7 +76,8 @@ class SpfxProjectDoctorCommand extends BaseProjectCommand {
76
76
  '1.21.1',
77
77
  '1.22.0',
78
78
  '1.22.1',
79
- '1.22.2'
79
+ '1.22.2',
80
+ '1.23.0-rc.0'
80
81
  ];
81
82
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
82
83
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
@@ -1,7 +1,7 @@
1
1
  import { DependencyRule } from "./DependencyRule.js";
2
2
  export class FN002021_DEVDEP_rushstack_eslint_config extends DependencyRule {
3
- constructor(packageVersion) {
4
- super('@rushstack/eslint-config', packageVersion, true);
3
+ constructor(packageVersion, add = true) {
4
+ super('@rushstack/eslint-config', packageVersion, true, false, add);
5
5
  }
6
6
  get id() {
7
7
  return 'FN002021';
@@ -1,7 +1,7 @@
1
1
  import { DependencyRule } from "./DependencyRule.js";
2
2
  export class FN002032_DEVDEP_typescript_eslint_parser extends DependencyRule {
3
- constructor(packageVersion) {
4
- super('@typescript-eslint/parser', packageVersion, true);
3
+ constructor(packageVersion, add = true) {
4
+ super('@typescript-eslint/parser', packageVersion, true, false, add);
5
5
  }
6
6
  get id() {
7
7
  return 'FN002032';
@@ -8,7 +8,7 @@ export class FN015008_FILE_eslintrc_js extends FileAddRemoveRule {
8
8
  return 'FN015008';
9
9
  }
10
10
  visit(project, notifications) {
11
- if (spfx.isReactProject(project)) {
11
+ if (spfx.isReactProject(project) && this.contents) {
12
12
  this.contents = this.contents.replace('@microsoft/eslint-config-spfx/lib/profiles/default', '@microsoft/eslint-config-spfx/lib/profiles/react');
13
13
  }
14
14
  super.visit(project, notifications);
@@ -0,0 +1,10 @@
1
+ import { FileAddRemoveRule } from "./FileAddRemoveRule.js";
2
+ export class FN015016_FILE_eslint_config_js extends FileAddRemoveRule {
3
+ constructor(add, contents) {
4
+ super('./eslint.config.js', add, contents);
5
+ }
6
+ get id() {
7
+ return 'FN015016';
8
+ }
9
+ }
10
+ //# sourceMappingURL=FN015016_FILE_eslint_config_js.js.map
@@ -0,0 +1,84 @@
1
+ import { FN001001_DEP_microsoft_sp_core_library } from './rules/FN001001_DEP_microsoft_sp_core_library.js';
2
+ import { FN001002_DEP_microsoft_sp_lodash_subset } from './rules/FN001002_DEP_microsoft_sp_lodash_subset.js';
3
+ import { FN001003_DEP_microsoft_sp_office_ui_fabric_core } from './rules/FN001003_DEP_microsoft_sp_office_ui_fabric_core.js';
4
+ import { FN001004_DEP_microsoft_sp_webpart_base } from './rules/FN001004_DEP_microsoft_sp_webpart_base.js';
5
+ import { FN001011_DEP_microsoft_sp_dialog } from './rules/FN001011_DEP_microsoft_sp_dialog.js';
6
+ import { FN001012_DEP_microsoft_sp_application_base } from './rules/FN001012_DEP_microsoft_sp_application_base.js';
7
+ import { FN001013_DEP_microsoft_decorators } from './rules/FN001013_DEP_microsoft_decorators.js';
8
+ import { FN001014_DEP_microsoft_sp_listview_extensibility } from './rules/FN001014_DEP_microsoft_sp_listview_extensibility.js';
9
+ import { FN001021_DEP_microsoft_sp_property_pane } from './rules/FN001021_DEP_microsoft_sp_property_pane.js';
10
+ import { FN001023_DEP_microsoft_sp_component_base } from './rules/FN001023_DEP_microsoft_sp_component_base.js';
11
+ import { FN001024_DEP_microsoft_sp_diagnostics } from './rules/FN001024_DEP_microsoft_sp_diagnostics.js';
12
+ import { FN001025_DEP_microsoft_sp_dynamic_data } from './rules/FN001025_DEP_microsoft_sp_dynamic_data.js';
13
+ import { FN001026_DEP_microsoft_sp_extension_base } from './rules/FN001026_DEP_microsoft_sp_extension_base.js';
14
+ import { FN001027_DEP_microsoft_sp_http } from './rules/FN001027_DEP_microsoft_sp_http.js';
15
+ import { FN001028_DEP_microsoft_sp_list_subscription } from './rules/FN001028_DEP_microsoft_sp_list_subscription.js';
16
+ import { FN001029_DEP_microsoft_sp_loader } from './rules/FN001029_DEP_microsoft_sp_loader.js';
17
+ import { FN001030_DEP_microsoft_sp_module_interfaces } from './rules/FN001030_DEP_microsoft_sp_module_interfaces.js';
18
+ import { FN001031_DEP_microsoft_sp_odata_types } from './rules/FN001031_DEP_microsoft_sp_odata_types.js';
19
+ import { FN001032_DEP_microsoft_sp_page_context } from './rules/FN001032_DEP_microsoft_sp_page_context.js';
20
+ import { FN001034_DEP_microsoft_sp_adaptive_card_extension_base } from './rules/FN001034_DEP_microsoft_sp_adaptive_card_extension_base.js';
21
+ import { FN002002_DEVDEP_microsoft_sp_module_interfaces } from './rules/FN002002_DEVDEP_microsoft_sp_module_interfaces.js';
22
+ import { FN002021_DEVDEP_rushstack_eslint_config } from './rules/FN002021_DEVDEP_rushstack_eslint_config.js';
23
+ import { FN002022_DEVDEP_microsoft_eslint_plugin_spfx } from './rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx.js';
24
+ import { FN002023_DEVDEP_microsoft_eslint_config_spfx } from './rules/FN002023_DEVDEP_microsoft_eslint_config_spfx.js';
25
+ import { FN002024_DEVDEP_eslint } from './rules/FN002024_DEVDEP_eslint.js';
26
+ import { FN002025_DEVDEP_eslint_plugin_react_hooks } from './rules/FN002025_DEVDEP_eslint_plugin_react_hooks.js';
27
+ import { FN002030_DEVDEP_microsoft_spfx_web_build_rig } from './rules/FN002030_DEVDEP_microsoft_spfx_web_build_rig.js';
28
+ import { FN002031_DEVDEP_rushstack_heft } from './rules/FN002031_DEVDEP_rushstack_heft.js';
29
+ import { FN002032_DEVDEP_typescript_eslint_parser } from './rules/FN002032_DEVDEP_typescript_eslint_parser.js';
30
+ import { FN002034_DEVDEP_microsoft_spfx_heft_plugins } from './rules/FN002034_DEVDEP_microsoft_spfx_heft_plugins.js';
31
+ import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
32
+ import { FN015008_FILE_eslintrc_js } from './rules/FN015008_FILE_eslintrc_js.js';
33
+ import { FN015016_FILE_eslint_config_js } from './rules/FN015016_FILE_eslint_config_js.js';
34
+ import { FN021009_PKG_overrides_rushstack_heft } from './rules/FN021009_PKG_overrides_rushstack_heft.js';
35
+ export default [
36
+ new FN001001_DEP_microsoft_sp_core_library('1.23.0-rc.0'),
37
+ new FN001002_DEP_microsoft_sp_lodash_subset('1.23.0-rc.0'),
38
+ new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.23.0-rc.0'),
39
+ new FN001004_DEP_microsoft_sp_webpart_base('1.23.0-rc.0'),
40
+ new FN001011_DEP_microsoft_sp_dialog('1.23.0-rc.0'),
41
+ new FN001012_DEP_microsoft_sp_application_base('1.23.0-rc.0'),
42
+ new FN001014_DEP_microsoft_sp_listview_extensibility('1.23.0-rc.0'),
43
+ new FN001021_DEP_microsoft_sp_property_pane('1.23.0-rc.0'),
44
+ new FN001023_DEP_microsoft_sp_component_base('1.23.0-rc.0'),
45
+ new FN001024_DEP_microsoft_sp_diagnostics('1.23.0-rc.0'),
46
+ new FN001025_DEP_microsoft_sp_dynamic_data('1.23.0-rc.0'),
47
+ new FN001026_DEP_microsoft_sp_extension_base('1.23.0-rc.0'),
48
+ new FN001027_DEP_microsoft_sp_http('1.23.0-rc.0'),
49
+ new FN001028_DEP_microsoft_sp_list_subscription('1.23.0-rc.0'),
50
+ new FN001029_DEP_microsoft_sp_loader('1.23.0-rc.0'),
51
+ new FN001030_DEP_microsoft_sp_module_interfaces('1.23.0-rc.0'),
52
+ new FN001031_DEP_microsoft_sp_odata_types('1.23.0-rc.0'),
53
+ new FN001032_DEP_microsoft_sp_page_context('1.23.0-rc.0'),
54
+ new FN001013_DEP_microsoft_decorators('1.23.0-rc.0'),
55
+ new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.23.0-rc.0'),
56
+ new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.23.0-rc.0'),
57
+ new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.23.0-rc.0'),
58
+ new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.23.0-rc.0'),
59
+ new FN002030_DEVDEP_microsoft_spfx_web_build_rig('1.23.0-rc.0'),
60
+ new FN002034_DEVDEP_microsoft_spfx_heft_plugins('1.23.0-rc.0'),
61
+ new FN010001_YORC_version('1.23.0-rc.0'),
62
+ new FN002031_DEVDEP_rushstack_heft('1.2.7'),
63
+ new FN021009_PKG_overrides_rushstack_heft('1.2.7'),
64
+ new FN002025_DEVDEP_eslint_plugin_react_hooks('5.2.0'),
65
+ new FN002024_DEVDEP_eslint('9.37.0'),
66
+ new FN015016_FILE_eslint_config_js(true, `const spfxProfile = require('@microsoft/eslint-config-spfx/lib/flat-profiles/react');
67
+
68
+ module.exports = [
69
+ ...spfxProfile,
70
+ {
71
+ files: ['**/*.ts', '**/*.tsx'],
72
+ languageOptions: {
73
+ parserOptions: {
74
+ tsconfigRootDir: __dirname,
75
+ project: './tsconfig.json'
76
+ }
77
+ }
78
+ }
79
+ ];`),
80
+ new FN015008_FILE_eslintrc_js(false),
81
+ new FN002021_DEVDEP_rushstack_eslint_config('4.5.2', false),
82
+ new FN002032_DEVDEP_typescript_eslint_parser('8.46.2', false)
83
+ ];
84
+ //# sourceMappingURL=upgrade-1.23.0-rc.0.js.map
@@ -2,7 +2,7 @@ import fs from 'fs';
2
2
  import os from 'os';
3
3
  import path from 'path';
4
4
  // uncomment to support upgrading to preview releases
5
- // import { prerelease } from 'semver';
5
+ import { prerelease } from 'semver';
6
6
  import { z } from 'zod';
7
7
  import { CommandError, globalOptionsZod } from '../../../../Command.js';
8
8
  import { fsUtil } from '../../../../utils/fsUtil.js';
@@ -85,7 +85,8 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
85
85
  '1.21.1',
86
86
  '1.22.0',
87
87
  '1.22.1',
88
- '1.22.2'
88
+ '1.22.2',
89
+ '1.23.0-rc.0'
89
90
  ];
90
91
  }
91
92
  async commandAction(logger, args) {
@@ -95,15 +96,15 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
95
96
  }
96
97
  this.toVersion = args.options.toVersion ? args.options.toVersion : this.supportedVersions[this.supportedVersions.length - 1];
97
98
  // uncomment to support upgrading to preview releases
98
- // if (!args.options.toVersion &&
99
- // !args.options.preview &&
100
- // prerelease(this.toVersion)) {
101
- // // no version and no preview specified while the current version to
102
- // // upgrade to is a prerelease so let's grab the first non-preview version
103
- // // since we're supporting only one preview version, it's sufficient for
104
- // // us to take second to last version
105
- // this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
106
- // }
99
+ if (!args.options.toVersion &&
100
+ !args.options.preview &&
101
+ prerelease(this.toVersion)) {
102
+ // no version and no preview specified while the current version to
103
+ // upgrade to is a prerelease so let's grab the first non-preview version
104
+ // since we're supporting only one preview version, it's sufficient for
105
+ // us to take second to last version
106
+ this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
107
+ }
107
108
  this.packageManager = args.options.packageManager || 'npm';
108
109
  this.shell = args.options.shell || 'powershell';
109
110
  if (this.supportedVersions.indexOf(this.toVersion) < 0) {
@@ -30,6 +30,25 @@ m365 entra user groupmembership list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|------------------------------------------|
40
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|------------------------------------------|
47
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Retrieves groups that the user is a member of
@@ -39,6 +39,25 @@ m365 entra user guest add [options]
39
39
 
40
40
  <Global />
41
41
 
42
+ ## Permissions
43
+
44
+ <Tabs>
45
+ <TabItem value="Delegated">
46
+
47
+ | Resource | Permissions |
48
+ |-----------------|-----------------|
49
+ | Microsoft Graph | User.Invite.All |
50
+
51
+ </TabItem>
52
+ <TabItem value="Application">
53
+
54
+ | Resource | Permissions |
55
+ |-----------------|-----------------|
56
+ | Microsoft Graph | User.Invite.All |
57
+
58
+ </TabItem>
59
+ </Tabs>
60
+
42
61
  ## Examples
43
62
 
44
63
  Invite a user via email and set the display name.
@@ -29,6 +29,18 @@ This command is based on an API that is currently in preview and is subject to c
29
29
 
30
30
  :::
31
31
 
32
+ ## Permissions
33
+
34
+ <Tabs>
35
+ <TabItem value="Delegated">
36
+
37
+ | Resource | Permissions |
38
+ |-----------------|----------------|
39
+ | Microsoft Graph | User.ReadWrite |
40
+
41
+ </TabItem>
42
+ </Tabs>
43
+
32
44
  ## Examples
33
45
 
34
46
  Validate password _cli365P@ssW0rd_ against the organization's password validation policy.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem clear
4
6
 
@@ -33,6 +35,25 @@ After running this command, it may take a minute before all deleted users are ef
33
35
 
34
36
  :::
35
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
36
57
  ## Examples
37
58
 
38
59
  Removes all users from the tenant recycle bin.
@@ -16,6 +16,25 @@ m365 entra user recyclebinitem list [options]
16
16
 
17
17
  <Global />
18
18
 
19
+ ## Permissions
20
+
21
+ <Tabs>
22
+ <TabItem value="Delegated">
23
+
24
+ | Resource | Permissions |
25
+ |-----------------|---------------|
26
+ | Microsoft Graph | User.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|---------------|
33
+ | Microsoft Graph | User.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all removed users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem remove
4
6
 
@@ -36,6 +38,25 @@ After running this command, it may take a minute before the deleted user is effe
36
38
 
37
39
  :::
38
40
 
41
+ ## Permissions
42
+
43
+ <Tabs>
44
+ <TabItem value="Delegated">
45
+
46
+ | Resource | Permissions |
47
+ |-----------------|------------------------|
48
+ | Microsoft Graph | User.DeleteRestore.All |
49
+
50
+ </TabItem>
51
+ <TabItem value="Application">
52
+
53
+ | Resource | Permissions |
54
+ |-----------------|------------------------|
55
+ | Microsoft Graph | User.DeleteRestore.All |
56
+
57
+ </TabItem>
58
+ </Tabs>
59
+
39
60
  ## Examples
40
61
 
41
62
  Removes a specific user from the recycle bin.
@@ -35,6 +35,25 @@ After running this command, it may take a minute before the user will reappear i
35
35
 
36
36
  :::
37
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
38
57
  ## Examples
39
58
 
40
59
  Restore user from the recycle bin.
@@ -77,6 +77,25 @@ When multiple values are specified for `--registeredMethods` option, the command
77
77
 
78
78
  :::
79
79
 
80
+ ## Permissions
81
+
82
+ <Tabs>
83
+ <TabItem value="Delegated">
84
+
85
+ | Resource | Permissions |
86
+ |-----------------|-------------------|
87
+ | Microsoft Graph | AuditLog.Read.All |
88
+
89
+ </TabItem>
90
+ <TabItem value="Application">
91
+
92
+ | Resource | Permissions |
93
+ |-----------------|-------------------|
94
+ | Microsoft Graph | AuditLog.Read.All |
95
+
96
+ </TabItem>
97
+ </Tabs>
98
+
80
99
  ## Examples
81
100
 
82
101
  Retrieve registration details for all users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user session revoke
4
6
 
@@ -40,6 +42,25 @@ This API doesn't revoke sign-in sessions for external users, because external us
40
42
 
41
43
  :::
42
44
 
45
+ ## Permissions
46
+
47
+ <Tabs>
48
+ <TabItem value="Delegated">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|-------------------------|
52
+ | Microsoft Graph | User.RevokeSessions.All |
53
+
54
+ </TabItem>
55
+ <TabItem value="Application">
56
+
57
+ | Resource | Permissions |
58
+ |-----------------|-------------------------|
59
+ | Microsoft Graph | User.RevokeSessions.All |
60
+
61
+ </TabItem>
62
+ </Tabs>
63
+
43
64
  ## Examples
44
65
 
45
66
  Revoke sign-in sessions of a user specified by id
@@ -30,6 +30,25 @@ m365 entra user signin list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|-------------------|
40
+ | Microsoft Graph | AuditLog.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|-------------------|
47
+ | Microsoft Graph | AuditLog.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Get all user's sign-ins in your tenant.