@pnp/cli-microsoft365 7.5.0 → 7.6.0-beta.480812d
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/.eslintrc.cjs +3 -0
- package/README.md +1 -1
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Auth.js +12 -10
- package/dist/AuthServer.js +1 -1
- package/dist/cli/cli.js +1 -1
- package/dist/config.js +2 -2
- package/dist/m365/app/commands/app-get.js +1 -1
- package/dist/m365/app/commands/app-open.js +1 -1
- package/dist/m365/app/commands/permission/permission-add.js +2 -2
- package/dist/m365/app/commands/permission/permission-list.js +2 -2
- package/dist/m365/cli/commands/cli-consent.js +2 -2
- package/dist/m365/cli/commands/cli-reconsent.js +3 -3
- package/dist/m365/commands/login.js +1 -1
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-add.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-get.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-list.js +1 -0
- package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +1 -0
- package/dist/m365/entra/commands/app/app-add.js +7 -6
- package/dist/m365/entra/commands/app/app-get.js +4 -3
- package/dist/m365/entra/commands/app/app-list.js +1 -0
- package/dist/m365/entra/commands/app/app-permission-add.js +3 -2
- package/dist/m365/entra/commands/app/app-permission-list.js +1 -1
- package/dist/m365/entra/commands/app/app-remove.js +5 -4
- package/dist/m365/entra/commands/app/app-role-add.js +6 -5
- package/dist/m365/entra/commands/app/app-role-list.js +4 -3
- package/dist/m365/entra/commands/app/app-role-remove.js +6 -5
- package/dist/m365/entra/commands/app/app-set.js +8 -7
- package/dist/m365/entra/commands/approleassignment/approleassignment-add.js +2 -1
- package/dist/m365/entra/commands/approleassignment/approleassignment-list.js +1 -0
- package/dist/m365/entra/commands/approleassignment/approleassignment-remove.js +1 -0
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +1 -0
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +1 -0
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -0
- package/dist/m365/entra/commands/group/group-get.js +1 -0
- package/dist/m365/entra/commands/group/group-list.js +1 -0
- package/dist/m365/entra/commands/group/group-remove.js +1 -0
- package/dist/m365/entra/commands/group/group-user-list.js +1 -0
- package/dist/m365/entra/commands/groupsetting/groupsetting-add.js +1 -0
- package/dist/m365/entra/commands/groupsetting/groupsetting-get.js +1 -0
- package/dist/m365/entra/commands/groupsetting/groupsetting-list.js +1 -0
- package/dist/m365/entra/commands/groupsetting/groupsetting-remove.js +1 -0
- package/dist/m365/entra/commands/groupsetting/groupsetting-set.js +1 -0
- package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-get.js +1 -0
- package/dist/m365/entra/commands/groupsettingtemplate/groupsettingtemplate-list.js +1 -0
- package/dist/m365/entra/commands/license/license-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-add.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-get.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-remove.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-renew.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-set.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-teamify.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-user-remove.js +1 -0
- package/dist/m365/entra/commands/m365group/m365group-user-set.js +1 -0
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-add.js +1 -0
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-list.js +1 -0
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-remove.js +1 -0
- package/dist/m365/entra/commands/oauth2grant/oauth2grant-set.js +1 -0
- package/dist/m365/entra/commands/policy/policy-list.js +1 -0
- package/dist/m365/entra/commands/siteclassification/siteclassification-disable.js +1 -0
- package/dist/m365/entra/commands/siteclassification/siteclassification-enable.js +1 -0
- package/dist/m365/entra/commands/siteclassification/siteclassification-get.js +1 -0
- package/dist/m365/entra/commands/siteclassification/siteclassification-set.js +1 -0
- package/dist/m365/entra/commands/user/user-add.js +1 -0
- package/dist/m365/entra/commands/user/user-get.js +1 -0
- package/dist/m365/entra/commands/user/user-guest-add.js +1 -0
- package/dist/m365/entra/commands/user/user-hibp.js +1 -0
- package/dist/m365/entra/commands/user/user-license-add.js +1 -0
- package/dist/m365/entra/commands/user/user-license-list.js +1 -0
- package/dist/m365/entra/commands/user/user-license-remove.js +1 -0
- package/dist/m365/entra/commands/user/user-list.js +1 -0
- package/dist/m365/entra/commands/user/user-password-validate.js +1 -0
- package/dist/m365/entra/commands/user/user-recyclebinitem-clear.js +1 -0
- package/dist/m365/entra/commands/user/user-recyclebinitem-list.js +1 -0
- package/dist/m365/entra/commands/user/user-recyclebinitem-remove.js +2 -1
- package/dist/m365/entra/commands/user/user-recyclebinitem-restore.js +1 -0
- package/dist/m365/entra/commands/user/user-remove.js +1 -0
- package/dist/m365/entra/commands/user/user-set.js +1 -0
- package/dist/m365/entra/commands/user/user-signin-list.js +1 -0
- package/dist/m365/outlook/commands/message/message-remove.js +113 -0
- package/dist/m365/outlook/commands.js +1 -0
- package/dist/m365/pp/commands/managementapp/managementapp-add.js +7 -7
- package/dist/m365/purview/commands/threatassessment/threatassessment-add.js +123 -0
- package/dist/m365/purview/commands/threatassessment/threatassessment-list.js +104 -0
- package/dist/m365/purview/commands.js +3 -1
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +111 -0
- package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +183 -0
- package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-model.js +2 -0
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +3 -4
- package/dist/m365/spfx/commands.js +1 -0
- package/dist/m365/spo/commands/folder/FolderColor.js +19 -0
- package/dist/m365/spo/commands/folder/folder-add.js +46 -17
- package/dist/m365/spo/commands/folder/folder-set.js +118 -0
- package/dist/m365/spo/commands/group/group-member-add.js +2 -2
- package/dist/m365/spo/commands/group/group-member-remove.js +1 -1
- package/dist/m365/spo/commands/site/site-apppermission-add.js +2 -2
- package/dist/m365/spo/commands/site/site-recyclebinitem-restore.js +66 -27
- package/dist/m365/spo/commands/tenant/tenant-settings-set.js +1 -1
- package/dist/m365/spo/commands/user/user-remove.js +93 -16
- package/dist/m365/spo/commands.js +1 -0
- package/dist/m365/teams/commands/tab/tab-get.js +1 -1
- package/dist/utils/spo.js +1 -1
- package/docs/docs/cmd/app/app-get.mdx +10 -10
- package/docs/docs/cmd/app/app-open.mdx +6 -6
- package/docs/docs/cmd/app/permission/permission-add.mdx +2 -2
- package/docs/docs/cmd/app/permission/permission-list.mdx +5 -5
- package/docs/docs/cmd/cli/cli-consent.mdx +2 -2
- package/docs/docs/cmd/cli/cli-reconsent.mdx +6 -6
- package/docs/docs/cmd/entra/app/app-permission-add.mdx +6 -6
- package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +1 -1
- package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +4 -4
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +1 -1
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +1 -1
- package/docs/docs/cmd/entra/group/group-user-add.mdx +7 -7
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +1 -1
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -1
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +1 -1
- package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +1 -1
- package/docs/docs/cmd/external/connection/connection-add.mdx +2 -2
- package/docs/docs/cmd/file/file-add.mdx +1 -1
- package/docs/docs/cmd/graph/schemaextension/schemaextension-add.mdx +2 -2
- package/docs/docs/cmd/graph/schemaextension/schemaextension-set.mdx +1 -1
- package/docs/docs/cmd/login.mdx +18 -18
- package/docs/docs/cmd/outlook/message/message-remove.mdx +67 -0
- package/docs/docs/cmd/pa/app/app-owner-set.mdx +1 -1
- package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +3 -3
- package/docs/docs/cmd/pa/app/app-permission-remove.mdx +3 -3
- package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
- package/docs/docs/cmd/planner/roster/roster-add.mdx +5 -5
- package/docs/docs/cmd/planner/roster/roster-get.mdx +7 -7
- package/docs/docs/cmd/planner/roster/roster-member-add.mdx +4 -4
- package/docs/docs/cmd/planner/roster/roster-member-get.mdx +4 -4
- package/docs/docs/cmd/planner/roster/roster-member-list.mdx +2 -2
- package/docs/docs/cmd/planner/roster/roster-member-remove.mdx +5 -5
- package/docs/docs/cmd/planner/roster/roster-plan-list.mdx +1 -1
- package/docs/docs/cmd/planner/roster/roster-remove.mdx +2 -2
- package/docs/docs/cmd/planner/task/task-add.mdx +1 -1
- package/docs/docs/cmd/planner/task/task-get.mdx +1 -1
- package/docs/docs/cmd/planner/task/task-list.mdx +1 -1
- package/docs/docs/cmd/planner/task/task-remove.mdx +1 -1
- package/docs/docs/cmd/planner/task/task-set.mdx +1 -1
- package/docs/docs/cmd/pp/environment/environment-get.mdx +1 -1
- package/docs/docs/cmd/pp/environment/environment-list.mdx +1 -1
- package/docs/docs/cmd/pp/managementapp/managementapp-add.mdx +9 -9
- package/docs/docs/cmd/purview/auditlog/auditlog-list.mdx +1 -1
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-get.mdx +1 -1
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-list.mdx +1 -1
- package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.mdx +1 -1
- package/docs/docs/cmd/purview/threatassessment/threatassessment-add.mdx +131 -0
- package/docs/docs/cmd/purview/threatassessment/threatassessment-list.mdx +110 -0
- package/docs/docs/cmd/request.mdx +1 -1
- package/docs/docs/cmd/spfx/project/project-azuredevops-pipeline-add.mdx +87 -0
- package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +3 -3
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +2 -2
- package/docs/docs/cmd/spo/folder/folder-add.mdx +38 -0
- package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-set.mdx +88 -0
- package/docs/docs/cmd/spo/group/group-member-add.mdx +2 -2
- package/docs/docs/cmd/spo/group/group-member-remove.mdx +3 -3
- package/docs/docs/cmd/spo/list/list-roleassignment-add.mdx +3 -3
- package/docs/docs/cmd/spo/list/list-roleassignment-remove.mdx +2 -2
- package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.mdx +8 -8
- package/docs/docs/cmd/spo/listitem/listitem-roleassignment-remove.mdx +2 -2
- package/docs/docs/cmd/spo/site/site-apppermission-add.mdx +2 -2
- package/docs/docs/cmd/spo/site/site-apppermission-set.mdx +2 -2
- package/docs/docs/cmd/spo/site/site-recyclebinitem-restore.mdx +29 -5
- package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +89 -89
- package/docs/docs/cmd/spo/user/user-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/user/user-remove.mdx +40 -9
- package/docs/docs/cmd/spo/web/web-roleassignment-add.mdx +3 -3
- package/docs/docs/cmd/spo/web/web-roleassignment-remove.mdx +2 -2
- package/docs/docs/cmd/teams/channel/channel-member-remove.mdx +1 -1
- package/docs/docs/cmd/teams/channel/channel-member-set.mdx +1 -1
- package/docs/docs/cmd/teams/chat/chat-member-remove.mdx +3 -3
- package/docs/docs/cmd/teams/report/report-directroutingcalls.mdx +1 -1
- package/docs/docs/cmd/teams/report/report-pstncalls.mdx +1 -1
- package/docs/docs/cmd/teams/tab/tab-get.mdx +19 -12
- package/docs/docs/cmd/tenant/security/security-alerts-list.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-group-list.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-group-user-add.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-group-user-remove.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-message-add.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-message-get.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-message-like-set.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-message-list.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-message-remove.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-network-list.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-search.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-user-get.mdx +1 -1
- package/docs/docs/cmd/viva/engage/engage-user-list.mdx +1 -1
- package/npm-shrinkwrap.json +64 -60
- package/package.json +12 -12
- package/dist/m365/spo/commands/folder/folder-rename.js +0 -72
- package/docs/docs/cmd/spo/folder/folder-rename.mdx +0 -44
|
@@ -29,6 +29,7 @@ class EntraUserRemoveCommand extends GraphCommand {
|
|
|
29
29
|
__classPrivateFieldGet(this, _EntraUserRemoveCommand_instances, "m", _EntraUserRemoveCommand_initOptionSets).call(this);
|
|
30
30
|
}
|
|
31
31
|
async commandAction(logger, args) {
|
|
32
|
+
await this.showDeprecationWarning(logger, aadCommands.USER_REMOVE, commands.USER_REMOVE);
|
|
32
33
|
if (this.verbose) {
|
|
33
34
|
await logger.logToStderr(`Removing user '${args.options.id || args.options.userName}'...`);
|
|
34
35
|
}
|
|
@@ -35,6 +35,7 @@ class EntraUserSetCommand extends GraphCommand {
|
|
|
35
35
|
__classPrivateFieldGet(this, _EntraUserSetCommand_instances, "m", _EntraUserSetCommand_initOptionSets).call(this);
|
|
36
36
|
}
|
|
37
37
|
async commandAction(logger, args) {
|
|
38
|
+
await this.showDeprecationWarning(logger, aadCommands.USER_SET, commands.USER_SET);
|
|
38
39
|
try {
|
|
39
40
|
if (args.options.currentPassword) {
|
|
40
41
|
if (args.options.id && args.options.id !== accessToken.getUserIdFromAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken)) {
|
|
@@ -31,6 +31,7 @@ class EntraUserSigninListCommand extends GraphCommand {
|
|
|
31
31
|
return ['id', 'userPrincipalName', 'appId', 'appDisplayName', 'createdDateTime'];
|
|
32
32
|
}
|
|
33
33
|
async commandAction(logger, args) {
|
|
34
|
+
await this.showDeprecationWarning(logger, aadCommands.USER_SIGNIN_LIST, commands.USER_SIGNIN_LIST);
|
|
34
35
|
try {
|
|
35
36
|
let endpoint = `${this.resource}/v1.0/auditLogs/signIns`;
|
|
36
37
|
let filter = "";
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _OutlookMessageRemoveCommand_instances, _OutlookMessageRemoveCommand_initTelemetry, _OutlookMessageRemoveCommand_initOptions, _OutlookMessageRemoveCommand_initValidators, _OutlookMessageRemoveCommand_initTypes;
|
|
7
|
+
import auth from '../../../../Auth.js';
|
|
8
|
+
import request from '../../../../request.js';
|
|
9
|
+
import { accessToken } from '../../../../utils/accessToken.js';
|
|
10
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
11
|
+
import commands from '../../commands.js';
|
|
12
|
+
import { cli } from '../../../../cli/cli.js';
|
|
13
|
+
import { validation } from '../../../../utils/validation.js';
|
|
14
|
+
import { formatting } from '../../../../utils/formatting.js';
|
|
15
|
+
class OutlookMessageRemoveCommand extends GraphCommand {
|
|
16
|
+
get name() {
|
|
17
|
+
return commands.MESSAGE_REMOVE;
|
|
18
|
+
}
|
|
19
|
+
get description() {
|
|
20
|
+
return 'Permanently removes a specific message from a mailbox';
|
|
21
|
+
}
|
|
22
|
+
constructor() {
|
|
23
|
+
super();
|
|
24
|
+
_OutlookMessageRemoveCommand_instances.add(this);
|
|
25
|
+
__classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initTelemetry).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initOptions).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initValidators).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _OutlookMessageRemoveCommand_instances, "m", _OutlookMessageRemoveCommand_initTypes).call(this);
|
|
29
|
+
}
|
|
30
|
+
async commandAction(logger, args) {
|
|
31
|
+
const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
|
|
32
|
+
let principalUrl = '';
|
|
33
|
+
if (isAppOnlyAccessToken) {
|
|
34
|
+
if (!args.options.userId && !args.options.userName) {
|
|
35
|
+
throw `The option 'userId' or 'userName' is required when removing a message using application permissions.`;
|
|
36
|
+
}
|
|
37
|
+
if (args.options.userId && args.options.userName) {
|
|
38
|
+
throw `Both options 'userId' and 'userName' cannot be used together when removing a message using application permissions.`;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
if (args.options.userId && args.options.userName) {
|
|
43
|
+
throw `Both options 'userId' and 'userName' cannot be used together when removing a message using delegated permissions.`;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (args.options.userId || args.options.userName) {
|
|
47
|
+
principalUrl += `users/${args.options.userId || formatting.encodeQueryParameter(args.options.userName)}`;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
principalUrl += 'me';
|
|
51
|
+
}
|
|
52
|
+
const removeMessage = async () => {
|
|
53
|
+
try {
|
|
54
|
+
if (this.verbose) {
|
|
55
|
+
await logger.logToStderr(`Removing message with id '${args.options.id}' using ${isAppOnlyAccessToken ? 'application' : 'delegated'} permissions.`);
|
|
56
|
+
}
|
|
57
|
+
const requestOptions = {
|
|
58
|
+
url: `${this.resource}/v1.0/${principalUrl}/messages/${args.options.id}`,
|
|
59
|
+
headers: {
|
|
60
|
+
accept: 'application/json;odata.metadata=none'
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
await request.delete(requestOptions);
|
|
64
|
+
}
|
|
65
|
+
catch (err) {
|
|
66
|
+
this.handleRejectedODataJsonPromise(err);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
if (args.options.force) {
|
|
70
|
+
await removeMessage();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove message with id '${args.options.id}'?` });
|
|
74
|
+
if (result) {
|
|
75
|
+
await removeMessage();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
_OutlookMessageRemoveCommand_instances = new WeakSet(), _OutlookMessageRemoveCommand_initTelemetry = function _OutlookMessageRemoveCommand_initTelemetry() {
|
|
81
|
+
this.telemetry.push((args) => {
|
|
82
|
+
Object.assign(this.telemetryProperties, {
|
|
83
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
84
|
+
userName: typeof args.options.userName !== 'undefined',
|
|
85
|
+
force: !!args.options.force
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
}, _OutlookMessageRemoveCommand_initOptions = function _OutlookMessageRemoveCommand_initOptions() {
|
|
89
|
+
this.options.unshift({
|
|
90
|
+
option: '-i, --id <id>'
|
|
91
|
+
}, {
|
|
92
|
+
option: '--userId [userId]'
|
|
93
|
+
}, {
|
|
94
|
+
option: '--userName [userName]'
|
|
95
|
+
}, {
|
|
96
|
+
option: '-f, --force'
|
|
97
|
+
});
|
|
98
|
+
}, _OutlookMessageRemoveCommand_initValidators = function _OutlookMessageRemoveCommand_initValidators() {
|
|
99
|
+
this.validators.push(async (args) => {
|
|
100
|
+
if (args.options.userId && !validation.isValidGuid(args.options.userId)) {
|
|
101
|
+
return `Value '${args.options.userId}' is not a valid GUID for option 'userId'.`;
|
|
102
|
+
}
|
|
103
|
+
if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
|
|
104
|
+
return `Value '${args.options.userName}' is not a valid user principal name for option 'userName'.`;
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
});
|
|
108
|
+
}, _OutlookMessageRemoveCommand_initTypes = function _OutlookMessageRemoveCommand_initTypes() {
|
|
109
|
+
this.types.string.push('id', 'userId', 'userName');
|
|
110
|
+
this.types.boolean.push('force');
|
|
111
|
+
};
|
|
112
|
+
export default new OutlookMessageRemoveCommand();
|
|
113
|
+
//# sourceMappingURL=message-remove.js.map
|
|
@@ -4,6 +4,7 @@ export default {
|
|
|
4
4
|
MESSAGE_GET: `${prefix} message get`,
|
|
5
5
|
MESSAGE_LIST: `${prefix} message list`,
|
|
6
6
|
MESSAGE_MOVE: `${prefix} message move`,
|
|
7
|
+
MESSAGE_REMOVE: `${prefix} message remove`,
|
|
7
8
|
REPORT_MAILACTIVITYCOUNTS: `${prefix} report mailactivitycounts`,
|
|
8
9
|
REPORT_MAILACTIVITYUSERCOUNTS: `${prefix} report mailactivityusercounts`,
|
|
9
10
|
REPORT_MAILACTIVITYUSERDETAIL: `${prefix} report mailactivityuserdetail`,
|
|
@@ -58,16 +58,16 @@ class PpManagementAppAddCommand extends PowerPlatformCommand {
|
|
|
58
58
|
},
|
|
59
59
|
responseType: 'json'
|
|
60
60
|
};
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
61
|
+
const entraApps = await request.get((requestOptions));
|
|
62
|
+
if (entraApps.value.length === 0) {
|
|
63
63
|
const applicationIdentifier = objectId ? `ID ${objectId}` : `name ${name}`;
|
|
64
|
-
throw `No
|
|
64
|
+
throw `No Microsoft Entra application registration with ${applicationIdentifier} found`;
|
|
65
65
|
}
|
|
66
|
-
if (
|
|
67
|
-
return
|
|
66
|
+
if (entraApps.value.length === 1 && entraApps.value[0].appId) {
|
|
67
|
+
return entraApps.value[0].appId;
|
|
68
68
|
}
|
|
69
|
-
const resultAsKeyValuePair = formatting.convertArrayToHashTable('appId',
|
|
70
|
-
const result = await cli.handleMultipleResultsFound(`Multiple
|
|
69
|
+
const resultAsKeyValuePair = formatting.convertArrayToHashTable('appId', entraApps.value);
|
|
70
|
+
const result = await cli.handleMultipleResultsFound(`Multiple Microsoft Entra application registrations with name '${name}' found.`, resultAsKeyValuePair);
|
|
71
71
|
return result.appId;
|
|
72
72
|
}
|
|
73
73
|
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _PurviewThreatAssessmentAddCommand_instances, _PurviewThreatAssessmentAddCommand_initTelemetry, _PurviewThreatAssessmentAddCommand_initOptions, _PurviewThreatAssessmentAddCommand_initValidators, _PurviewThreatAssessmentAddCommand_initOptionSets;
|
|
7
|
+
import request from '../../../../request.js';
|
|
8
|
+
import { accessToken } from '../../../../utils/accessToken.js';
|
|
9
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
10
|
+
import commands from '../../commands.js';
|
|
11
|
+
import auth from '../../../../Auth.js';
|
|
12
|
+
import fs from 'fs';
|
|
13
|
+
import path from 'path';
|
|
14
|
+
class PurviewThreatAssessmentAddCommand extends GraphCommand {
|
|
15
|
+
get name() {
|
|
16
|
+
return commands.THREATASSESSMENT_ADD;
|
|
17
|
+
}
|
|
18
|
+
get description() {
|
|
19
|
+
return 'Create a threat assessment';
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
_PurviewThreatAssessmentAddCommand_instances.add(this);
|
|
24
|
+
this.allowedTypes = ['file', 'url'];
|
|
25
|
+
this.allowedExpectedAssessments = ['block', 'unblock'];
|
|
26
|
+
this.allowedCategories = ['spam', 'phishing', 'malware'];
|
|
27
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentAddCommand_instances, "m", _PurviewThreatAssessmentAddCommand_initTelemetry).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentAddCommand_instances, "m", _PurviewThreatAssessmentAddCommand_initOptions).call(this);
|
|
29
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentAddCommand_instances, "m", _PurviewThreatAssessmentAddCommand_initValidators).call(this);
|
|
30
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentAddCommand_instances, "m", _PurviewThreatAssessmentAddCommand_initOptionSets).call(this);
|
|
31
|
+
}
|
|
32
|
+
async commandAction(logger, args) {
|
|
33
|
+
try {
|
|
34
|
+
if (accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken)) {
|
|
35
|
+
throw 'This command currently does not support app only permissions.';
|
|
36
|
+
}
|
|
37
|
+
if (this.verbose) {
|
|
38
|
+
await logger.logToStderr(`Adding threat assessment of type ${args.options.type} with expected assessment ${args.options.expectedAssessment} and category ${args.options.category}`);
|
|
39
|
+
}
|
|
40
|
+
const requestBody = {
|
|
41
|
+
expectedAssessment: args.options.expectedAssessment,
|
|
42
|
+
category: args.options.category,
|
|
43
|
+
url: args.options.url,
|
|
44
|
+
contentData: args.options.path && fs.readFileSync(args.options.path).toString('base64'),
|
|
45
|
+
fileName: args.options.path && path.basename(args.options.path)
|
|
46
|
+
};
|
|
47
|
+
switch (args.options.type) {
|
|
48
|
+
case 'file':
|
|
49
|
+
requestBody['@odata.type'] = '#microsoft.graph.fileAssessmentRequest';
|
|
50
|
+
break;
|
|
51
|
+
case 'url':
|
|
52
|
+
requestBody['@odata.type'] = '#microsoft.graph.urlAssessmentRequest';
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
const requestOptions = {
|
|
56
|
+
url: `${this.resource}/v1.0/informationProtection/threatAssessmentRequests`,
|
|
57
|
+
headers: {
|
|
58
|
+
accept: 'application/json;odata.metadata=none'
|
|
59
|
+
},
|
|
60
|
+
data: requestBody,
|
|
61
|
+
responseType: 'json'
|
|
62
|
+
};
|
|
63
|
+
const response = await request.post(requestOptions);
|
|
64
|
+
await logger.log(response);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
this.handleRejectedODataPromise(err);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
_PurviewThreatAssessmentAddCommand_instances = new WeakSet(), _PurviewThreatAssessmentAddCommand_initTelemetry = function _PurviewThreatAssessmentAddCommand_initTelemetry() {
|
|
72
|
+
this.telemetry.push((args) => {
|
|
73
|
+
Object.assign(this.telemetryProperties, {
|
|
74
|
+
path: typeof args.options.path !== 'undefined',
|
|
75
|
+
url: typeof args.options.url !== 'undefined'
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}, _PurviewThreatAssessmentAddCommand_initOptions = function _PurviewThreatAssessmentAddCommand_initOptions() {
|
|
79
|
+
this.options.unshift({
|
|
80
|
+
option: '-t, --type <type>',
|
|
81
|
+
autocomplete: this.allowedTypes
|
|
82
|
+
}, {
|
|
83
|
+
option: '-e, --expectedAssessment <expectedAssessment>',
|
|
84
|
+
autocomplete: this.allowedExpectedAssessments
|
|
85
|
+
}, {
|
|
86
|
+
option: '-c, --category <category>',
|
|
87
|
+
autocomplete: this.allowedCategories
|
|
88
|
+
}, {
|
|
89
|
+
option: '-p, --path [path]'
|
|
90
|
+
}, {
|
|
91
|
+
option: '-u, --url [url]'
|
|
92
|
+
});
|
|
93
|
+
}, _PurviewThreatAssessmentAddCommand_initValidators = function _PurviewThreatAssessmentAddCommand_initValidators() {
|
|
94
|
+
this.validators.push(async (args) => {
|
|
95
|
+
if (!this.allowedTypes.some(type => type === args.options.type)) {
|
|
96
|
+
return `${args.options.type} is not an allowed type. Allowed types are ${this.allowedTypes.join('|')}`;
|
|
97
|
+
}
|
|
98
|
+
if (!this.allowedExpectedAssessments.some(expectedAssessment => expectedAssessment === args.options.expectedAssessment)) {
|
|
99
|
+
return `${args.options.expectedAssessment} is not an allowed expected assessment. Allowed expected assessments are ${this.allowedExpectedAssessments.join('|')}`;
|
|
100
|
+
}
|
|
101
|
+
if (!this.allowedCategories.some(category => category === args.options.category)) {
|
|
102
|
+
return `${args.options.category} is not an allowed category. Allowed categories are ${this.allowedCategories.join('|')}`;
|
|
103
|
+
}
|
|
104
|
+
if (args.options.path && !fs.existsSync(args.options.path)) {
|
|
105
|
+
return `File '${args.options.path}' not found. Please provide a valid path to the file.`;
|
|
106
|
+
}
|
|
107
|
+
return true;
|
|
108
|
+
});
|
|
109
|
+
}, _PurviewThreatAssessmentAddCommand_initOptionSets = function _PurviewThreatAssessmentAddCommand_initOptionSets() {
|
|
110
|
+
this.optionSets.push({
|
|
111
|
+
options: ['path'],
|
|
112
|
+
runsWhen: (args) => {
|
|
113
|
+
return args.options.type === 'file';
|
|
114
|
+
}
|
|
115
|
+
}, {
|
|
116
|
+
options: ['url'],
|
|
117
|
+
runsWhen: (args) => {
|
|
118
|
+
return args.options.type === 'url';
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
export default new PurviewThreatAssessmentAddCommand();
|
|
123
|
+
//# sourceMappingURL=threatassessment-add.js.map
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
2
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
|
+
};
|
|
6
|
+
var _PurviewThreatAssessmentListCommand_instances, _a, _PurviewThreatAssessmentListCommand_initTelemetry, _PurviewThreatAssessmentListCommand_initOptions, _PurviewThreatAssessmentListCommand_initValidators;
|
|
7
|
+
import { odata } from '../../../../utils/odata.js';
|
|
8
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
9
|
+
import commands from '../../commands.js';
|
|
10
|
+
class PurviewThreatAssessmentListCommand extends GraphCommand {
|
|
11
|
+
get name() {
|
|
12
|
+
return commands.THREATASSESSMENT_LIST;
|
|
13
|
+
}
|
|
14
|
+
get description() {
|
|
15
|
+
return 'Get a list of threat assessments';
|
|
16
|
+
}
|
|
17
|
+
defaultProperties() {
|
|
18
|
+
return ['id', 'type', 'category'];
|
|
19
|
+
}
|
|
20
|
+
constructor() {
|
|
21
|
+
super();
|
|
22
|
+
_PurviewThreatAssessmentListCommand_instances.add(this);
|
|
23
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentListCommand_instances, "m", _PurviewThreatAssessmentListCommand_initTelemetry).call(this);
|
|
24
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentListCommand_instances, "m", _PurviewThreatAssessmentListCommand_initOptions).call(this);
|
|
25
|
+
__classPrivateFieldGet(this, _PurviewThreatAssessmentListCommand_instances, "m", _PurviewThreatAssessmentListCommand_initValidators).call(this);
|
|
26
|
+
}
|
|
27
|
+
async commandAction(logger, args) {
|
|
28
|
+
if (this.verbose) {
|
|
29
|
+
logger.logToStderr('Retrieving a list of threat assessments');
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
const filter = this.getFilterQuery(args.options);
|
|
33
|
+
const items = await odata.getAllItems(`${this.resource}/v1.0/informationProtection/threatAssessmentRequests${filter}`, 'minimal');
|
|
34
|
+
let itemsToReturn = [];
|
|
35
|
+
switch (args.options.type) {
|
|
36
|
+
case 'mail':
|
|
37
|
+
itemsToReturn = items.filter(item => item['@odata.type'] === '#microsoft.graph.mailAssessmentRequest');
|
|
38
|
+
break;
|
|
39
|
+
case 'emailFile':
|
|
40
|
+
itemsToReturn = items.filter(item => item['@odata.type'] === '#microsoft.graph.emailFileAssessmentRequest');
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
itemsToReturn = items;
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
for (const item of itemsToReturn) {
|
|
47
|
+
item['type'] = this.getConvertedType(item['@odata.type']);
|
|
48
|
+
delete item['@odata.type'];
|
|
49
|
+
}
|
|
50
|
+
await logger.log(itemsToReturn);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
this.handleRejectedODataJsonPromise(err);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Content type is not equal to type.
|
|
57
|
+
// Threat assessments of type emailFile have contentType mail as well.
|
|
58
|
+
// This function gets the correct filter URL to be able to query the least amount of data
|
|
59
|
+
getFilterQuery(options) {
|
|
60
|
+
if (options.type === undefined) {
|
|
61
|
+
return '';
|
|
62
|
+
}
|
|
63
|
+
if (options.type === 'emailFile') {
|
|
64
|
+
return `?$filter=contentType eq 'mail'`;
|
|
65
|
+
}
|
|
66
|
+
return `?$filter=contentType eq '${options.type}'`;
|
|
67
|
+
}
|
|
68
|
+
getConvertedType(type) {
|
|
69
|
+
switch (type) {
|
|
70
|
+
case '#microsoft.graph.mailAssessmentRequest':
|
|
71
|
+
return 'mail';
|
|
72
|
+
case '#microsoft.graph.fileAssessmentRequest':
|
|
73
|
+
return 'file';
|
|
74
|
+
case '#microsoft.graph.emailFileAssessmentRequest':
|
|
75
|
+
return 'emailFile';
|
|
76
|
+
case '#microsoft.graph.urlAssessmentRequest':
|
|
77
|
+
return 'url';
|
|
78
|
+
default:
|
|
79
|
+
return 'Unknown';
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
_a = PurviewThreatAssessmentListCommand, _PurviewThreatAssessmentListCommand_instances = new WeakSet(), _PurviewThreatAssessmentListCommand_initTelemetry = function _PurviewThreatAssessmentListCommand_initTelemetry() {
|
|
84
|
+
this.telemetry.push((args) => {
|
|
85
|
+
Object.assign(this.telemetryProperties, {
|
|
86
|
+
type: typeof args.options.type !== 'undefined'
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}, _PurviewThreatAssessmentListCommand_initOptions = function _PurviewThreatAssessmentListCommand_initOptions() {
|
|
90
|
+
this.options.unshift({
|
|
91
|
+
option: '-t, --type [type]',
|
|
92
|
+
autocomplete: _a.allowedTypes
|
|
93
|
+
});
|
|
94
|
+
}, _PurviewThreatAssessmentListCommand_initValidators = function _PurviewThreatAssessmentListCommand_initValidators() {
|
|
95
|
+
this.validators.push(async (args) => {
|
|
96
|
+
if (args.options.type && _a.allowedTypes.indexOf(args.options.type) < 0) {
|
|
97
|
+
return `${args.options.type} is not a valid type. Allowed values are ${_a.allowedTypes.join(', ')}`;
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
});
|
|
101
|
+
};
|
|
102
|
+
PurviewThreatAssessmentListCommand.allowedTypes = ['mail', 'file', 'emailFile', 'url'];
|
|
103
|
+
export default new PurviewThreatAssessmentListCommand();
|
|
104
|
+
//# sourceMappingURL=threatassessment-list.js.map
|
|
@@ -18,6 +18,8 @@ export default {
|
|
|
18
18
|
SENSITIVITYLABEL_GET: `${prefix} sensitivitylabel get`,
|
|
19
19
|
SENSITIVITYLABEL_LIST: `${prefix} sensitivitylabel list`,
|
|
20
20
|
SENSITIVITYLABEL_POLICYSETTINGS_LIST: `${prefix} sensitivitylabel policysettings list`,
|
|
21
|
-
|
|
21
|
+
THREATASSESSMENT_ADD: `${prefix} threatassessment add`,
|
|
22
|
+
THREATASSESSMENT_GET: `${prefix} threatassessment get`,
|
|
23
|
+
THREATASSESSMENT_LIST: `${prefix} threatassessment list`
|
|
22
24
|
};
|
|
23
25
|
//# sourceMappingURL=commands.js.map
|
|
@@ -53,4 +53,115 @@ export const workflow = {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
|
+
export const pipeline = {
|
|
57
|
+
name: "Deploy Solution",
|
|
58
|
+
trigger: {
|
|
59
|
+
branches: {
|
|
60
|
+
include: [
|
|
61
|
+
"main"
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
pool: {
|
|
66
|
+
vmImage: "ubuntu-latest"
|
|
67
|
+
},
|
|
68
|
+
variables: [
|
|
69
|
+
{
|
|
70
|
+
name: "CertificateBase64Encoded",
|
|
71
|
+
value: ""
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "CertificateSecureFileId",
|
|
75
|
+
value: ""
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
name: "CertificatePassword",
|
|
79
|
+
value: ""
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "EntraAppId",
|
|
83
|
+
value: ""
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "UserName",
|
|
87
|
+
value: ""
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: "Password",
|
|
91
|
+
value: ""
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: "TenantId",
|
|
95
|
+
value: ""
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: "SharePointBaseUrl",
|
|
99
|
+
value: ""
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "PackageName",
|
|
103
|
+
value: ""
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
name: "SiteAppCatalogUrl",
|
|
107
|
+
value: ""
|
|
108
|
+
}
|
|
109
|
+
],
|
|
110
|
+
stages: [
|
|
111
|
+
{
|
|
112
|
+
stage: "Build_and_Deploy",
|
|
113
|
+
jobs: [
|
|
114
|
+
{
|
|
115
|
+
job: "Build_and_Deploy",
|
|
116
|
+
steps: [
|
|
117
|
+
{
|
|
118
|
+
task: "NodeTool@0",
|
|
119
|
+
displayName: "Use Node.js",
|
|
120
|
+
inputs: {
|
|
121
|
+
versionSpec: "18.x"
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
task: "Npm@1",
|
|
126
|
+
displayName: "Run npm install",
|
|
127
|
+
inputs: {
|
|
128
|
+
command: "install"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
task: "Gulp@0",
|
|
133
|
+
displayName: "Gulp bundle",
|
|
134
|
+
inputs: {
|
|
135
|
+
gulpFile: "./gulpfile.js",
|
|
136
|
+
targets: "bundle",
|
|
137
|
+
arguments: "--ship"
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
task: "Gulp@0",
|
|
142
|
+
displayName: "Gulp package",
|
|
143
|
+
inputs: {
|
|
144
|
+
targets: "package-solution",
|
|
145
|
+
arguments: "--ship"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
task: "Npm@1",
|
|
150
|
+
displayName: "Install CLI for Microsoft 365",
|
|
151
|
+
inputs: {
|
|
152
|
+
command: "custom",
|
|
153
|
+
verbose: false,
|
|
154
|
+
customCommand: "install -g @pnp/cli-microsoft365"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
script: "\n{{login}} \nm365 spo set --url '$(SharePointBaseUrl)' \n{{addApp}} \n{{deploy}}\n",
|
|
159
|
+
displayName: "CLI for Microsoft 365 Deploy App"
|
|
160
|
+
}
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
};
|
|
56
167
|
//# sourceMappingURL=DeployWorkflow.js.map
|