@pnp/cli-microsoft365 10.0.0-beta.04ac437 → 10.0.0-beta.0b765ef

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 (70) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Auth.js +3 -3
  4. package/dist/AuthServer.js +7 -7
  5. package/dist/api.js +1 -1
  6. package/dist/config.js +1 -0
  7. package/dist/m365/cli/commands/cli-doctor.js +2 -2
  8. package/dist/m365/cli/commands.js +1 -2
  9. package/dist/m365/entra/commands/group/{group-user-add.js → group-member-add.js} +18 -18
  10. package/dist/m365/entra/commands/group/{group-user-list.js → group-member-list.js} +17 -17
  11. package/dist/m365/entra/commands/group/{group-user-set.js → group-member-set.js} +19 -19
  12. package/dist/m365/entra/commands/m365group/m365group-set.js +24 -16
  13. package/dist/m365/entra/commands/m365group/m365group-user-add.js +5 -12
  14. package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +3 -12
  15. package/dist/m365/entra/commands.js +3 -3
  16. package/dist/m365/external/commands/item/item-add.js +2 -5
  17. package/dist/m365/flow/commands/environment/environment-list.js +1 -1
  18. package/dist/m365/pa/commands/app/app-list.js +1 -6
  19. package/dist/m365/pa/commands/connector/connector-list.js +1 -6
  20. package/dist/m365/pa/commands/environment/environment-list.js +1 -1
  21. package/dist/m365/pp/commands/environment/environment-list.js +1 -1
  22. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.20.0-rc.1.js → doctor-1.20.0.js} +4 -2
  23. package/dist/m365/spfx/commands/project/project-doctor/rules/FN002021_DEVDEP_rushstack_eslint_config.js +10 -0
  24. package/dist/m365/spfx/commands/project/project-doctor.js +1 -1
  25. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.20.0-rc.1.js → upgrade-1.20.0.js} +28 -26
  26. package/dist/m365/spfx/commands/project/project-upgrade.js +13 -15
  27. package/dist/m365/spfx/commands/spfx-doctor.js +1 -1
  28. package/dist/m365/spo/commands/app/app-instance-list.js +3 -18
  29. package/dist/m365/spo/commands/app/app-list.js +1 -8
  30. package/dist/m365/spo/commands/feature/feature-list.js +1 -8
  31. package/dist/m365/spo/commands/list/list-webhook-list.js +1 -6
  32. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +1 -8
  33. package/dist/m365/spo/commands/page/page-list.js +1 -1
  34. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  35. package/dist/m365/spo/commands/page/page-template-list.js +1 -3
  36. package/dist/m365/spo/commands/site/site-admin-list.js +8 -9
  37. package/dist/m365/spo/commands/site/site-admin-remove.js +5 -4
  38. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  39. package/dist/m365/spo/commands/sitescript/sitescript-list.js +1 -3
  40. package/dist/m365/spo/commands/{site/site-rename.js → tenant/tenant-site-rename.js} +29 -32
  41. package/dist/m365/spo/commands/theme/theme-list.js +1 -1
  42. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +1 -6
  43. package/dist/m365/spo/commands.js +2 -1
  44. package/dist/m365/teams/commands/tab/tab-list.js +5 -3
  45. package/dist/m365/viva/commands/engage/Community.js +2 -0
  46. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  47. package/dist/m365/viva/commands.js +1 -0
  48. package/dist/request.js +46 -61
  49. package/dist/utils/spo.js +5 -7
  50. package/dist/utils/timersUtil.js +12 -0
  51. package/dist/utils/urlUtil.js +8 -0
  52. package/docs/docs/cmd/cli/cli-doctor.mdx +24 -23
  53. package/docs/docs/cmd/entra/group/group-member-add.mdx +62 -0
  54. package/docs/docs/cmd/entra/group/{group-user-list.mdx → group-member-list.mdx} +14 -14
  55. package/docs/docs/cmd/entra/group/group-member-set.mdx +62 -0
  56. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +9 -6
  57. package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +0 -3
  58. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  59. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  60. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  61. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  62. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  63. package/docs/docs/cmd/spo/{site/site-rename.mdx → tenant/tenant-site-rename.mdx} +7 -7
  64. package/docs/docs/cmd/teams/tab/tab-list.mdx +1 -2
  65. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  66. package/package.json +1 -1
  67. package/dist/m365/cli/commands/cli-reconsent.js +0 -29
  68. package/docs/docs/cmd/cli/cli-reconsent.mdx +0 -62
  69. package/docs/docs/cmd/entra/group/group-user-add.mdx +0 -62
  70. package/docs/docs/cmd/entra/group/group-user-set.mdx +0 -62
package/dist/Auth.js CHANGED
@@ -117,7 +117,7 @@ export class Auth {
117
117
  async restoreAuth() {
118
118
  // check if auth has been restored previously
119
119
  if (this._connection.active) {
120
- return Promise.resolve();
120
+ return;
121
121
  }
122
122
  try {
123
123
  const connection = await this.getConnectionInfoFromStorage();
@@ -473,7 +473,7 @@ export class Auth {
473
473
  }
474
474
  if (userName && process.env.ACC_CLOUD) {
475
475
  // reject for now since the Azure Cloud Shell does not support user-managed identity
476
- return Promise.reject('Azure Cloud Shell does not support user-managed identity. You can execute the command without the --userName option to login with user identity');
476
+ throw 'Azure Cloud Shell does not support user-managed identity. You can execute the command without the --userName option to login with user identity';
477
477
  }
478
478
  requestOptions.url = `${process.env.IDENTITY_ENDPOINT}?resource=${encodeURIComponent(resource)}`;
479
479
  }
@@ -483,7 +483,7 @@ export class Auth {
483
483
  }
484
484
  if (userName && process.env.ACC_CLOUD) {
485
485
  // reject for now since the Azure Cloud Shell does not support user-managed identity
486
- return Promise.reject('Azure Cloud Shell does not support user-managed identity. You can execute the command without the --userName option to login with user identity');
486
+ throw 'Azure Cloud Shell does not support user-managed identity. You can execute the command without the --userName option to login with user identity';
487
487
  }
488
488
  requestOptions.url = `${process.env.MSI_ENDPOINT}?resource=${encodeURIComponent(resource)}`;
489
489
  }
@@ -26,7 +26,7 @@ export class AuthServer {
26
26
  await this.logger.logToStderr(url);
27
27
  await this.logger.logToStderr('');
28
28
  }
29
- this.openUrl(url);
29
+ await this.openUrl(url);
30
30
  };
31
31
  this.httpRequest = async (request, response) => {
32
32
  if (this.debug) {
@@ -80,19 +80,19 @@ export class AuthServer {
80
80
  get server() {
81
81
  return this.httpServer;
82
82
  }
83
- openUrl(url) {
84
- browserUtil.open(url)
85
- .then(async (_) => {
83
+ async openUrl(url) {
84
+ try {
85
+ await browserUtil.open(url);
86
86
  await this.logger.logToStderr("To sign in, use the web browser that just has been opened. Please sign-in there.");
87
- })
88
- .catch(_ => {
87
+ }
88
+ catch {
89
89
  const errorResponse = {
90
90
  error: "Can't open the default browser",
91
91
  errorDescription: "Was not able to open a browser instance. Try again later or use a different authentication method."
92
92
  };
93
93
  this.reject(errorResponse);
94
94
  this.httpServer.close();
95
- });
95
+ }
96
96
  }
97
97
  }
98
98
  export default new AuthServer();
package/dist/api.js CHANGED
@@ -3,7 +3,7 @@ export async function executeCommand(commandName, options, listener) {
3
3
  cli.loadAllCommandsInfo();
4
4
  await cli.loadCommandFromArgs(commandName.split(' '));
5
5
  if (!cli.commandToExecute) {
6
- return Promise.reject(`Command not found: ${commandName}`);
6
+ throw `Command not found: ${commandName}`;
7
7
  }
8
8
  return cli.executeCommandWithOutput(cli.commandToExecute.command, { options: options ?? {} }, listener);
9
9
  }
package/dist/config.js CHANGED
@@ -14,6 +14,7 @@ export default {
14
14
  'https://graph.microsoft.com/ChannelMessage.Send',
15
15
  'https://graph.microsoft.com/ChannelSettings.ReadWrite.All',
16
16
  'https://graph.microsoft.com/Chat.ReadWrite',
17
+ 'https://graph.microsoft.com/Community.ReadWrite.All',
17
18
  'https://graph.microsoft.com/Directory.AccessAsUser.All',
18
19
  'https://graph.microsoft.com/Directory.ReadWrite.All',
19
20
  'https://graph.microsoft.com/ExternalConnection.ReadWrite.All',
@@ -31,8 +31,8 @@ class CliDoctorCommand extends Command {
31
31
  },
32
32
  cliVersion: app.packageJson().version,
33
33
  nodeVersion: process.version,
34
- cliAadAppId: auth.connection.appId,
35
- cliAadAppTenant: validation.isValidGuid(auth.connection.tenant) ? 'single' : auth.connection.tenant,
34
+ cliEntraAppId: auth.connection.appId,
35
+ cliEntraAppTenant: validation.isValidGuid(auth.connection.tenant) ? 'single' : auth.connection.tenant,
36
36
  authMode: auth.connection.authType,
37
37
  cliEnvironment: process.env.CLIMICROSOFT365_ENV ? process.env.CLIMICROSOFT365_ENV : '',
38
38
  cliConfig: cli.getConfig().all,
@@ -11,7 +11,6 @@ export default {
11
11
  CONFIG_SET: `${prefix} config set`,
12
12
  CONSENT: `${prefix} consent`,
13
13
  DOCTOR: `${prefix} doctor`,
14
- ISSUE: `${prefix} issue`,
15
- RECONSENT: `${prefix} reconsent`
14
+ ISSUE: `${prefix} issue`
16
15
  };
17
16
  //# sourceMappingURL=commands.js.map
@@ -3,34 +3,34 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _EntraGroupUserAddCommand_instances, _EntraGroupUserAddCommand_initTelemetry, _EntraGroupUserAddCommand_initOptions, _EntraGroupUserAddCommand_initValidators, _EntraGroupUserAddCommand_initOptionSets, _EntraGroupUserAddCommand_initTypes;
6
+ var _EntraGroupMemberAddCommand_instances, _EntraGroupMemberAddCommand_initTelemetry, _EntraGroupMemberAddCommand_initOptions, _EntraGroupMemberAddCommand_initValidators, _EntraGroupMemberAddCommand_initOptionSets, _EntraGroupMemberAddCommand_initTypes;
7
7
  import request from '../../../../request.js';
8
8
  import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { entraUser } from '../../../../utils/entraUser.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
12
12
  import commands from '../../commands.js';
13
- class EntraGroupUserAddCommand extends GraphCommand {
13
+ class EntraGroupMemberAddCommand extends GraphCommand {
14
14
  get name() {
15
- return commands.GROUP_USER_ADD;
15
+ return commands.GROUP_MEMBER_ADD;
16
16
  }
17
17
  get description() {
18
- return 'Adds a user to a Microsoft Entra ID group';
18
+ return 'Adds a member to a Microsoft Entra ID group';
19
19
  }
20
20
  constructor() {
21
21
  super();
22
- _EntraGroupUserAddCommand_instances.add(this);
22
+ _EntraGroupMemberAddCommand_instances.add(this);
23
23
  this.roleValues = ['Owner', 'Member'];
24
- __classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initTelemetry).call(this);
25
- __classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initOptions).call(this);
26
- __classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initValidators).call(this);
27
- __classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initOptionSets).call(this);
28
- __classPrivateFieldGet(this, _EntraGroupUserAddCommand_instances, "m", _EntraGroupUserAddCommand_initTypes).call(this);
24
+ __classPrivateFieldGet(this, _EntraGroupMemberAddCommand_instances, "m", _EntraGroupMemberAddCommand_initTelemetry).call(this);
25
+ __classPrivateFieldGet(this, _EntraGroupMemberAddCommand_instances, "m", _EntraGroupMemberAddCommand_initOptions).call(this);
26
+ __classPrivateFieldGet(this, _EntraGroupMemberAddCommand_instances, "m", _EntraGroupMemberAddCommand_initValidators).call(this);
27
+ __classPrivateFieldGet(this, _EntraGroupMemberAddCommand_instances, "m", _EntraGroupMemberAddCommand_initOptionSets).call(this);
28
+ __classPrivateFieldGet(this, _EntraGroupMemberAddCommand_instances, "m", _EntraGroupMemberAddCommand_initTypes).call(this);
29
29
  }
30
30
  async commandAction(logger, args) {
31
31
  try {
32
32
  if (this.verbose) {
33
- await logger.logToStderr(`Adding user(s) ${args.options.ids || args.options.userNames} to group ${args.options.groupId || args.options.groupDisplayName}...`);
33
+ await logger.logToStderr(`Adding member(s) ${args.options.ids || args.options.userNames} to group ${args.options.groupId || args.options.groupDisplayName}...`);
34
34
  }
35
35
  const groupId = await this.getGroupId(logger, args.options);
36
36
  const userIds = await this.getUserIds(logger, args.options);
@@ -91,7 +91,7 @@ class EntraGroupUserAddCommand extends GraphCommand {
91
91
  return entraUser.getUserIdsByUpns(options.userNames.split(',').map(u => u.trim()));
92
92
  }
93
93
  }
94
- _EntraGroupUserAddCommand_instances = new WeakSet(), _EntraGroupUserAddCommand_initTelemetry = function _EntraGroupUserAddCommand_initTelemetry() {
94
+ _EntraGroupMemberAddCommand_instances = new WeakSet(), _EntraGroupMemberAddCommand_initTelemetry = function _EntraGroupMemberAddCommand_initTelemetry() {
95
95
  this.telemetry.push((args) => {
96
96
  Object.assign(this.telemetryProperties, {
97
97
  groupId: typeof args.options.groupId !== 'undefined',
@@ -100,7 +100,7 @@ _EntraGroupUserAddCommand_instances = new WeakSet(), _EntraGroupUserAddCommand_i
100
100
  userNames: typeof args.options.userNames !== 'undefined'
101
101
  });
102
102
  });
103
- }, _EntraGroupUserAddCommand_initOptions = function _EntraGroupUserAddCommand_initOptions() {
103
+ }, _EntraGroupMemberAddCommand_initOptions = function _EntraGroupMemberAddCommand_initOptions() {
104
104
  this.options.unshift({
105
105
  option: '-i, --groupId [groupId]'
106
106
  }, {
@@ -113,7 +113,7 @@ _EntraGroupUserAddCommand_instances = new WeakSet(), _EntraGroupUserAddCommand_i
113
113
  option: '-r, --role <role>',
114
114
  autocomplete: this.roleValues
115
115
  });
116
- }, _EntraGroupUserAddCommand_initValidators = function _EntraGroupUserAddCommand_initValidators() {
116
+ }, _EntraGroupMemberAddCommand_initValidators = function _EntraGroupMemberAddCommand_initValidators() {
117
117
  this.validators.push(async (args) => {
118
118
  if (args.options.groupId && !validation.isValidGuid(args.options.groupId)) {
119
119
  return `${args.options.groupId} is not a valid GUID for option groupId.`;
@@ -135,10 +135,10 @@ _EntraGroupUserAddCommand_instances = new WeakSet(), _EntraGroupUserAddCommand_i
135
135
  }
136
136
  return true;
137
137
  });
138
- }, _EntraGroupUserAddCommand_initOptionSets = function _EntraGroupUserAddCommand_initOptionSets() {
138
+ }, _EntraGroupMemberAddCommand_initOptionSets = function _EntraGroupMemberAddCommand_initOptionSets() {
139
139
  this.optionSets.push({ options: ['groupId', 'groupDisplayName'] }, { options: ['ids', 'userNames'] });
140
- }, _EntraGroupUserAddCommand_initTypes = function _EntraGroupUserAddCommand_initTypes() {
140
+ }, _EntraGroupMemberAddCommand_initTypes = function _EntraGroupMemberAddCommand_initTypes() {
141
141
  this.types.string.push('groupId', 'groupDisplayName', 'ids', 'userNames', 'role');
142
142
  };
143
- export default new EntraGroupUserAddCommand();
144
- //# sourceMappingURL=group-user-add.js.map
143
+ export default new EntraGroupMemberAddCommand();
144
+ //# sourceMappingURL=group-member-add.js.map
@@ -3,19 +3,19 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _EntraGroupUserListCommand_instances, _EntraGroupUserListCommand_initTelemetry, _EntraGroupUserListCommand_initOptions, _EntraGroupUserListCommand_initOptionSets, _EntraGroupUserListCommand_initValidators;
6
+ var _EntraGroupMemberListCommand_instances, _EntraGroupMemberListCommand_initTelemetry, _EntraGroupMemberListCommand_initOptions, _EntraGroupMemberListCommand_initOptionSets, _EntraGroupMemberListCommand_initValidators;
7
7
  import { entraGroup } from '../../../../utils/entraGroup.js';
8
8
  import { odata } from '../../../../utils/odata.js';
9
9
  import { validation } from '../../../../utils/validation.js';
10
10
  import GraphCommand from '../../../base/GraphCommand.js';
11
11
  import commands from '../../commands.js';
12
12
  import aadCommands from '../../aadCommands.js';
13
- class EntraGroupUserListCommand extends GraphCommand {
13
+ class EntraGroupMemberListCommand extends GraphCommand {
14
14
  get name() {
15
- return commands.GROUP_USER_LIST;
15
+ return commands.GROUP_MEMBER_LIST;
16
16
  }
17
17
  get description() {
18
- return 'Lists users of a specific Entra group';
18
+ return 'Lists members of a specific Entra group';
19
19
  }
20
20
  alias() {
21
21
  return [aadCommands.GROUP_USER_LIST];
@@ -25,14 +25,14 @@ class EntraGroupUserListCommand extends GraphCommand {
25
25
  }
26
26
  constructor() {
27
27
  super();
28
- _EntraGroupUserListCommand_instances.add(this);
29
- __classPrivateFieldGet(this, _EntraGroupUserListCommand_instances, "m", _EntraGroupUserListCommand_initTelemetry).call(this);
30
- __classPrivateFieldGet(this, _EntraGroupUserListCommand_instances, "m", _EntraGroupUserListCommand_initOptions).call(this);
31
- __classPrivateFieldGet(this, _EntraGroupUserListCommand_instances, "m", _EntraGroupUserListCommand_initOptionSets).call(this);
32
- __classPrivateFieldGet(this, _EntraGroupUserListCommand_instances, "m", _EntraGroupUserListCommand_initValidators).call(this);
28
+ _EntraGroupMemberListCommand_instances.add(this);
29
+ __classPrivateFieldGet(this, _EntraGroupMemberListCommand_instances, "m", _EntraGroupMemberListCommand_initTelemetry).call(this);
30
+ __classPrivateFieldGet(this, _EntraGroupMemberListCommand_instances, "m", _EntraGroupMemberListCommand_initOptions).call(this);
31
+ __classPrivateFieldGet(this, _EntraGroupMemberListCommand_instances, "m", _EntraGroupMemberListCommand_initOptionSets).call(this);
32
+ __classPrivateFieldGet(this, _EntraGroupMemberListCommand_instances, "m", _EntraGroupMemberListCommand_initValidators).call(this);
33
33
  }
34
34
  async commandAction(logger, args) {
35
- await this.showDeprecationWarning(logger, aadCommands.GROUP_USER_LIST, commands.GROUP_USER_LIST);
35
+ await this.showDeprecationWarning(logger, aadCommands.GROUP_USER_LIST, commands.GROUP_MEMBER_LIST);
36
36
  try {
37
37
  const groupId = await this.getGroupId(args.options, logger);
38
38
  const users = [];
@@ -86,7 +86,7 @@ class EntraGroupUserListCommand extends GraphCommand {
86
86
  });
87
87
  const expandParam = fieldExpand.length > 0 ? `&$expand=${fieldExpand}` : '';
88
88
  const selectParam = allSelectProperties.filter(item => !item.includes('/'));
89
- const endpoint = `${this.resource}/v1.0/groups/${groupId}/${role}/microsoft.graph.user?$select=${selectParam}${expandParam}`;
89
+ const endpoint = `${this.resource}/v1.0/groups/${groupId}/${role}?$select=${selectParam}${expandParam}`;
90
90
  let users = [];
91
91
  if (filter) {
92
92
  // While using the filter, we need to specify the ConsistencyLevel header.
@@ -107,7 +107,7 @@ class EntraGroupUserListCommand extends GraphCommand {
107
107
  return users;
108
108
  }
109
109
  }
110
- _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand_initTelemetry = function _EntraGroupUserListCommand_initTelemetry() {
110
+ _EntraGroupMemberListCommand_instances = new WeakSet(), _EntraGroupMemberListCommand_initTelemetry = function _EntraGroupMemberListCommand_initTelemetry() {
111
111
  this.telemetry.push((args) => {
112
112
  Object.assign(this.telemetryProperties, {
113
113
  groupId: typeof args.options.groupId !== 'undefined',
@@ -117,7 +117,7 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
117
117
  filter: typeof args.options.filter !== 'undefined'
118
118
  });
119
119
  });
120
- }, _EntraGroupUserListCommand_initOptions = function _EntraGroupUserListCommand_initOptions() {
120
+ }, _EntraGroupMemberListCommand_initOptions = function _EntraGroupMemberListCommand_initOptions() {
121
121
  this.options.unshift({
122
122
  option: "-i, --groupId [groupId]"
123
123
  }, {
@@ -130,11 +130,11 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
130
130
  }, {
131
131
  option: "-f, --filter [filter]"
132
132
  });
133
- }, _EntraGroupUserListCommand_initOptionSets = function _EntraGroupUserListCommand_initOptionSets() {
133
+ }, _EntraGroupMemberListCommand_initOptionSets = function _EntraGroupMemberListCommand_initOptionSets() {
134
134
  this.optionSets.push({
135
135
  options: ['groupId', 'groupName']
136
136
  });
137
- }, _EntraGroupUserListCommand_initValidators = function _EntraGroupUserListCommand_initValidators() {
137
+ }, _EntraGroupMemberListCommand_initValidators = function _EntraGroupMemberListCommand_initValidators() {
138
138
  this.validators.push(async (args) => {
139
139
  if (args.options.groupId && !validation.isValidGuid(args.options.groupId)) {
140
140
  return `${args.options.groupId} is not a valid GUID`;
@@ -147,5 +147,5 @@ _EntraGroupUserListCommand_instances = new WeakSet(), _EntraGroupUserListCommand
147
147
  return true;
148
148
  });
149
149
  };
150
- export default new EntraGroupUserListCommand();
151
- //# sourceMappingURL=group-user-list.js.map
150
+ export default new EntraGroupMemberListCommand();
151
+ //# sourceMappingURL=group-member-list.js.map
@@ -3,34 +3,34 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _EntraGroupUserSetCommand_instances, _EntraGroupUserSetCommand_initTelemetry, _EntraGroupUserSetCommand_initOptions, _EntraGroupUserSetCommand_initValidators, _EntraGroupUserSetCommand_initOptionSets, _EntraGroupUserSetCommand_initTypes;
6
+ var _EntraGroupMemberSetCommand_instances, _EntraGroupMemberSetCommand_initTelemetry, _EntraGroupMemberSetCommand_initOptions, _EntraGroupMemberSetCommand_initValidators, _EntraGroupMemberSetCommand_initOptionSets, _EntraGroupMemberSetCommand_initTypes;
7
7
  import request from '../../../../request.js';
8
8
  import { entraGroup } from '../../../../utils/entraGroup.js';
9
9
  import { entraUser } from '../../../../utils/entraUser.js';
10
10
  import { validation } from '../../../../utils/validation.js';
11
11
  import GraphCommand from '../../../base/GraphCommand.js';
12
12
  import commands from '../../commands.js';
13
- class EntraGroupUserSetCommand extends GraphCommand {
13
+ class EntraGroupMemberSetCommand extends GraphCommand {
14
14
  get name() {
15
- return commands.GROUP_USER_SET;
15
+ return commands.GROUP_MEMBER_SET;
16
16
  }
17
17
  get description() {
18
- return 'Updates role of users in a Microsoft Entra ID group';
18
+ return 'Updates the role of members in a Microsoft Entra ID group';
19
19
  }
20
20
  constructor() {
21
21
  super();
22
- _EntraGroupUserSetCommand_instances.add(this);
22
+ _EntraGroupMemberSetCommand_instances.add(this);
23
23
  this.roleValues = ['Owner', 'Member'];
24
- __classPrivateFieldGet(this, _EntraGroupUserSetCommand_instances, "m", _EntraGroupUserSetCommand_initTelemetry).call(this);
25
- __classPrivateFieldGet(this, _EntraGroupUserSetCommand_instances, "m", _EntraGroupUserSetCommand_initOptions).call(this);
26
- __classPrivateFieldGet(this, _EntraGroupUserSetCommand_instances, "m", _EntraGroupUserSetCommand_initValidators).call(this);
27
- __classPrivateFieldGet(this, _EntraGroupUserSetCommand_instances, "m", _EntraGroupUserSetCommand_initOptionSets).call(this);
28
- __classPrivateFieldGet(this, _EntraGroupUserSetCommand_instances, "m", _EntraGroupUserSetCommand_initTypes).call(this);
24
+ __classPrivateFieldGet(this, _EntraGroupMemberSetCommand_instances, "m", _EntraGroupMemberSetCommand_initTelemetry).call(this);
25
+ __classPrivateFieldGet(this, _EntraGroupMemberSetCommand_instances, "m", _EntraGroupMemberSetCommand_initOptions).call(this);
26
+ __classPrivateFieldGet(this, _EntraGroupMemberSetCommand_instances, "m", _EntraGroupMemberSetCommand_initValidators).call(this);
27
+ __classPrivateFieldGet(this, _EntraGroupMemberSetCommand_instances, "m", _EntraGroupMemberSetCommand_initOptionSets).call(this);
28
+ __classPrivateFieldGet(this, _EntraGroupMemberSetCommand_instances, "m", _EntraGroupMemberSetCommand_initTypes).call(this);
29
29
  }
30
30
  async commandAction(logger, args) {
31
31
  try {
32
32
  if (this.verbose) {
33
- await logger.logToStderr(`Adding user(s) ${args.options.ids || args.options.userNames} to group ${args.options.groupId || args.options.groupDisplayName}...`);
33
+ await logger.logToStderr(`Adding member(s) ${args.options.ids || args.options.userNames} to role ${args.options.role} of group ${args.options.groupId || args.options.groupDisplayName}...`);
34
34
  }
35
35
  const groupId = await this.getGroupId(logger, args.options);
36
36
  const userIds = await this.getUserIds(logger, args.options);
@@ -66,7 +66,7 @@ class EntraGroupUserSetCommand extends GraphCommand {
66
66
  const userIdsToRemove = [];
67
67
  const currentRole = options.role === 'Member' ? 'owners' : 'members';
68
68
  if (this.verbose) {
69
- await logger.logToStderr(`Removing users from the old role '${currentRole}'.`);
69
+ await logger.logToStderr(`Removing members from the old role '${currentRole}'.`);
70
70
  }
71
71
  for (let i = 0; i < userIds.length; i += 20) {
72
72
  const userIdsBatch = userIds.slice(i, i + 20);
@@ -153,7 +153,7 @@ class EntraGroupUserSetCommand extends GraphCommand {
153
153
  return requestOptions;
154
154
  }
155
155
  }
156
- _EntraGroupUserSetCommand_instances = new WeakSet(), _EntraGroupUserSetCommand_initTelemetry = function _EntraGroupUserSetCommand_initTelemetry() {
156
+ _EntraGroupMemberSetCommand_instances = new WeakSet(), _EntraGroupMemberSetCommand_initTelemetry = function _EntraGroupMemberSetCommand_initTelemetry() {
157
157
  this.telemetry.push((args) => {
158
158
  Object.assign(this.telemetryProperties, {
159
159
  groupId: typeof args.options.groupId !== 'undefined',
@@ -162,7 +162,7 @@ _EntraGroupUserSetCommand_instances = new WeakSet(), _EntraGroupUserSetCommand_i
162
162
  userNames: typeof args.options.userNames !== 'undefined'
163
163
  });
164
164
  });
165
- }, _EntraGroupUserSetCommand_initOptions = function _EntraGroupUserSetCommand_initOptions() {
165
+ }, _EntraGroupMemberSetCommand_initOptions = function _EntraGroupMemberSetCommand_initOptions() {
166
166
  this.options.unshift({
167
167
  option: '-i, --groupId [groupId]'
168
168
  }, {
@@ -175,7 +175,7 @@ _EntraGroupUserSetCommand_instances = new WeakSet(), _EntraGroupUserSetCommand_i
175
175
  option: '-r, --role <role>',
176
176
  autocomplete: this.roleValues
177
177
  });
178
- }, _EntraGroupUserSetCommand_initValidators = function _EntraGroupUserSetCommand_initValidators() {
178
+ }, _EntraGroupMemberSetCommand_initValidators = function _EntraGroupMemberSetCommand_initValidators() {
179
179
  this.validators.push(async (args) => {
180
180
  if (args.options.groupId && !validation.isValidGuid(args.options.groupId)) {
181
181
  return `${args.options.groupId} is not a valid GUID for option groupId.`;
@@ -197,10 +197,10 @@ _EntraGroupUserSetCommand_instances = new WeakSet(), _EntraGroupUserSetCommand_i
197
197
  }
198
198
  return true;
199
199
  });
200
- }, _EntraGroupUserSetCommand_initOptionSets = function _EntraGroupUserSetCommand_initOptionSets() {
200
+ }, _EntraGroupMemberSetCommand_initOptionSets = function _EntraGroupMemberSetCommand_initOptionSets() {
201
201
  this.optionSets.push({ options: ['groupId', 'groupDisplayName'] }, { options: ['ids', 'userNames'] });
202
- }, _EntraGroupUserSetCommand_initTypes = function _EntraGroupUserSetCommand_initTypes() {
202
+ }, _EntraGroupMemberSetCommand_initTypes = function _EntraGroupMemberSetCommand_initTypes() {
203
203
  this.types.string.push('groupId', 'groupDisplayName', 'ids', 'userNames', 'role');
204
204
  };
205
- export default new EntraGroupUserSetCommand();
206
- //# sourceMappingURL=group-user-set.js.map
205
+ export default new EntraGroupMemberSetCommand();
206
+ //# sourceMappingURL=group-member-set.js.map
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _EntraM365GroupSetCommand_instances, _EntraM365GroupSetCommand_initTelemetry, _EntraM365GroupSetCommand_initOptions, _EntraM365GroupSetCommand_initTypes, _EntraM365GroupSetCommand_initValidators;
6
+ var _EntraM365GroupSetCommand_instances, _EntraM365GroupSetCommand_initTelemetry, _EntraM365GroupSetCommand_initOptions, _EntraM365GroupSetCommand_initOptionSets, _EntraM365GroupSetCommand_initTypes, _EntraM365GroupSetCommand_initValidators;
7
7
  import { setTimeout } from 'timers/promises';
8
8
  import fs from 'fs';
9
9
  import path from 'path';
@@ -31,8 +31,9 @@ class EntraM365GroupSetCommand extends GraphCommand {
31
31
  this.pollingInterval = 500;
32
32
  __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initTelemetry).call(this);
33
33
  __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initOptions).call(this);
34
- __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initTypes).call(this);
35
34
  __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initValidators).call(this);
35
+ __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initOptionSets).call(this);
36
+ __classPrivateFieldGet(this, _EntraM365GroupSetCommand_instances, "m", _EntraM365GroupSetCommand_initTypes).call(this);
36
37
  }
37
38
  async commandAction(logger, args) {
38
39
  await this.showDeprecationWarning(logger, aadCommands.M365GROUP_SET, commands.M365GROUP_SET);
@@ -40,23 +41,24 @@ class EntraM365GroupSetCommand extends GraphCommand {
40
41
  if ((args.options.allowExternalSenders !== undefined || args.options.autoSubscribeNewMembers !== undefined) && accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken)) {
41
42
  throw `Option 'allowExternalSenders' and 'autoSubscribeNewMembers' can only be used when using delegated permissions.`;
42
43
  }
43
- const isUnifiedGroup = await entraGroup.isUnifiedGroup(args.options.id);
44
+ const groupId = args.options.id || await entraGroup.getGroupIdByDisplayName(args.options.displayName);
45
+ const isUnifiedGroup = await entraGroup.isUnifiedGroup(groupId);
44
46
  if (!isUnifiedGroup) {
45
- throw Error(`Specified group with id '${args.options.id}' is not a Microsoft 365 group.`);
47
+ throw Error(`Specified group with id '${groupId}' is not a Microsoft 365 group.`);
46
48
  }
47
49
  if (this.verbose) {
48
- await logger.logToStderr(`Updating Microsoft 365 Group ${args.options.id}...`);
50
+ await logger.logToStderr(`Updating Microsoft 365 Group ${args.options.id || args.options.displayName}...`);
49
51
  }
50
- if (args.options.displayName || args.options.description !== undefined || args.options.isPrivate !== undefined) {
52
+ if (args.options.newDisplayName || args.options.description !== undefined || args.options.isPrivate !== undefined) {
51
53
  const update = {
52
- displayName: args.options.displayName,
54
+ displayName: args.options.newDisplayName,
53
55
  description: args.options.description !== '' ? args.options.description : null
54
56
  };
55
57
  if (args.options.isPrivate !== undefined) {
56
58
  update.visibility = args.options.isPrivate ? 'Private' : 'Public';
57
59
  }
58
60
  const requestOptions = {
59
- url: `${this.resource}/v1.0/groups/${args.options.id}`,
61
+ url: `${this.resource}/v1.0/groups/${groupId}`,
60
62
  headers: {
61
63
  'accept': 'application/json;odata.metadata=none'
62
64
  },
@@ -74,7 +76,7 @@ class EntraM365GroupSetCommand extends GraphCommand {
74
76
  hideFromOutlookClients: args.options.hideFromOutlookClients
75
77
  };
76
78
  const requestOptions = {
77
- url: `${this.resource}/v1.0/groups/${args.options.id}`,
79
+ url: `${this.resource}/v1.0/groups/${groupId}`,
78
80
  headers: {
79
81
  accept: 'application/json;odata.metadata=none'
80
82
  },
@@ -89,7 +91,7 @@ class EntraM365GroupSetCommand extends GraphCommand {
89
91
  await logger.logToStderr(`Setting group logo ${fullPath}...`);
90
92
  }
91
93
  const requestOptions = {
92
- url: `${this.resource}/v1.0/groups/${args.options.id}/photo/$value`,
94
+ url: `${this.resource}/v1.0/groups/${groupId}/photo/$value`,
93
95
  headers: {
94
96
  'content-type': this.getImageContentType(fullPath)
95
97
  },
@@ -114,7 +116,7 @@ class EntraM365GroupSetCommand extends GraphCommand {
114
116
  };
115
117
  const res = await request.get(requestOptions);
116
118
  await Promise.all(res.value.map(u => request.post({
117
- url: `${this.resource}/v1.0/groups/${args.options.id}/owners/$ref`,
119
+ url: `${this.resource}/v1.0/groups/${groupId}/owners/$ref`,
118
120
  headers: {
119
121
  'content-type': 'application/json'
120
122
  },
@@ -141,7 +143,7 @@ class EntraM365GroupSetCommand extends GraphCommand {
141
143
  };
142
144
  const res = await request.get(requestOptions);
143
145
  await Promise.all(res.value.map(u => request.post({
144
- url: `${this.resource}/v1.0/groups/${args.options.id}/members/$ref`,
146
+ url: `${this.resource}/v1.0/groups/${groupId}/members/$ref`,
145
147
  headers: {
146
148
  'content-type': 'application/json'
147
149
  },
@@ -188,7 +190,9 @@ class EntraM365GroupSetCommand extends GraphCommand {
188
190
  _EntraM365GroupSetCommand_instances = new WeakSet(), _EntraM365GroupSetCommand_initTelemetry = function _EntraM365GroupSetCommand_initTelemetry() {
189
191
  this.telemetry.push((args) => {
190
192
  Object.assign(this.telemetryProperties, {
193
+ id: typeof args.options.id !== 'undefined',
191
194
  displayName: typeof args.options.displayName !== 'undefined',
195
+ newDisplayName: typeof args.options.newDisplayName !== 'undefined',
192
196
  description: typeof args.options.description !== 'undefined',
193
197
  owners: typeof args.options.owners !== 'undefined',
194
198
  members: typeof args.options.members !== 'undefined',
@@ -202,9 +206,11 @@ _EntraM365GroupSetCommand_instances = new WeakSet(), _EntraM365GroupSetCommand_i
202
206
  });
203
207
  }, _EntraM365GroupSetCommand_initOptions = function _EntraM365GroupSetCommand_initOptions() {
204
208
  this.options.unshift({
205
- option: '-i, --id <id>'
209
+ option: '-i, --id [id]'
206
210
  }, {
207
211
  option: '-n, --displayName [displayName]'
212
+ }, {
213
+ option: '--newDisplayName [newDisplayName]'
208
214
  }, {
209
215
  option: '-d, --description [description]'
210
216
  }, {
@@ -229,12 +235,14 @@ _EntraM365GroupSetCommand_instances = new WeakSet(), _EntraM365GroupSetCommand_i
229
235
  option: '--hideFromOutlookClients [hideFromOutlookClients]',
230
236
  autocomplete: ['true', 'false']
231
237
  });
238
+ }, _EntraM365GroupSetCommand_initOptionSets = function _EntraM365GroupSetCommand_initOptionSets() {
239
+ this.optionSets.push({ options: ['id', 'displayName'] });
232
240
  }, _EntraM365GroupSetCommand_initTypes = function _EntraM365GroupSetCommand_initTypes() {
233
241
  this.types.boolean.push('isPrivate', 'allowEternalSenders', 'autoSubscribeNewMembers', 'hideFromAddressLists', 'hideFromOutlookClients');
234
- this.types.string.push('id', 'displayName', 'description', 'owners', 'members', 'logoPath');
242
+ this.types.string.push('id', 'displayName', 'newDisplayName', 'description', 'owners', 'members', 'logoPath');
235
243
  }, _EntraM365GroupSetCommand_initValidators = function _EntraM365GroupSetCommand_initValidators() {
236
244
  this.validators.push(async (args) => {
237
- if (!args.options.displayName &&
245
+ if (!args.options.newDisplayName &&
238
246
  args.options.description === undefined &&
239
247
  !args.options.members &&
240
248
  !args.options.owners &&
@@ -246,7 +254,7 @@ _EntraM365GroupSetCommand_instances = new WeakSet(), _EntraM365GroupSetCommand_i
246
254
  args.options.hideFromOutlookClients === undefined) {
247
255
  return 'Specify at least one option to update.';
248
256
  }
249
- if (!validation.isValidGuid(args.options.id)) {
257
+ if (args.options.id && !validation.isValidGuid(args.options.id)) {
250
258
  return `${args.options.id} is not a valid GUID`;
251
259
  }
252
260
  if (args.options.owners) {
@@ -35,19 +35,15 @@ class EntraM365GroupUserAddCommand extends GraphCommand {
35
35
  }
36
36
  async commandAction(logger, args) {
37
37
  await this.showDeprecationWarning(logger, aadCommands.M365GROUP_USER_ADD, commands.M365GROUP_USER_ADD);
38
- if (args.options.userName) {
39
- await this.warn(logger, `Option 'userName' is deprecated. Please use 'ids' or 'userNames' instead.`);
40
- }
41
38
  try {
42
- const userNames = args.options.userNames || args.options.userName;
43
39
  const providedGroupId = await this.getGroupId(logger, args);
44
40
  const isUnifiedGroup = await entraGroup.isUnifiedGroup(providedGroupId);
45
41
  if (!isUnifiedGroup) {
46
42
  throw Error(`Specified group with id '${providedGroupId}' is not a Microsoft 365 group.`);
47
43
  }
48
- const userIds = await this.getUserIds(logger, args.options.ids, userNames);
44
+ const userIds = await this.getUserIds(logger, args.options.ids, args.options.userNames);
49
45
  if (this.verbose) {
50
- await logger.logToStderr(`Adding user(s) ${args.options.ids || userNames} to group ${args.options.groupId || args.options.groupName || args.options.teamId || args.options.teamName}...`);
46
+ await logger.logToStderr(`Adding user(s) ${args.options.ids || args.options.userNames} to group ${args.options.groupId || args.options.groupName || args.options.teamId || args.options.teamName}...`);
51
47
  }
52
48
  await this.addUsers(providedGroupId, userIds, args.options.role);
53
49
  }
@@ -122,14 +118,11 @@ _EntraM365GroupUserAddCommand_instances = new WeakSet(), _EntraM365GroupUserAddC
122
118
  teamName: typeof args.options.teamName !== 'undefined',
123
119
  groupName: typeof args.options.groupName !== 'undefined',
124
120
  ids: typeof args.options.ids !== 'undefined',
125
- userNames: typeof args.options.userNames !== 'undefined',
126
- userName: typeof args.options.userName !== 'undefined'
121
+ userNames: typeof args.options.userNames !== 'undefined'
127
122
  });
128
123
  });
129
124
  }, _EntraM365GroupUserAddCommand_initOptions = function _EntraM365GroupUserAddCommand_initOptions() {
130
125
  this.options.unshift({
131
- option: '-n, --userName [userName]'
132
- }, {
133
126
  option: '--ids [ids]'
134
127
  }, {
135
128
  option: '--userNames [userNames]'
@@ -172,9 +165,9 @@ _EntraM365GroupUserAddCommand_instances = new WeakSet(), _EntraM365GroupUserAddC
172
165
  });
173
166
  }, _EntraM365GroupUserAddCommand_initOptionSets = function _EntraM365GroupUserAddCommand_initOptionSets() {
174
167
  this.optionSets.push({ options: ['groupId', 'groupName', 'teamId', 'teamName'] });
175
- this.optionSets.push({ options: ['userName', 'ids', 'userNames'] });
168
+ this.optionSets.push({ options: ['ids', 'userNames'] });
176
169
  }, _EntraM365GroupUserAddCommand_initTypes = function _EntraM365GroupUserAddCommand_initTypes() {
177
- this.types.string.push('userName', 'ids', 'userNames', 'groupId', 'groupName', 'teamId', 'teamName', 'role');
170
+ this.types.string.push('ids', 'userNames', 'groupId', 'groupName', 'teamId', 'teamName', 'role');
178
171
  };
179
172
  export default new EntraM365GroupUserAddCommand();
180
173
  //# sourceMappingURL=m365group-user-add.js.map
@@ -4,8 +4,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _EntraOAuth2GrantListCommand_instances, _EntraOAuth2GrantListCommand_initOptions, _EntraOAuth2GrantListCommand_initValidators;
7
- import request from '../../../../request.js';
8
7
  import { formatting } from '../../../../utils/formatting.js';
8
+ import { odata } from '../../../../utils/odata.js';
9
9
  import { validation } from '../../../../utils/validation.js';
10
10
  import GraphCommand from '../../../base/GraphCommand.js';
11
11
  import aadCommands from '../../aadCommands.js';
@@ -35,17 +35,8 @@ class EntraOAuth2GrantListCommand extends GraphCommand {
35
35
  await logger.logToStderr(`Retrieving list of OAuth grants for the service principal...`);
36
36
  }
37
37
  try {
38
- const requestOptions = {
39
- url: `${this.resource}/v1.0/oauth2PermissionGrants?$filter=clientId eq '${formatting.encodeQueryParameter(args.options.spObjectId)}'`,
40
- headers: {
41
- accept: 'application/json;odata.metadata=none'
42
- },
43
- responseType: 'json'
44
- };
45
- const res = await request.get(requestOptions);
46
- if (res.value && res.value.length > 0) {
47
- await logger.log(res.value);
48
- }
38
+ const res = await odata.getAllItems(`${this.resource}/v1.0/oauth2PermissionGrants?$filter=clientId eq '${formatting.encodeQueryParameter(args.options.spObjectId)}'`);
39
+ await logger.log(res);
49
40
  }
50
41
  catch (err) {
51
42
  this.handleRejectedODataJsonPromise(err);
@@ -41,9 +41,9 @@ export default {
41
41
  GROUP_LIST: `${prefix} group list`,
42
42
  GROUP_REMOVE: `${prefix} group remove`,
43
43
  GROUP_SET: `${prefix} group set`,
44
- GROUP_USER_ADD: `${prefix} group user add`,
45
- GROUP_USER_LIST: `${prefix} group user list`,
46
- GROUP_USER_SET: `${prefix} group user set`,
44
+ GROUP_MEMBER_ADD: `${prefix} group member add`,
45
+ GROUP_MEMBER_LIST: `${prefix} group member list`,
46
+ GROUP_MEMBER_SET: `${prefix} group member set`,
47
47
  GROUPSETTING_ADD: `${prefix} groupsetting add`,
48
48
  GROUPSETTING_GET: `${prefix} groupsetting get`,
49
49
  GROUPSETTING_LIST: `${prefix} groupsetting list`,