@pnp/cli-microsoft365 11.7.0-beta.71e4ac5 → 11.7.0-beta.837cfea
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.
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/m365/entra/commands/user/user-license-add.js +2 -1
- package/dist/m365/entra/commands/user/user-license-list.js +4 -9
- package/dist/m365/entra/commands/user/user-license-remove.js +2 -1
- package/dist/m365/outlook/commands/calendar/calendar-set.js +132 -0
- package/dist/m365/outlook/commands/calendargroup/calendargroup-get.js +114 -0
- package/dist/m365/outlook/commands/calendargroup/calendargroup-set.js +115 -0
- package/dist/m365/outlook/commands/event/event-cancel.js +103 -0
- package/dist/m365/outlook/commands/event/event-remove.js +104 -0
- package/dist/m365/outlook/commands.js +5 -0
- package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +643 -0
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +2 -2
- package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +13 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.23.0-rc.0.js +19 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +16 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002021_DEVDEP_rushstack_eslint_config.js +2 -2
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002032_DEVDEP_typescript_eslint_parser.js +2 -2
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015008_FILE_eslintrc_js.js +1 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015016_FILE_eslint_config_js.js +10 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.23.0-rc.0.js +84 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +12 -11
- package/dist/m365/spfx/commands/spfx-doctor.js +5 -631
- package/dist/m365/spo/commands/brandcenter/brandcenter-colors-list.js +59 -0
- package/dist/m365/spo/commands/propertybag/propertybag-set.js +3 -9
- package/dist/m365/spo/commands/tenant/tenant-settings-set.js +5 -1
- package/dist/m365/spo/commands.js +1 -0
- package/dist/m365/teams/commands/chat/chat-message-list.js +43 -4
- package/dist/request.js +0 -16
- package/dist/utils/entraApp.js +9 -2
- package/dist/utils/spfx.js +59 -0
- package/docs/docs/cmd/entra/license/license-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +21 -0
- package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +19 -0
- package/docs/docs/cmd/entra/m365group/m365group-user-remove.mdx +21 -0
- package/docs/docs/cmd/entra/m365group/m365group-user-set.mdx +21 -0
- package/docs/docs/cmd/entra/roledefinition/roledefinition-add.mdx +19 -0
- package/docs/docs/cmd/entra/roledefinition/roledefinition-get.mdx +19 -0
- package/docs/docs/cmd/entra/roledefinition/roledefinition-list.mdx +19 -0
- package/docs/docs/cmd/entra/roledefinition/roledefinition-remove.mdx +21 -0
- package/docs/docs/cmd/entra/roledefinition/roledefinition-set.mdx +21 -0
- package/docs/docs/cmd/entra/siteclassification/siteclassification-disable.mdx +21 -0
- package/docs/docs/cmd/entra/siteclassification/siteclassification-enable.mdx +21 -0
- package/docs/docs/cmd/entra/siteclassification/siteclassification-get.mdx +19 -0
- package/docs/docs/cmd/entra/siteclassification/siteclassification-set.mdx +20 -0
- package/docs/docs/cmd/entra/user/user-groupmembership-list.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-guest-add.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-license-add.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-license-list.mdx +18 -1
- package/docs/docs/cmd/entra/user/user-license-remove.mdx +21 -0
- package/docs/docs/cmd/entra/user/user-password-validate.mdx +12 -0
- package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +21 -0
- package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +21 -0
- package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +19 -0
- package/docs/docs/cmd/entra/user/user-session-revoke.mdx +21 -0
- package/docs/docs/cmd/entra/user/user-signin-list.mdx +19 -0
- package/docs/docs/cmd/exo/approleassignment/approleassignment-add.mdx +19 -0
- package/docs/docs/cmd/external/connection/connection-add.mdx +21 -0
- package/docs/docs/cmd/external/connection/connection-doctor.mdx +19 -0
- package/docs/docs/cmd/external/connection/connection-get.mdx +19 -0
- package/docs/docs/cmd/external/connection/connection-list.mdx +19 -0
- package/docs/docs/cmd/external/connection/connection-remove.mdx +21 -0
- package/docs/docs/cmd/external/connection/connection-schema-add.mdx +21 -0
- package/docs/docs/cmd/external/connection/connection-urltoitemresolver-add.mdx +21 -0
- package/docs/docs/cmd/external/item/item-add.mdx +19 -0
- package/docs/docs/cmd/file/convert/convert-pdf.mdx +21 -0
- package/docs/docs/cmd/file/file-add.mdx +21 -0
- package/docs/docs/cmd/file/file-copy.mdx +21 -0
- package/docs/docs/cmd/file/file-list.mdx +19 -0
- package/docs/docs/cmd/file/file-move.mdx +21 -0
- package/docs/docs/cmd/outlook/calendar/calendar-set.mdx +178 -0
- package/docs/docs/cmd/outlook/calendargroup/calendargroup-get.mdx +125 -0
- package/docs/docs/cmd/outlook/calendargroup/calendargroup-set.mdx +83 -0
- package/docs/docs/cmd/outlook/event/event-cancel.mdx +85 -0
- package/docs/docs/cmd/outlook/event/event-remove.mdx +85 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/brandcenter/brandcenter-colors-list.mdx +115 -0
- package/docs/docs/cmd/spo/propertybag/propertybag-set.mdx +1 -1
- package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +3 -0
- package/docs/docs/cmd/teams/chat/chat-message-list.mdx +23 -2
- package/package.json +2 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import commands from '../../commands.js';
|
|
2
|
+
import { globalOptionsZod } from '../../../../Command.js';
|
|
3
|
+
import request from '../../../../request.js';
|
|
4
|
+
import { odata } from '../../../../utils/odata.js';
|
|
5
|
+
import { spo } from '../../../../utils/spo.js';
|
|
6
|
+
import SpoCommand from '../../../base/SpoCommand.js';
|
|
7
|
+
const options = globalOptionsZod.strict();
|
|
8
|
+
class SpoBrandCenterColorsListCommand extends SpoCommand {
|
|
9
|
+
get name() {
|
|
10
|
+
return commands.BRANDCENTER_COLORS_LIST;
|
|
11
|
+
}
|
|
12
|
+
get description() {
|
|
13
|
+
return 'Lists the brand center colors';
|
|
14
|
+
}
|
|
15
|
+
defaultProperties() {
|
|
16
|
+
return ['ColorCode', 'Title', 'IsVisible'];
|
|
17
|
+
}
|
|
18
|
+
get schema() {
|
|
19
|
+
return options;
|
|
20
|
+
}
|
|
21
|
+
async commandAction(logger) {
|
|
22
|
+
if (this.verbose) {
|
|
23
|
+
await logger.logToStderr(`Retrieving brand center colors...`);
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const spoUrl = await spo.getSpoUrl(logger, this.verbose);
|
|
27
|
+
const configRequestOptions = {
|
|
28
|
+
url: `${spoUrl}/_api/Brandcenter/Configuration`,
|
|
29
|
+
headers: {
|
|
30
|
+
accept: 'application/json;odata=nometadata'
|
|
31
|
+
},
|
|
32
|
+
responseType: 'json'
|
|
33
|
+
};
|
|
34
|
+
const config = await request.get(configRequestOptions);
|
|
35
|
+
if (!config.BrandColorsListUrl) {
|
|
36
|
+
if (this.verbose) {
|
|
37
|
+
await logger.logToStderr('Brand colors list not found.');
|
|
38
|
+
}
|
|
39
|
+
await logger.log([]);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (this.verbose) {
|
|
43
|
+
await logger.logToStderr(`Brand colors list found at '${config.BrandColorsListUrl.DecodedUrl}'.`);
|
|
44
|
+
}
|
|
45
|
+
const items = await odata.getAllItems(`${config.SiteUrl}/_api/web/lists(guid'${config.BrandColorsListId}')/items?$select=OData__SPColorTitle,OData__SPColorCode,OData__SPColorVisible`);
|
|
46
|
+
const result = items.map(item => ({
|
|
47
|
+
Title: item.OData__SPColorTitle,
|
|
48
|
+
ColorCode: item.OData__SPColorCode,
|
|
49
|
+
IsVisible: item.OData__SPColorVisible
|
|
50
|
+
}));
|
|
51
|
+
await logger.log(result);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
this.handleRejectedODataJsonPromise(err);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
export default new SpoBrandCenterColorsListCommand();
|
|
59
|
+
//# sourceMappingURL=brandcenter-colors-list.js.map
|
|
@@ -28,12 +28,6 @@ class SpoPropertyBagSetCommand extends SpoPropertyBagBaseCommand {
|
|
|
28
28
|
this.formDigestValue = contextResponse.FormDigestValue;
|
|
29
29
|
let identityResp = await spo.getCurrentWebIdentity(args.options.webUrl, this.formDigestValue);
|
|
30
30
|
const webIdentityResp = identityResp;
|
|
31
|
-
// Check if web no script enabled or not
|
|
32
|
-
// Cannot set property bag value if no script is enabled
|
|
33
|
-
const isNoScriptSite = await this.isNoScriptSite(identityResp, args.options, logger);
|
|
34
|
-
if (isNoScriptSite) {
|
|
35
|
-
throw 'Site has NoScript enabled, and setting property bag values is not supported';
|
|
36
|
-
}
|
|
37
31
|
const opts = args.options;
|
|
38
32
|
if (opts.folder) {
|
|
39
33
|
// get the folder guid instead of the web guid
|
|
@@ -42,15 +36,15 @@ class SpoPropertyBagSetCommand extends SpoPropertyBagBaseCommand {
|
|
|
42
36
|
await this.setProperty(identityResp, args.options, logger);
|
|
43
37
|
}
|
|
44
38
|
catch (err) {
|
|
39
|
+
if (err.toString().indexOf('E_ACCESSDENIED') > -1) {
|
|
40
|
+
await logger.logToStderr('Tip: If a site has NoScript enabled, setting the property bag value may result in exceptions.');
|
|
41
|
+
}
|
|
45
42
|
this.handleRejectedPromise(err);
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
setProperty(identityResp, options, logger) {
|
|
49
46
|
return SpoPropertyBagBaseCommand.setProperty(options.key, options.value, options.webUrl, this.formDigestValue, identityResp, logger, this.debug, options.folder);
|
|
50
47
|
}
|
|
51
|
-
isNoScriptSite(webIdentityResp, options, logger) {
|
|
52
|
-
return SpoPropertyBagBaseCommand.isNoScriptSite(options.webUrl, this.formDigestValue, webIdentityResp, logger, this.debug);
|
|
53
|
-
}
|
|
54
48
|
}
|
|
55
49
|
_SpoPropertyBagSetCommand_instances = new WeakSet(), _SpoPropertyBagSetCommand_initTelemetry = function _SpoPropertyBagSetCommand_initTelemetry() {
|
|
56
50
|
this.telemetry.push((args) => {
|
|
@@ -414,6 +414,9 @@ _a = SpoTenantSettingsSetCommand, _SpoTenantSettingsSetCommand_instances = new W
|
|
|
414
414
|
}, {
|
|
415
415
|
option: '--SyncAadB2BManagementPolicy [SyncAadB2BManagementPolicy]',
|
|
416
416
|
autocomplete: ['true', 'false']
|
|
417
|
+
}, {
|
|
418
|
+
option: '--AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled [AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled]',
|
|
419
|
+
autocomplete: ['true', 'false']
|
|
417
420
|
});
|
|
418
421
|
}, _SpoTenantSettingsSetCommand_initValidators = function _SpoTenantSettingsSetCommand_initValidators() {
|
|
419
422
|
this.validators.push(async (args) => {
|
|
@@ -496,7 +499,8 @@ SpoTenantSettingsSetCommand.booleanOptions = [
|
|
|
496
499
|
'DisableCustomAppAuthentication',
|
|
497
500
|
'CommentsOnListItemsDisabled',
|
|
498
501
|
'EnableAzureADB2BIntegration',
|
|
499
|
-
'SyncAadB2BManagementPolicy'
|
|
502
|
+
'SyncAadB2BManagementPolicy',
|
|
503
|
+
'AllowWebPropertyBagUpdateWhenDenyAddAndCustomizePagesIsEnabled'
|
|
500
504
|
];
|
|
501
505
|
export default new SpoTenantSettingsSetCommand();
|
|
502
506
|
//# sourceMappingURL=tenant-settings-set.js.map
|
|
@@ -19,6 +19,7 @@ export default {
|
|
|
19
19
|
APPLICATIONCUSTOMIZER_SET: `${prefix} applicationcustomizer set`,
|
|
20
20
|
APPPAGE_ADD: `${prefix} apppage add`,
|
|
21
21
|
APPPAGE_SET: `${prefix} apppage set`,
|
|
22
|
+
BRANDCENTER_COLORS_LIST: `${prefix} brandcenter colors list`,
|
|
22
23
|
BRANDCENTER_SETTINGS_LIST: `${prefix} brandcenter settings list`,
|
|
23
24
|
CDN_GET: `${prefix} cdn get`,
|
|
24
25
|
CDN_ORIGIN_ADD: `${prefix} cdn origin add`,
|
|
@@ -11,9 +11,24 @@ export const options = z.strictObject({
|
|
|
11
11
|
error: e => `'${e.input}' is not a valid value for option chatId.`
|
|
12
12
|
})
|
|
13
13
|
.alias('i'),
|
|
14
|
+
createdEndDateTime: z.string()
|
|
15
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
16
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option createdEndDateTime.`
|
|
17
|
+
})
|
|
18
|
+
.optional(),
|
|
14
19
|
endDateTime: z.string()
|
|
15
20
|
.refine(time => validation.isValidISODateTime(time), {
|
|
16
21
|
error: e => `'${e.input}' is not a valid ISO date-time string for option endDateTime.`
|
|
22
|
+
})
|
|
23
|
+
.optional(),
|
|
24
|
+
modifiedStartDateTime: z.string()
|
|
25
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
26
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedStartDateTime.`
|
|
27
|
+
})
|
|
28
|
+
.optional(),
|
|
29
|
+
modifiedEndDateTime: z.string()
|
|
30
|
+
.refine(time => validation.isValidISODateTime(time), {
|
|
31
|
+
error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedEndDateTime.`
|
|
17
32
|
})
|
|
18
33
|
.optional()
|
|
19
34
|
});
|
|
@@ -30,13 +45,37 @@ class TeamsChatMessageListCommand extends GraphCommand {
|
|
|
30
45
|
get schema() {
|
|
31
46
|
return options;
|
|
32
47
|
}
|
|
48
|
+
getRefinedSchema(schema) {
|
|
49
|
+
return schema
|
|
50
|
+
.refine(options => !(options.endDateTime && options.createdEndDateTime), {
|
|
51
|
+
error: 'Specify either endDateTime or createdEndDateTime, but not both.'
|
|
52
|
+
})
|
|
53
|
+
.refine(options => !(options.createdEndDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
|
|
54
|
+
error: 'You cannot combine createdEndDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
|
|
55
|
+
})
|
|
56
|
+
.refine(options => !(options.endDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
|
|
57
|
+
error: 'You cannot combine endDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
|
|
58
|
+
});
|
|
59
|
+
}
|
|
33
60
|
async commandAction(logger, args) {
|
|
61
|
+
if (args.options.endDateTime) {
|
|
62
|
+
await this.warn(logger, `Option 'endDateTime' is deprecated. Please use 'createdEndDateTime' instead.`);
|
|
63
|
+
args.options.createdEndDateTime = args.options.endDateTime;
|
|
64
|
+
}
|
|
34
65
|
try {
|
|
35
66
|
let apiUrl = `${this.resource}/v1.0/chats/${args.options.chatId}/messages`;
|
|
36
|
-
if (args.options.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
67
|
+
if (args.options.createdEndDateTime) {
|
|
68
|
+
apiUrl += `?$filter=createdDateTime lt ${args.options.createdEndDateTime}&$orderby=createdDateTime desc`;
|
|
69
|
+
}
|
|
70
|
+
else if (args.options.modifiedStartDateTime || args.options.modifiedEndDateTime) {
|
|
71
|
+
const filters = [];
|
|
72
|
+
if (args.options.modifiedStartDateTime) {
|
|
73
|
+
filters.push(`lastModifiedDateTime gt ${args.options.modifiedStartDateTime}`);
|
|
74
|
+
}
|
|
75
|
+
if (args.options.modifiedEndDateTime) {
|
|
76
|
+
filters.push(`lastModifiedDateTime lt ${args.options.modifiedEndDateTime}`);
|
|
77
|
+
}
|
|
78
|
+
apiUrl += `?$filter=${filters.join(' and ')}&$orderby=lastModifiedDateTime desc`;
|
|
40
79
|
}
|
|
41
80
|
const items = await odata.getAllItems(apiUrl);
|
|
42
81
|
if (args.options.output && args.options.output !== 'json') {
|
package/dist/request.js
CHANGED
|
@@ -154,10 +154,6 @@ class Request {
|
|
|
154
154
|
options.headers.authorization = `Bearer ${accessToken}`;
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
const proxyUrl = process.env.HTTP_PROXY || process.env.HTTPS_PROXY;
|
|
158
|
-
if (proxyUrl) {
|
|
159
|
-
options.proxy = this.createProxyConfigFromUrl(proxyUrl);
|
|
160
|
-
}
|
|
161
157
|
const res = await this.req(options);
|
|
162
158
|
const end = process.hrtime.bigint();
|
|
163
159
|
timings.api.push(Number(end - start));
|
|
@@ -192,18 +188,6 @@ class Request {
|
|
|
192
188
|
options.url = options.url.substring(0, 8) +
|
|
193
189
|
options.url.substring(8).replace('//', '/');
|
|
194
190
|
}
|
|
195
|
-
createProxyConfigFromUrl(url) {
|
|
196
|
-
const parsedUrl = new URL(url);
|
|
197
|
-
const port = parsedUrl.port || (url.toLowerCase().startsWith('https') ? 443 : 80);
|
|
198
|
-
let authObject = null;
|
|
199
|
-
if (parsedUrl.username && parsedUrl.password) {
|
|
200
|
-
authObject = {
|
|
201
|
-
username: parsedUrl.username,
|
|
202
|
-
password: parsedUrl.password
|
|
203
|
-
};
|
|
204
|
-
}
|
|
205
|
-
return { host: parsedUrl.hostname, port: Number(port), protocol: 'http', ...(authObject && { auth: authObject }) };
|
|
206
|
-
}
|
|
207
191
|
}
|
|
208
192
|
export default new Request();
|
|
209
193
|
//# sourceMappingURL=request.js.map
|
package/dist/utils/entraApp.js
CHANGED
|
@@ -336,8 +336,15 @@ export const entraApp = {
|
|
|
336
336
|
},
|
|
337
337
|
responseType: 'json'
|
|
338
338
|
};
|
|
339
|
-
|
|
340
|
-
|
|
339
|
+
try {
|
|
340
|
+
return await request.get(requestOptions);
|
|
341
|
+
}
|
|
342
|
+
catch (error) {
|
|
343
|
+
if (error?.response?.status === 404) {
|
|
344
|
+
throw Error(`App with objectId '${objectId}' not found in Microsoft Entra ID.`);
|
|
345
|
+
}
|
|
346
|
+
throw error;
|
|
347
|
+
}
|
|
341
348
|
}
|
|
342
349
|
};
|
|
343
350
|
//# sourceMappingURL=entraApp.js.map
|
package/dist/utils/spfx.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Range, coerce, gt, validRange } from 'semver';
|
|
1
2
|
export const spfx = {
|
|
2
3
|
isReactProject(project) {
|
|
3
4
|
return (typeof project.yoRcJson !== 'undefined' &&
|
|
@@ -11,6 +12,64 @@ export const spfx = {
|
|
|
11
12
|
typeof project.yoRcJson['@microsoft/generator-sharepoint'] !== 'undefined' &&
|
|
12
13
|
project.yoRcJson["@microsoft/generator-sharepoint"].framework === 'knockout') ||
|
|
13
14
|
typeof project.packageJson?.dependencies?.['knockout'] !== 'undefined';
|
|
15
|
+
},
|
|
16
|
+
getHighestNodeVersion(versionRange) {
|
|
17
|
+
if (!versionRange) {
|
|
18
|
+
throw new Error('Node version range was not provided.');
|
|
19
|
+
}
|
|
20
|
+
const ranges = versionRange
|
|
21
|
+
.split('||')
|
|
22
|
+
.map(range => range.trim())
|
|
23
|
+
.filter(range => range.length > 0);
|
|
24
|
+
let highestMajor = null;
|
|
25
|
+
let exactVersion = null;
|
|
26
|
+
const simpleVersionPattern = /^\d+(\.\d+(\.\d+)?)?$/;
|
|
27
|
+
if (ranges.every(r => simpleVersionPattern.test(r))) {
|
|
28
|
+
const highest = ranges.reduce((best, curr) => gt(coerce(curr), coerce(best)) ? curr : best);
|
|
29
|
+
const parts = highest.split('.');
|
|
30
|
+
if (parts.length >= 3) {
|
|
31
|
+
return highest;
|
|
32
|
+
}
|
|
33
|
+
if (parts.length === 2) {
|
|
34
|
+
return `${highest}.x`;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const rangeString of ranges) {
|
|
38
|
+
const normalized = validRange(rangeString);
|
|
39
|
+
if (!normalized) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
const rangeObj = new Range(normalized);
|
|
43
|
+
let maxMajor = 0;
|
|
44
|
+
// Analyze the range to find the maximum major version
|
|
45
|
+
for (const comparatorSet of rangeObj.set) {
|
|
46
|
+
for (const comparator of comparatorSet) {
|
|
47
|
+
if (comparator.operator === '<') {
|
|
48
|
+
// Exclusive upper bound: <17.0.0 means max major is 16
|
|
49
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major - 1);
|
|
50
|
+
}
|
|
51
|
+
else if (comparator.operator === '<=') {
|
|
52
|
+
// Inclusive upper bound: <=17.0.0 means we can use exactly that version
|
|
53
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major);
|
|
54
|
+
// Store the exact version for <= comparator
|
|
55
|
+
if (highestMajor === null || comparator.semver.major > highestMajor) {
|
|
56
|
+
exactVersion = comparator.semver.version;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else if (comparator.operator === '>=' || comparator.operator === '>') {
|
|
60
|
+
// For lower bounds use the major version
|
|
61
|
+
maxMajor = Math.max(maxMajor, comparator.semver.major);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Track the highest major version across all ranges
|
|
66
|
+
highestMajor = Math.max(highestMajor ?? 0, maxMajor);
|
|
67
|
+
}
|
|
68
|
+
if (highestMajor === null) {
|
|
69
|
+
throw new Error(`Unable to resolve the highest Node version for range '${versionRange}'.`);
|
|
70
|
+
}
|
|
71
|
+
// Return exact version if we have a <= comparator, otherwise use .x
|
|
72
|
+
return exactVersion || `${highestMajor}.x`;
|
|
14
73
|
}
|
|
15
74
|
};
|
|
16
75
|
//# sourceMappingURL=spfx.js.map
|
|
@@ -16,6 +16,25 @@ m365 entra license 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 | LicenseAssignment.Read.All |
|
|
27
|
+
|
|
28
|
+
</TabItem>
|
|
29
|
+
<TabItem value="Application">
|
|
30
|
+
|
|
31
|
+
| Resource | Permissions |
|
|
32
|
+
|-----------------|----------------------------|
|
|
33
|
+
| Microsoft Graph | LicenseAssignment.Read.All |
|
|
34
|
+
|
|
35
|
+
</TabItem>
|
|
36
|
+
</Tabs>
|
|
37
|
+
|
|
19
38
|
## Examples
|
|
20
39
|
|
|
21
40
|
List all licenses within the tenant.
|
|
@@ -24,6 +24,25 @@ m365 entra m365group conversation list [options]
|
|
|
24
24
|
|
|
25
25
|
<Global />
|
|
26
26
|
|
|
27
|
+
## Permissions
|
|
28
|
+
|
|
29
|
+
<Tabs>
|
|
30
|
+
<TabItem value="Delegated">
|
|
31
|
+
|
|
32
|
+
| Resource | Permissions |
|
|
33
|
+
|-----------------|-----------------------------|
|
|
34
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
35
|
+
|
|
36
|
+
</TabItem>
|
|
37
|
+
<TabItem value="Application">
|
|
38
|
+
|
|
39
|
+
| Resource | Permissions |
|
|
40
|
+
|-----------------|-----------------------------|
|
|
41
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
42
|
+
|
|
43
|
+
</TabItem>
|
|
44
|
+
</Tabs>
|
|
45
|
+
|
|
27
46
|
## Examples
|
|
28
47
|
|
|
29
48
|
Lists conversations for the Microsoft 365 group specified by id.
|
|
@@ -27,6 +27,25 @@ m365 entra m365group conversation post list [options]
|
|
|
27
27
|
|
|
28
28
|
<Global />
|
|
29
29
|
|
|
30
|
+
## Permissions
|
|
31
|
+
|
|
32
|
+
<Tabs>
|
|
33
|
+
<TabItem value="Delegated">
|
|
34
|
+
|
|
35
|
+
| Resource | Permissions |
|
|
36
|
+
|-----------------|-----------------------------|
|
|
37
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
38
|
+
|
|
39
|
+
</TabItem>
|
|
40
|
+
<TabItem value="Application">
|
|
41
|
+
|
|
42
|
+
| Resource | Permissions |
|
|
43
|
+
|-----------------|-----------------------------|
|
|
44
|
+
| Microsoft Graph | Group-Conversation.Read.All |
|
|
45
|
+
|
|
46
|
+
</TabItem>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
30
49
|
## Examples
|
|
31
50
|
|
|
32
51
|
Lists the posts of the specific conversation of Microsoft 365 group by groupId
|
|
@@ -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 m365group user add
|
|
4
6
|
|
|
@@ -43,6 +45,25 @@ m365 teams user add [options]
|
|
|
43
45
|
|
|
44
46
|
<Global />
|
|
45
47
|
|
|
48
|
+
## Permissions
|
|
49
|
+
|
|
50
|
+
<Tabs>
|
|
51
|
+
<TabItem value="Delegated">
|
|
52
|
+
|
|
53
|
+
| Resource | Permissions |
|
|
54
|
+
|-----------------|-----------------------------------------|
|
|
55
|
+
| Microsoft Graph | Group.ReadWrite.All, User.ReadBasic.All |
|
|
56
|
+
|
|
57
|
+
</TabItem>
|
|
58
|
+
<TabItem value="Application">
|
|
59
|
+
|
|
60
|
+
| Resource | Permissions |
|
|
61
|
+
|-----------------|------------------------------------|
|
|
62
|
+
| Microsoft Graph | Group.ReadWrite.All, User.Read.All |
|
|
63
|
+
|
|
64
|
+
</TabItem>
|
|
65
|
+
</Tabs>
|
|
66
|
+
|
|
46
67
|
## Examples
|
|
47
68
|
|
|
48
69
|
Add a new member with the userNames parameter to the specified Microsoft 365 Group.
|
|
@@ -37,6 +37,25 @@ m365 entra m365group user list [options]
|
|
|
37
37
|
|
|
38
38
|
When the `properties` option includes values with a `/`, for example: `manager/displayName`, an additional `$expand` query parameter will be included on `manager`.
|
|
39
39
|
|
|
40
|
+
## Permissions
|
|
41
|
+
|
|
42
|
+
<Tabs>
|
|
43
|
+
<TabItem value="Delegated">
|
|
44
|
+
|
|
45
|
+
| Resource | Permissions |
|
|
46
|
+
|-----------------|------------------------------------------|
|
|
47
|
+
| Microsoft Graph | GroupMember.Read.All, User.ReadBasic.All |
|
|
48
|
+
|
|
49
|
+
</TabItem>
|
|
50
|
+
<TabItem value="Application">
|
|
51
|
+
|
|
52
|
+
| Resource | Permissions |
|
|
53
|
+
|-----------------|-------------------------------------|
|
|
54
|
+
| Microsoft Graph | GroupMember.Read.All, User.Read.All |
|
|
55
|
+
|
|
56
|
+
</TabItem>
|
|
57
|
+
</Tabs>
|
|
58
|
+
|
|
40
59
|
## Examples
|
|
41
60
|
|
|
42
61
|
List all users and their role from Microsoft 365 group specified by ID.
|
|
@@ -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 m365group user remove
|
|
4
6
|
|
|
@@ -41,6 +43,25 @@ m365 entra m365group user remove [options]
|
|
|
41
43
|
|
|
42
44
|
You can remove users from a Microsoft 365 Group or Microsoft Teams team if you are owner of that group or team.
|
|
43
45
|
|
|
46
|
+
## Permissions
|
|
47
|
+
|
|
48
|
+
<Tabs>
|
|
49
|
+
<TabItem value="Delegated">
|
|
50
|
+
|
|
51
|
+
| Resource | Permissions |
|
|
52
|
+
|-----------------|-----------------------------------------|
|
|
53
|
+
| Microsoft Graph | Group.ReadWrite.All, User.ReadBasic.All |
|
|
54
|
+
|
|
55
|
+
</TabItem>
|
|
56
|
+
<TabItem value="Application">
|
|
57
|
+
|
|
58
|
+
| Resource | Permissions |
|
|
59
|
+
|-----------------|------------------------------------|
|
|
60
|
+
| Microsoft Graph | Group.ReadWrite.All, User.Read.All |
|
|
61
|
+
|
|
62
|
+
</TabItem>
|
|
63
|
+
</Tabs>
|
|
64
|
+
|
|
44
65
|
## Examples
|
|
45
66
|
|
|
46
67
|
Removes user from the specified Microsoft 365 Group.
|
|
@@ -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 m365group user set
|
|
4
6
|
|
|
@@ -41,6 +43,25 @@ m365 entra m365group user set [options]
|
|
|
41
43
|
|
|
42
44
|
The command will return an error if the user already has the specified role in the given Microsoft 365 Group or Microsoft Teams team.
|
|
43
45
|
|
|
46
|
+
## Permissions
|
|
47
|
+
|
|
48
|
+
<Tabs>
|
|
49
|
+
<TabItem value="Delegated">
|
|
50
|
+
|
|
51
|
+
| Resource | Permissions |
|
|
52
|
+
|-----------------|-----------------------------------------|
|
|
53
|
+
| Microsoft Graph | Group.ReadWrite.All, User.ReadBasic.All |
|
|
54
|
+
|
|
55
|
+
</TabItem>
|
|
56
|
+
<TabItem value="Application">
|
|
57
|
+
|
|
58
|
+
| Resource | Permissions |
|
|
59
|
+
|-----------------|------------------------------------|
|
|
60
|
+
| Microsoft Graph | Group.ReadWrite.All, User.Read.All |
|
|
61
|
+
|
|
62
|
+
</TabItem>
|
|
63
|
+
</Tabs>
|
|
64
|
+
|
|
44
65
|
## Examples
|
|
45
66
|
|
|
46
67
|
Promote a single user to Owner of the given Microsoft 365 Group
|
|
@@ -37,6 +37,25 @@ m365 entra roledefinition add [options]
|
|
|
37
37
|
|
|
38
38
|
Use the `m365 entra rolepermission list --resourceNamespace microsoft.directory` command to get a list of available resource actions.
|
|
39
39
|
|
|
40
|
+
## Permissions
|
|
41
|
+
|
|
42
|
+
<Tabs>
|
|
43
|
+
<TabItem value="Delegated">
|
|
44
|
+
|
|
45
|
+
| Resource | Permissions |
|
|
46
|
+
|-----------------|------------------------------------|
|
|
47
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
48
|
+
|
|
49
|
+
</TabItem>
|
|
50
|
+
<TabItem value="Application">
|
|
51
|
+
|
|
52
|
+
| Resource | Permissions |
|
|
53
|
+
|-----------------|------------------------------------|
|
|
54
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
55
|
+
|
|
56
|
+
</TabItem>
|
|
57
|
+
</Tabs>
|
|
58
|
+
|
|
40
59
|
## Examples
|
|
41
60
|
|
|
42
61
|
Create a custom Microsoft Entra ID role
|
|
@@ -27,6 +27,25 @@ m365 entra roledefinition get [options]
|
|
|
27
27
|
|
|
28
28
|
<Global />
|
|
29
29
|
|
|
30
|
+
## Permissions
|
|
31
|
+
|
|
32
|
+
<Tabs>
|
|
33
|
+
<TabItem value="Delegated">
|
|
34
|
+
|
|
35
|
+
| Resource | Permissions |
|
|
36
|
+
|-----------------|-------------------------------|
|
|
37
|
+
| Microsoft Graph | RoleManagement.Read.Directory |
|
|
38
|
+
|
|
39
|
+
</TabItem>
|
|
40
|
+
<TabItem value="Application">
|
|
41
|
+
|
|
42
|
+
| Resource | Permissions |
|
|
43
|
+
|-----------------|-------------------------------|
|
|
44
|
+
| Microsoft Graph | RoleManagement.Read.Directory |
|
|
45
|
+
|
|
46
|
+
</TabItem>
|
|
47
|
+
</Tabs>
|
|
48
|
+
|
|
30
49
|
## Examples
|
|
31
50
|
|
|
32
51
|
Get info about a role specified by the id
|
|
@@ -24,6 +24,25 @@ m365 entra roledefinition list [options]
|
|
|
24
24
|
|
|
25
25
|
<Global />
|
|
26
26
|
|
|
27
|
+
## Permissions
|
|
28
|
+
|
|
29
|
+
<Tabs>
|
|
30
|
+
<TabItem value="Delegated">
|
|
31
|
+
|
|
32
|
+
| Resource | Permissions |
|
|
33
|
+
|-----------------|-------------------------------|
|
|
34
|
+
| Microsoft Graph | RoleManagement.Read.Directory |
|
|
35
|
+
|
|
36
|
+
</TabItem>
|
|
37
|
+
<TabItem value="Application">
|
|
38
|
+
|
|
39
|
+
| Resource | Permissions |
|
|
40
|
+
|-----------------|-------------------------------|
|
|
41
|
+
| Microsoft Graph | RoleManagement.Read.Directory |
|
|
42
|
+
|
|
43
|
+
</TabItem>
|
|
44
|
+
</Tabs>
|
|
45
|
+
|
|
27
46
|
## Examples
|
|
28
47
|
|
|
29
48
|
Retrieve all Microsoft Entra ID role definitions
|
|
@@ -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 roledefinition remove
|
|
4
6
|
|
|
@@ -33,6 +35,25 @@ When the role definition is removed, all the associated role assignments are del
|
|
|
33
35
|
|
|
34
36
|
:::
|
|
35
37
|
|
|
38
|
+
## Permissions
|
|
39
|
+
|
|
40
|
+
<Tabs>
|
|
41
|
+
<TabItem value="Delegated">
|
|
42
|
+
|
|
43
|
+
| Resource | Permissions |
|
|
44
|
+
|-----------------|------------------------------------|
|
|
45
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
46
|
+
|
|
47
|
+
</TabItem>
|
|
48
|
+
<TabItem value="Application">
|
|
49
|
+
|
|
50
|
+
| Resource | Permissions |
|
|
51
|
+
|-----------------|------------------------------------|
|
|
52
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
53
|
+
|
|
54
|
+
</TabItem>
|
|
55
|
+
</Tabs>
|
|
56
|
+
|
|
36
57
|
## Examples
|
|
37
58
|
|
|
38
59
|
Remove a role definition specified by id without prompting
|
|
@@ -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 roledefinition set
|
|
4
6
|
|
|
@@ -41,6 +43,25 @@ m365 entra roledefinition set [options]
|
|
|
41
43
|
|
|
42
44
|
Use the `m365 entra rolepermission list --resourceNamespace microsoft.directory` command to get a list of available resource actions.
|
|
43
45
|
|
|
46
|
+
## Permissions
|
|
47
|
+
|
|
48
|
+
<Tabs>
|
|
49
|
+
<TabItem value="Delegated">
|
|
50
|
+
|
|
51
|
+
| Resource | Permissions |
|
|
52
|
+
|-----------------|------------------------------------|
|
|
53
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
54
|
+
|
|
55
|
+
</TabItem>
|
|
56
|
+
<TabItem value="Application">
|
|
57
|
+
|
|
58
|
+
| Resource | Permissions |
|
|
59
|
+
|-----------------|------------------------------------|
|
|
60
|
+
| Microsoft Graph | RoleManagement.ReadWrite.Directory |
|
|
61
|
+
|
|
62
|
+
</TabItem>
|
|
63
|
+
</Tabs>
|
|
64
|
+
|
|
44
65
|
## Examples
|
|
45
66
|
|
|
46
67
|
Update a custom Microsoft Entra ID role specified by the id
|