@pnp/cli-microsoft365 10.0.0-beta.787c5f1 → 10.0.0-beta.7be7794

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 (125) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/Auth.js +6 -4
  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/commands/login.js +120 -67
  10. package/dist/m365/entra/commands/group/{group-user-add.js → group-member-add.js} +18 -18
  11. package/dist/m365/entra/commands/group/{group-user-list.js → group-member-list.js} +17 -17
  12. package/dist/m365/entra/commands/group/{group-user-set.js → group-member-set.js} +19 -19
  13. package/dist/m365/entra/commands/m365group/m365group-set.js +159 -81
  14. package/dist/m365/entra/commands/m365group/m365group-user-add.js +5 -12
  15. package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +3 -12
  16. package/dist/m365/entra/commands.js +3 -3
  17. package/dist/m365/external/commands/item/item-add.js +2 -5
  18. package/dist/m365/file/commands/file-move.js +135 -0
  19. package/dist/m365/file/commands.js +2 -1
  20. package/dist/m365/flow/commands/environment/environment-list.js +1 -1
  21. package/dist/m365/pa/commands/app/app-list.js +1 -6
  22. package/dist/m365/pa/commands/connector/connector-list.js +1 -6
  23. package/dist/m365/pa/commands/environment/environment-list.js +1 -1
  24. package/dist/m365/pp/commands/environment/environment-list.js +1 -1
  25. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.20.0.js +27 -0
  26. package/dist/m365/spfx/commands/project/project-doctor/rules/FN002021_DEVDEP_rushstack_eslint_config.js +10 -0
  27. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  28. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0.js +59 -0
  29. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  30. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  31. package/dist/m365/spo/commands/app/app-instance-list.js +3 -18
  32. package/dist/m365/spo/commands/app/app-list.js +1 -8
  33. package/dist/m365/spo/commands/feature/feature-list.js +1 -8
  34. package/dist/m365/spo/commands/file/file-copy.js +5 -1
  35. package/dist/m365/spo/commands/file/file-move.js +55 -33
  36. package/dist/m365/spo/commands/list/list-webhook-list.js +1 -6
  37. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +1 -8
  38. package/dist/m365/spo/commands/page/page-list.js +1 -1
  39. package/dist/m365/spo/commands/page/page-remove.js +37 -16
  40. package/dist/m365/spo/commands/page/page-template-list.js +1 -3
  41. package/dist/m365/spo/commands/site/site-admin-list.js +8 -9
  42. package/dist/m365/spo/commands/site/site-admin-remove.js +194 -0
  43. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +68 -0
  44. package/dist/m365/spo/commands/sitescript/sitescript-get.js +3 -2
  45. package/dist/m365/spo/commands/sitescript/sitescript-list.js +1 -3
  46. package/dist/m365/spo/commands/{site/site-rename.js → tenant/tenant-site-rename.js} +29 -32
  47. package/dist/m365/spo/commands/theme/theme-list.js +1 -1
  48. package/dist/m365/spo/commands/web/web-clientsidewebpart-list.js +1 -6
  49. package/dist/m365/spo/commands.js +3 -1
  50. package/dist/m365/teams/MeetingTranscript.js +2 -0
  51. package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +152 -0
  52. package/dist/m365/teams/commands/tab/tab-list.js +5 -3
  53. package/dist/m365/teams/commands.js +1 -0
  54. package/dist/m365/viva/commands/engage/Community.js +2 -0
  55. package/dist/m365/viva/commands/engage/engage-community-list.js +28 -0
  56. package/dist/m365/viva/commands.js +1 -0
  57. package/dist/request.js +46 -61
  58. package/dist/utils/driveUtil.js +51 -0
  59. package/dist/utils/spo.js +8 -8
  60. package/dist/utils/timersUtil.js +12 -0
  61. package/dist/utils/urlUtil.js +8 -0
  62. package/docs/docs/cmd/cli/cli-doctor.mdx +24 -23
  63. package/docs/docs/cmd/entra/group/group-member-add.mdx +62 -0
  64. package/docs/docs/cmd/entra/group/{group-user-list.mdx → group-member-list.mdx} +14 -14
  65. package/docs/docs/cmd/entra/group/group-member-set.mdx +62 -0
  66. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +2 -2
  67. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +37 -16
  68. package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +0 -3
  69. package/docs/docs/cmd/external/item/item-add.mdx +3 -3
  70. package/docs/docs/cmd/file/file-move.mdx +79 -0
  71. package/docs/docs/cmd/login.mdx +9 -0
  72. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  73. package/docs/docs/cmd/spo/cdn/cdn-get.mdx +1 -1
  74. package/docs/docs/cmd/spo/cdn/cdn-origin-add.mdx +1 -1
  75. package/docs/docs/cmd/spo/cdn/cdn-origin-list.mdx +1 -1
  76. package/docs/docs/cmd/spo/cdn/cdn-origin-remove.mdx +1 -1
  77. package/docs/docs/cmd/spo/cdn/cdn-policy-list.mdx +1 -1
  78. package/docs/docs/cmd/spo/cdn/cdn-policy-set.mdx +1 -1
  79. package/docs/docs/cmd/spo/externaluser/externaluser-list.mdx +1 -1
  80. package/docs/docs/cmd/spo/file/file-move.mdx +116 -9
  81. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  82. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  83. package/docs/docs/cmd/spo/homesite/homesite-remove.mdx +1 -1
  84. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.mdx +1 -1
  85. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.mdx +1 -1
  86. package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.mdx +1 -1
  87. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +1 -1
  88. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-list.mdx +1 -1
  89. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-remove.mdx +1 -1
  90. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-list.mdx +1 -1
  91. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-remove.mdx +1 -1
  92. package/docs/docs/cmd/spo/orgnewssite/orgnewssite-set.mdx +1 -1
  93. package/docs/docs/cmd/spo/page/page-remove.mdx +30 -12
  94. package/docs/docs/cmd/spo/site/site-admin-add.mdx +2 -2
  95. package/docs/docs/cmd/spo/site/site-admin-list.mdx +64 -12
  96. package/docs/docs/cmd/spo/site/site-admin-remove.mdx +67 -0
  97. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  98. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
  99. package/docs/docs/cmd/spo/site/site-commsite-enable.mdx +1 -1
  100. package/docs/docs/cmd/spo/site/site-list.mdx +6 -4
  101. package/docs/docs/cmd/spo/site/site-set.mdx +1 -1
  102. package/docs/docs/cmd/spo/site/site-sharingpermission-set.mdx +58 -0
  103. package/docs/docs/cmd/spo/sitescript/sitescript-get.mdx +14 -1
  104. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  105. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  106. package/docs/docs/cmd/spo/tenant/tenant-appcatalog-add.mdx +1 -1
  107. package/docs/docs/cmd/spo/tenant/tenant-appcatalogurl-get.mdx +1 -1
  108. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-list.mdx +1 -1
  109. package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-remove.mdx +1 -1
  110. package/docs/docs/cmd/spo/tenant/tenant-settings-list.mdx +1 -1
  111. package/docs/docs/cmd/spo/{site/site-rename.mdx → tenant/tenant-site-rename.mdx} +7 -7
  112. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  113. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  114. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  115. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  116. package/docs/docs/cmd/spo/theme/theme-set.mdx +1 -1
  117. package/docs/docs/cmd/spp/contentcenter/contentcenter-list.mdx +3 -5
  118. package/docs/docs/cmd/teams/meeting/meeting-transcript-get.mdx +132 -0
  119. package/docs/docs/cmd/teams/tab/tab-list.mdx +1 -2
  120. package/docs/docs/cmd/viva/engage/engage-community-list.mdx +81 -0
  121. package/package.json +1 -1
  122. package/dist/m365/cli/commands/cli-reconsent.js +0 -29
  123. package/docs/docs/cmd/cli/cli-reconsent.mdx +0 -62
  124. package/docs/docs/cmd/entra/group/group-user-add.mdx +0 -62
  125. 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();
@@ -353,7 +353,9 @@ export class Auth {
353
353
  await logger.logToStderr(response);
354
354
  await logger.logToStderr('');
355
355
  }
356
- await logger.logToStderr(`🌶️ ${response.message}`);
356
+ if (response.message) {
357
+ await logger.logToStderr(`🌶️ ${response.message}`);
358
+ }
357
359
  if (cli.getSettingWithDefaultValue(settingsNames.autoOpenLinksInBrowser, false)) {
358
360
  await browserUtil.open(response.verificationUri);
359
361
  }
@@ -471,7 +473,7 @@ export class Auth {
471
473
  }
472
474
  if (userName && process.env.ACC_CLOUD) {
473
475
  // reject for now since the Azure Cloud Shell does not support user-managed identity
474
- 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';
475
477
  }
476
478
  requestOptions.url = `${process.env.IDENTITY_ENDPOINT}?resource=${encodeURIComponent(resource)}`;
477
479
  }
@@ -481,7 +483,7 @@ export class Auth {
481
483
  }
482
484
  if (userName && process.env.ACC_CLOUD) {
483
485
  // reject for now since the Azure Cloud Shell does not support user-managed identity
484
- 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';
485
487
  }
486
488
  requestOptions.url = `${process.env.MSI_ENDPOINT}?resource=${encodeURIComponent(resource)}`;
487
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
@@ -21,7 +21,8 @@ const options = globalOptionsZod
21
21
  appId: z.string().optional(),
22
22
  tenant: z.string().optional(),
23
23
  secret: zod.alias('s', z.string().optional()),
24
- connectionName: z.string().optional()
24
+ connectionName: z.string().optional(),
25
+ ensure: z.boolean().optional()
25
26
  })
26
27
  .strict();
27
28
  class LoginCommand extends Command {
@@ -67,75 +68,16 @@ class LoginCommand extends Command {
67
68
  });
68
69
  }
69
70
  async commandAction(logger, args) {
70
- // disconnect before re-connecting
71
71
  if (this.debug) {
72
72
  await logger.logToStderr(`Logging out from Microsoft 365...`);
73
73
  }
74
- const deactivate = () => auth.connection.deactivate();
75
- const getCertificate = (options) => {
76
- // command args take precedence over settings
77
- if (options.certificateFile) {
78
- return fs.readFileSync(options.certificateFile).toString('base64');
79
- }
80
- if (options.certificateBase64Encoded) {
81
- return options.certificateBase64Encoded;
82
- }
83
- return cli.getConfig().get(settingsNames.clientCertificateFile) ||
84
- cli.getConfig().get(settingsNames.clientCertificateBase64Encoded);
85
- };
86
- const login = async () => {
87
- if (this.verbose) {
88
- await logger.logToStderr(`Signing in to Microsoft 365...`);
89
- }
90
- const authType = args.options.authType || cli.getSettingWithDefaultValue(settingsNames.authType, 'deviceCode');
91
- auth.connection.appId = args.options.appId || cli.getClientId();
92
- auth.connection.tenant = args.options.tenant || cli.getTenant();
93
- auth.connection.name = args.options.connectionName;
94
- switch (authType) {
95
- case 'password':
96
- auth.connection.authType = AuthType.Password;
97
- auth.connection.userName = args.options.userName;
98
- auth.connection.password = args.options.password;
99
- break;
100
- case 'certificate':
101
- auth.connection.authType = AuthType.Certificate;
102
- auth.connection.certificate = getCertificate(args.options);
103
- auth.connection.thumbprint = args.options.thumbprint;
104
- auth.connection.password = args.options.password ?? cli.getConfig().get(settingsNames.clientCertificatePassword);
105
- break;
106
- case 'identity':
107
- auth.connection.authType = AuthType.Identity;
108
- auth.connection.userName = args.options.userName;
109
- break;
110
- case 'browser':
111
- auth.connection.authType = AuthType.Browser;
112
- break;
113
- case 'secret':
114
- auth.connection.authType = AuthType.Secret;
115
- auth.connection.secret = args.options.secret || cli.getConfig().get(settingsNames.clientSecret);
116
- break;
117
- }
118
- auth.connection.cloudType = args.options.cloud;
119
- try {
120
- await auth.ensureAccessToken(auth.defaultResource, logger, this.debug);
121
- auth.connection.active = true;
122
- }
123
- catch (error) {
124
- if (this.debug) {
125
- await logger.logToStderr('Error:');
126
- await logger.logToStderr(error);
127
- await logger.logToStderr('');
128
- }
129
- throw new CommandError(error.message);
130
- }
131
- const details = auth.getConnectionDetails(auth.connection);
132
- if (this.debug) {
133
- details.accessToken = JSON.stringify(auth.connection.accessTokens, null, 2);
134
- }
135
- await logger.log(details);
136
- };
137
- deactivate();
138
- await login();
74
+ if (this.shouldLogin(args.options)) {
75
+ auth.connection.deactivate();
76
+ await this.login(logger, args);
77
+ }
78
+ else {
79
+ await this.ensureAccessToken(logger);
80
+ }
139
81
  }
140
82
  async action(logger, args) {
141
83
  try {
@@ -147,6 +89,117 @@ class LoginCommand extends Command {
147
89
  await this.initAction(args, logger);
148
90
  await this.commandAction(logger, args);
149
91
  }
92
+ shouldLogin(options) {
93
+ if (!auth.connection.active) {
94
+ return true;
95
+ }
96
+ if (!options.ensure) {
97
+ return true;
98
+ }
99
+ const authType = options.authType || cli.getSettingWithDefaultValue(settingsNames.authType, 'deviceCode');
100
+ if (authType !== auth.connection.authType) {
101
+ return true;
102
+ }
103
+ if (options.cloud !== auth.connection.cloudType) {
104
+ return true;
105
+ }
106
+ if (options.appId && options.appId !== auth.connection.appId) {
107
+ return true;
108
+ }
109
+ if (options.tenant && options.tenant !== auth.connection.tenant) {
110
+ return true;
111
+ }
112
+ if (authType === AuthType.Password && (options.password && options.userName !== auth.connection.userName)) {
113
+ return true;
114
+ }
115
+ if (authType === AuthType.Certificate && (options.certificateFile && (auth.connection.certificate !== fs.readFileSync(options.certificateFile, 'base64')))) {
116
+ return true;
117
+ }
118
+ if (authType === AuthType.Identity && (options.userName && options.userName !== auth.connection.userName)) {
119
+ return true;
120
+ }
121
+ if (authType === AuthType.Secret && (options.secret && options.secret !== auth.connection.secret)) {
122
+ return true;
123
+ }
124
+ const now = new Date();
125
+ const accessToken = auth.connection.accessTokens[auth.defaultResource];
126
+ const expiresOn = accessToken && accessToken.expiresOn ?
127
+ // if expiresOn is serialized from the service file, it's set as a string
128
+ // if it's coming from MSAL, it's a Date
129
+ typeof accessToken.expiresOn === 'string' ? new Date(accessToken.expiresOn) : accessToken.expiresOn
130
+ : new Date(0);
131
+ if (expiresOn < now) {
132
+ return true;
133
+ }
134
+ return false;
135
+ }
136
+ async ensureAccessToken(logger) {
137
+ try {
138
+ await auth.ensureAccessToken(auth.defaultResource, logger, this.debug);
139
+ auth.connection.active = true;
140
+ }
141
+ catch (error) {
142
+ if (this.debug) {
143
+ await logger.logToStderr('Error:');
144
+ await logger.logToStderr(error);
145
+ await logger.logToStderr('');
146
+ }
147
+ throw new CommandError(error.message);
148
+ }
149
+ }
150
+ getCertificate(options) {
151
+ // command args take precedence over settings
152
+ if (options.certificateFile) {
153
+ return fs.readFileSync(options.certificateFile).toString('base64');
154
+ }
155
+ if (options.certificateBase64Encoded) {
156
+ return options.certificateBase64Encoded;
157
+ }
158
+ return cli.getConfig().get(settingsNames.clientCertificateFile) ||
159
+ cli.getConfig().get(settingsNames.clientCertificateBase64Encoded);
160
+ }
161
+ ;
162
+ async login(logger, args) {
163
+ if (this.verbose) {
164
+ await logger.logToStderr(`Signing in to Microsoft 365...`);
165
+ }
166
+ const authType = args.options.authType || cli.getSettingWithDefaultValue(settingsNames.authType, 'deviceCode');
167
+ auth.connection.appId = args.options.appId || cli.getClientId();
168
+ auth.connection.tenant = args.options.tenant || cli.getTenant();
169
+ auth.connection.name = args.options.connectionName;
170
+ switch (authType) {
171
+ case 'password':
172
+ auth.connection.authType = AuthType.Password;
173
+ auth.connection.userName = args.options.userName;
174
+ auth.connection.password = args.options.password;
175
+ break;
176
+ case 'certificate':
177
+ auth.connection.authType = AuthType.Certificate;
178
+ auth.connection.certificate = this.getCertificate(args.options);
179
+ auth.connection.thumbprint = args.options.thumbprint;
180
+ auth.connection.password = args.options.password ?? cli.getConfig().get(settingsNames.clientCertificatePassword);
181
+ break;
182
+ case 'identity':
183
+ auth.connection.authType = AuthType.Identity;
184
+ auth.connection.userName = args.options.userName;
185
+ break;
186
+ case 'browser':
187
+ auth.connection.authType = AuthType.Browser;
188
+ break;
189
+ case 'secret':
190
+ auth.connection.authType = AuthType.Secret;
191
+ auth.connection.secret = args.options.secret || cli.getConfig().get(settingsNames.clientSecret);
192
+ break;
193
+ }
194
+ auth.connection.cloudType = args.options.cloud;
195
+ await this.ensureAccessToken(logger);
196
+ const details = auth.getConnectionDetails(auth.connection);
197
+ if (this.debug) {
198
+ details.accessToken = JSON.stringify(auth.connection.accessTokens, null, 2);
199
+ }
200
+ await logger.log(details);
201
+ }
202
+ ;
150
203
  }
151
204
  export default new LoginCommand();
152
205
  //# sourceMappingURL=login.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