@pnp/cli-microsoft365 6.3.0-beta.c3dc921 → 6.3.0-beta.cefe20e
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.js +8 -0
- package/dist/Auth.js +0 -18
- package/dist/Command.js +12 -1
- package/dist/appInsights.js +2 -1
- package/dist/cli/Cli.js +74 -3
- package/dist/m365/aad/commands/group/group-list.js +2 -1
- package/dist/m365/aad/commands/license/license-list.js +41 -0
- package/dist/m365/aad/commands/user/user-add.js +223 -0
- package/dist/m365/aad/commands/user/user-license-add.js +88 -0
- package/dist/m365/aad/commands/user/user-license-list.js +99 -0
- package/dist/m365/aad/commands/user/user-license-remove.js +114 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-clear.js +103 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-list.js +41 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-remove.js +92 -0
- package/dist/m365/aad/commands/user/user-recyclebinitem-restore.js +77 -0
- package/dist/m365/aad/commands/user/user-remove.js +107 -0
- package/dist/m365/aad/commands.js +10 -0
- package/dist/m365/base/O365MgmtCommand.js +10 -0
- package/dist/m365/context/commands/option/option-list.js +54 -0
- package/dist/m365/context/commands.js +1 -0
- package/dist/m365/file/commands/convert/convert-pdf.js +7 -6
- package/dist/m365/flow/commands/environment/FlowEnvironmentDetails.js +3 -0
- package/dist/m365/flow/commands/environment/environment-get.js +26 -11
- package/dist/m365/flow/commands/run/run-list.js +55 -3
- package/dist/m365/graph/commands/changelog/changelog-list.js +3 -2
- package/dist/m365/onenote/commands/notebook/notebook-list.js +50 -53
- package/dist/m365/onenote/commands/page/page-list.js +2 -16
- package/dist/m365/outlook/commands/mail/mail-send.js +3 -2
- package/dist/m365/outlook/commands/message/message-get.js +4 -3
- package/dist/m365/pa/commands/environment/environment-get.js +13 -5
- package/dist/m365/planner/commands/plan/plan-add.js +20 -6
- package/dist/m365/planner/commands/plan/plan-get.js +40 -26
- package/dist/m365/planner/commands/plan/plan-list.js +24 -14
- package/dist/m365/planner/commands/plan/plan-remove.js +1 -1
- package/dist/m365/planner/commands/plan/plan-set.js +21 -10
- package/dist/m365/planner/commands/roster/roster-add.js +47 -0
- package/dist/m365/planner/commands/roster/roster-get.js +61 -0
- package/dist/m365/planner/commands/roster/roster-member-add.js +113 -0
- package/dist/m365/planner/commands/roster/roster-member-list.js +54 -0
- package/dist/m365/planner/commands/roster/roster-member-remove.js +140 -0
- package/dist/m365/planner/commands/roster/roster-remove.js +88 -0
- package/dist/m365/planner/commands/task/task-add.js +3 -0
- package/dist/m365/planner/commands/task/task-checklistitem-add.js +2 -1
- package/dist/m365/planner/commands/task/task-checklistitem-list.js +2 -1
- package/dist/m365/planner/commands.js +6 -0
- package/dist/m365/pp/commands/environment/environment-get.js +18 -9
- package/dist/m365/pp/commands/solution/solution-get.js +2 -1
- package/dist/m365/pp/commands/solution/solution-list.js +2 -1
- package/dist/m365/purview/commands/auditlog/auditlog-list.js +205 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +75 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +46 -0
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +97 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +77 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +75 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +43 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +97 -0
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +90 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-add.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-get.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-remove.js +5 -0
- package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +11 -1
- package/dist/m365/purview/commands.js +9 -0
- package/dist/m365/spfx/commands/project/WebApiPermissionRequests.js +3 -0
- package/dist/m365/spfx/commands/project/project-permissions-grant.js +81 -0
- package/dist/m365/spfx/commands.js +3 -2
- package/dist/m365/spo/commands/app/app-add.js +2 -1
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +95 -0
- package/dist/m365/spo/commands/customaction/customaction-get.js +17 -66
- package/dist/m365/spo/commands/customaction/customaction-list.js +2 -36
- package/dist/m365/spo/commands/customaction/customaction-remove.js +11 -18
- package/dist/m365/spo/commands/file/GraphFileDetails.js +0 -1
- package/dist/m365/spo/commands/file/file-move.js +0 -2
- package/dist/m365/spo/commands/file/file-sharinginfo-get.js +2 -1
- package/dist/m365/spo/commands/file/file-sharinglink-add.js +2 -22
- package/dist/m365/spo/commands/file/file-sharinglink-clear.js +137 -0
- package/dist/m365/spo/commands/file/file-sharinglink-get.js +2 -25
- package/dist/m365/spo/commands/file/file-sharinglink-list.js +9 -29
- package/dist/m365/spo/commands/file/file-sharinglink-remove.js +2 -25
- package/dist/m365/spo/commands/file/file-sharinglink-set.js +104 -0
- package/dist/m365/spo/commands/folder/folder-copy.js +0 -2
- package/dist/m365/spo/commands/folder/folder-move.js +0 -2
- package/dist/m365/spo/commands/group/group-list.js +2 -1
- package/dist/m365/spo/commands/hubsite/hubsite-get.js +1 -1
- package/dist/m365/spo/commands/listitem/listitem-add.js +2 -1
- package/dist/m365/spo/commands/listitem/listitem-list.js +2 -1
- package/dist/m365/spo/commands/navigation/navigation-node-add.js +17 -3
- package/dist/m365/spo/commands/navigation/navigation-node-get.js +73 -0
- package/dist/m365/spo/commands/navigation/navigation-node-list.js +4 -7
- package/dist/m365/spo/commands/navigation/navigation-node-set.js +118 -0
- package/dist/m365/spo/commands/page/page-column-get.js +2 -1
- package/dist/m365/spo/commands/page/page-column-list.js +2 -1
- package/dist/m365/spo/commands/page/page-section-get.js +2 -1
- package/dist/m365/spo/commands/page/page-section-list.js +2 -1
- package/dist/m365/spo/commands/site/site-add.js +0 -3
- package/dist/m365/spo/commands/site/site-apppermission-add.js +2 -14
- package/dist/m365/spo/commands/site/site-apppermission-get.js +2 -14
- package/dist/m365/spo/commands/site/site-apppermission-list.js +2 -14
- package/dist/m365/spo/commands/site/site-apppermission-remove.js +2 -14
- package/dist/m365/spo/commands/site/site-apppermission-set.js +2 -14
- package/dist/m365/spo/commands/site/site-remove.js +0 -3
- package/dist/m365/spo/commands/site/site-set.js +0 -2
- package/dist/m365/spo/commands/sitedesign/sitedesign-add.js +6 -0
- package/dist/m365/spo/commands/spo-search.js +2 -1
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +179 -0
- package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +0 -1
- package/dist/m365/spo/commands/term/term-list.js +2 -1
- package/dist/m365/spo/commands/userprofile/userprofile-get.js +2 -2
- package/dist/m365/spo/commands/web/web-set.js +11 -4
- package/dist/m365/spo/commands.js +6 -0
- package/dist/m365/teams/commands/chat/chat-list.js +4 -4
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +5 -5
- package/dist/m365/teams/commands/meeting/meeting-get.js +5 -5
- package/dist/m365/teams/commands/meeting/meeting-list.js +5 -4
- package/dist/m365/teams/commands/team/team-add.js +3 -8
- package/dist/m365/teams/commands/team/team-app-list.js +1 -1
- package/dist/m365/teams/commands/user/user-app-list.js +2 -1
- package/dist/m365/todo/commands/task/task-get.js +2 -1
- package/dist/m365/todo/commands/task/task-list.js +2 -1
- package/dist/m365/yammer/commands/yammer-search.js +2 -1
- package/dist/utils/aadUser.js +38 -0
- package/dist/utils/accessToken.js +1 -1
- package/dist/utils/planner.js +16 -5
- package/dist/utils/session.js +18 -0
- package/dist/utils/spo.js +119 -12
- package/docs/docs/cmd/aad/app/app-list.md +3 -0
- package/docs/docs/cmd/aad/license/license-list.md +87 -0
- package/docs/docs/cmd/aad/user/user-add.md +168 -0
- package/docs/docs/cmd/aad/user/user-license-add.md +108 -0
- package/docs/docs/cmd/aad/user/user-license-list.md +98 -0
- package/docs/docs/cmd/aad/user/user-license-remove.md +43 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-clear.md +42 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-list.md +82 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-remove.md +45 -0
- package/docs/docs/cmd/aad/user/user-recyclebinitem-restore.md +99 -0
- package/docs/docs/cmd/aad/user/user-remove.md +51 -0
- package/docs/docs/cmd/aad/user/user-set.md +2 -2
- package/docs/docs/cmd/context/option/option-list.md +63 -0
- package/docs/docs/cmd/flow/environment/environment-get.md +31 -3
- package/docs/docs/cmd/flow/run/run-list.md +21 -0
- package/docs/docs/cmd/login.md +26 -0
- package/docs/docs/cmd/logout.md +4 -0
- package/docs/docs/cmd/pa/app/app-get.md +24 -0
- package/docs/docs/cmd/pa/app/app-list.md +21 -0
- package/docs/docs/cmd/pa/connector/connector-list.md +17 -0
- package/docs/docs/cmd/pa/environment/environment-get.md +26 -2
- package/docs/docs/cmd/pa/environment/environment-list.md +19 -0
- package/docs/docs/cmd/planner/plan/plan-add.md +17 -6
- package/docs/docs/cmd/planner/plan/plan-get.md +21 -7
- package/docs/docs/cmd/planner/plan/plan-list.md +16 -2
- package/docs/docs/cmd/planner/plan/plan-remove.md +4 -0
- package/docs/docs/cmd/planner/plan/plan-set.md +10 -4
- package/docs/docs/cmd/planner/roster/roster-add.md +60 -0
- package/docs/docs/cmd/planner/roster/roster-get.md +73 -0
- package/docs/docs/cmd/planner/roster/roster-member-add.md +87 -0
- package/docs/docs/cmd/planner/roster/roster-member-list.md +76 -0
- package/docs/docs/cmd/planner/roster/roster-member-remove.md +51 -0
- package/docs/docs/cmd/planner/roster/roster-remove.md +48 -0
- package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-get.md +43 -0
- package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-list.md +43 -0
- package/docs/docs/cmd/pp/card/card-clone.md +12 -0
- package/docs/docs/cmd/pp/card/card-get.md +49 -0
- package/docs/docs/cmd/pp/card/card-list.md +49 -0
- package/docs/docs/cmd/pp/chatbot/chatbot-get.md +55 -0
- package/docs/docs/cmd/pp/chatbot/chatbot-list.md +36 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-get.md +30 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-list.md +30 -0
- package/docs/docs/cmd/pp/dataverse/dataverse-table-row-list.md +30 -0
- package/docs/docs/cmd/pp/environment/environment-get.md +19 -0
- package/docs/docs/cmd/pp/environment/environment-list.md +19 -0
- package/docs/docs/cmd/pp/gateway/gateway-get.md +19 -0
- package/docs/docs/cmd/pp/gateway/gateway-list.md +19 -0
- package/docs/docs/cmd/pp/managementapp/managementapp-add.md +12 -0
- package/docs/docs/cmd/pp/managementapp/managementapp-list.md +12 -0
- package/docs/docs/cmd/pp/solution/solution-get.md +14 -0
- package/docs/docs/cmd/pp/solution/solution-list.md +14 -0
- package/docs/docs/cmd/pp/solution/solution-publisher-get.md +20 -1
- package/docs/docs/cmd/pp/solution/solution-publisher-list.md +18 -0
- package/docs/docs/cmd/pp/tenant/tenant-settings-list.md +21 -0
- package/docs/docs/cmd/purview/auditlog/auditlog-list.md +123 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-get.md +132 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-list.md +107 -0
- package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.md +45 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.md +106 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.md +103 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.md +97 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.md +43 -0
- package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.md +43 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.md +3 -0
- package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.md +3 -0
- package/docs/docs/cmd/request.md +74 -0
- package/docs/docs/cmd/spfx/project/project-permissions-grant.md +65 -0
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-add.md +56 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-clear.md +46 -0
- package/docs/docs/cmd/spo/file/file-sharinglink-list.md +1 -1
- package/docs/docs/cmd/spo/file/file-sharinglink-set.md +104 -0
- package/docs/docs/cmd/spo/homesite/homesite-get.md +20 -1
- package/docs/docs/cmd/spo/homesite/homesite-remove.md +8 -2
- package/docs/docs/cmd/spo/homesite/homesite-set.md +8 -2
- package/docs/docs/cmd/spo/hubsite/hubsite-connect.md +9 -9
- package/docs/docs/cmd/spo/hubsite/hubsite-data-get.md +34 -5
- package/docs/docs/cmd/spo/hubsite/hubsite-disconnect.md +6 -6
- package/docs/docs/cmd/spo/hubsite/hubsite-get.md +36 -19
- package/docs/docs/cmd/spo/hubsite/hubsite-list.md +59 -1
- package/docs/docs/cmd/spo/hubsite/hubsite-register.md +30 -1
- package/docs/docs/cmd/spo/hubsite/hubsite-rights-grant.md +6 -6
- package/docs/docs/cmd/spo/hubsite/hubsite-rights-revoke.md +4 -4
- package/docs/docs/cmd/spo/hubsite/hubsite-set.md +40 -15
- package/docs/docs/cmd/spo/hubsite/hubsite-unregister.md +4 -4
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-get.md +7 -1
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-remove.md +9 -3
- package/docs/docs/cmd/spo/knowledgehub/knowledgehub-set.md +8 -2
- package/docs/docs/cmd/spo/list/list-add.md +123 -57
- package/docs/docs/cmd/spo/list/list-contenttype-add.md +50 -5
- package/docs/docs/cmd/spo/list/list-contenttype-default-set.md +4 -4
- package/docs/docs/cmd/spo/list/list-contenttype-list.md +49 -4
- package/docs/docs/cmd/spo/list/list-contenttype-remove.md +6 -6
- package/docs/docs/cmd/spo/list/list-get.md +70 -4
- package/docs/docs/cmd/spo/list/list-list.md +70 -2
- package/docs/docs/cmd/spo/list/list-remove.md +6 -6
- package/docs/docs/cmd/spo/list/list-retentionlabel-ensure.md +2 -2
- package/docs/docs/cmd/spo/list/list-retentionlabel-get.md +36 -3
- package/docs/docs/cmd/spo/list/list-retentionlabel-remove.md +3 -3
- package/docs/docs/cmd/spo/list/list-roleassignment-add.md +6 -6
- package/docs/docs/cmd/spo/list/list-roleassignment-remove.md +3 -3
- package/docs/docs/cmd/spo/list/list-roleinheritance-break.md +9 -9
- package/docs/docs/cmd/spo/list/list-roleinheritance-reset.md +7 -7
- package/docs/docs/cmd/spo/list/list-set.md +61 -61
- package/docs/docs/cmd/spo/list/list-sitescript-get.md +35 -3
- package/docs/docs/cmd/spo/list/list-view-add.md +66 -5
- package/docs/docs/cmd/spo/list/list-view-field-add.md +10 -10
- package/docs/docs/cmd/spo/list/list-view-get.md +61 -0
- package/docs/docs/cmd/spo/list/list-view-list.md +61 -0
- package/docs/docs/cmd/spo/list/list-view-set.md +1 -1
- package/docs/docs/cmd/spo/list/list-webhook-add.md +19 -0
- package/docs/docs/cmd/spo/list/list-webhook-get.md +19 -0
- package/docs/docs/cmd/spo/list/list-webhook-list.md +19 -0
- package/docs/docs/cmd/spo/listitem/listitem-add.md +29 -0
- package/docs/docs/cmd/spo/listitem/listitem-attachment-list.md +19 -4
- package/docs/docs/cmd/spo/listitem/listitem-get.md +57 -0
- package/docs/docs/cmd/spo/listitem/listitem-isrecord.md +8 -2
- package/docs/docs/cmd/spo/listitem/listitem-list.md +28 -0
- package/docs/docs/cmd/spo/listitem/listitem-record-declare.md +15 -0
- package/docs/docs/cmd/spo/listitem/listitem-set.md +30 -0
- package/docs/docs/cmd/spo/navigation/navigation-node-add.md +40 -3
- package/docs/docs/cmd/spo/navigation/navigation-node-get.md +91 -0
- package/docs/docs/cmd/spo/navigation/navigation-node-list.md +30 -0
- package/docs/docs/cmd/spo/navigation/navigation-node-remove.md +1 -1
- package/docs/docs/cmd/spo/navigation/navigation-node-set.md +59 -0
- package/docs/docs/cmd/spo/sitedesign/sitedesign-add.md +3 -0
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.md +59 -0
- package/docs/docs/cmd/spo/web/web-set.md +9 -0
- package/docs/docs/cmd/status.md +46 -0
- package/docs/docs/cmd/version.md +26 -0
- package/npm-shrinkwrap.json +912 -876
- package/package.json +13 -12
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
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");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _PlannerRosterMemberRemoveCommand_instances, _PlannerRosterMemberRemoveCommand_initTelemetry, _PlannerRosterMemberRemoveCommand_initOptions, _PlannerRosterMemberRemoveCommand_initOptionSets, _PlannerRosterMemberRemoveCommand_initValidators;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
19
|
+
const request_1 = require("../../../../request");
|
|
20
|
+
const validation_1 = require("../../../../utils/validation");
|
|
21
|
+
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
22
|
+
const commands_1 = require("../../commands");
|
|
23
|
+
const odata_1 = require("../../../../utils/odata");
|
|
24
|
+
const aadUser_1 = require("../../../../utils/aadUser");
|
|
25
|
+
class PlannerRosterMemberRemoveCommand extends GraphCommand_1.default {
|
|
26
|
+
get name() {
|
|
27
|
+
return commands_1.default.ROSTER_MEMBER_REMOVE;
|
|
28
|
+
}
|
|
29
|
+
get description() {
|
|
30
|
+
return 'Removes a member from a Microsoft Planner Roster';
|
|
31
|
+
}
|
|
32
|
+
constructor() {
|
|
33
|
+
super();
|
|
34
|
+
_PlannerRosterMemberRemoveCommand_instances.add(this);
|
|
35
|
+
__classPrivateFieldGet(this, _PlannerRosterMemberRemoveCommand_instances, "m", _PlannerRosterMemberRemoveCommand_initTelemetry).call(this);
|
|
36
|
+
__classPrivateFieldGet(this, _PlannerRosterMemberRemoveCommand_instances, "m", _PlannerRosterMemberRemoveCommand_initOptions).call(this);
|
|
37
|
+
__classPrivateFieldGet(this, _PlannerRosterMemberRemoveCommand_instances, "m", _PlannerRosterMemberRemoveCommand_initValidators).call(this);
|
|
38
|
+
__classPrivateFieldGet(this, _PlannerRosterMemberRemoveCommand_instances, "m", _PlannerRosterMemberRemoveCommand_initOptionSets).call(this);
|
|
39
|
+
}
|
|
40
|
+
commandAction(logger, args) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
if (this.verbose) {
|
|
43
|
+
logger.logToStderr(`Removing member ${args.options.userName || args.options.userId} from the Microsoft Planner Roster`);
|
|
44
|
+
}
|
|
45
|
+
if (args.options.confirm) {
|
|
46
|
+
yield this.removeRosterMember(args);
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const result = yield Cli_1.Cli.prompt({
|
|
50
|
+
type: 'confirm',
|
|
51
|
+
name: 'continue',
|
|
52
|
+
default: false,
|
|
53
|
+
message: `Are you sure you want to remove member '${args.options.userId || args.options.userName}'?`
|
|
54
|
+
});
|
|
55
|
+
if (result.continue) {
|
|
56
|
+
yield this.removeRosterMember(args);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
getUserId(args) {
|
|
62
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
63
|
+
if (args.options.userId) {
|
|
64
|
+
return args.options.userId;
|
|
65
|
+
}
|
|
66
|
+
return aadUser_1.aadUser.getUserIdByUpn(args.options.userName);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
removeRosterMember(args) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
try {
|
|
72
|
+
const rosterMembersContinue = yield this.removeLastMemberConfirmation(args);
|
|
73
|
+
if (rosterMembersContinue) {
|
|
74
|
+
const userId = yield this.getUserId(args);
|
|
75
|
+
const requestOptions = {
|
|
76
|
+
url: `${this.resource}/beta/planner/rosters/${args.options.rosterId}/members/${userId}`,
|
|
77
|
+
headers: {
|
|
78
|
+
accept: 'application/json;odata.metadata=none'
|
|
79
|
+
},
|
|
80
|
+
responseType: 'json'
|
|
81
|
+
};
|
|
82
|
+
yield request_1.default.delete(requestOptions);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
this.handleRejectedODataJsonPromise(err);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
removeLastMemberConfirmation(args) {
|
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
if (!args.options.confirm) {
|
|
93
|
+
const rosterMembers = yield odata_1.odata.getAllItems(`${this.resource}/beta/planner/rosters/${args.options.rosterId}/members?$select=Id`);
|
|
94
|
+
if (rosterMembers.length === 1) {
|
|
95
|
+
const result = yield Cli_1.Cli.prompt({
|
|
96
|
+
type: 'confirm',
|
|
97
|
+
name: 'continue',
|
|
98
|
+
default: false,
|
|
99
|
+
message: `You are about to remove the last member of this Roster. When this happens, the Roster and all its contents will be deleted within 30 days. Are you sure you want to proceed?`
|
|
100
|
+
});
|
|
101
|
+
return result.continue;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return true;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
_PlannerRosterMemberRemoveCommand_instances = new WeakSet(), _PlannerRosterMemberRemoveCommand_initTelemetry = function _PlannerRosterMemberRemoveCommand_initTelemetry() {
|
|
109
|
+
this.telemetry.push((args) => {
|
|
110
|
+
Object.assign(this.telemetryProperties, {
|
|
111
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
112
|
+
userName: typeof args.options.userName !== 'undefined',
|
|
113
|
+
confirm: !!args.options.confirm
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
}, _PlannerRosterMemberRemoveCommand_initOptions = function _PlannerRosterMemberRemoveCommand_initOptions() {
|
|
117
|
+
this.options.unshift({
|
|
118
|
+
option: '--rosterId <rosterId>'
|
|
119
|
+
}, {
|
|
120
|
+
option: '--userId [userId]'
|
|
121
|
+
}, {
|
|
122
|
+
option: '--userName [userName]'
|
|
123
|
+
}, {
|
|
124
|
+
option: '--confirm'
|
|
125
|
+
});
|
|
126
|
+
}, _PlannerRosterMemberRemoveCommand_initOptionSets = function _PlannerRosterMemberRemoveCommand_initOptionSets() {
|
|
127
|
+
this.optionSets.push({ options: ['userId', 'userName'] });
|
|
128
|
+
}, _PlannerRosterMemberRemoveCommand_initValidators = function _PlannerRosterMemberRemoveCommand_initValidators() {
|
|
129
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
130
|
+
if (args.options.userId && !validation_1.validation.isValidGuid(args.options.userId)) {
|
|
131
|
+
return `${args.options.userId} is not a valid GUID`;
|
|
132
|
+
}
|
|
133
|
+
if (args.options.userName && !validation_1.validation.isValidUserPrincipalName(args.options.userName)) {
|
|
134
|
+
return `${args.options.userName} is not a valid userName`;
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
}));
|
|
138
|
+
};
|
|
139
|
+
module.exports = new PlannerRosterMemberRemoveCommand();
|
|
140
|
+
//# sourceMappingURL=roster-member-remove.js.map
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
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");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _PlannerRosterRemoveCommand_instances, _PlannerRosterRemoveCommand_initTelemetry, _PlannerRosterRemoveCommand_initOptions;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
19
|
+
const request_1 = require("../../../../request");
|
|
20
|
+
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
21
|
+
const commands_1 = require("../../commands");
|
|
22
|
+
class PlannerRosterRemoveCommand extends GraphCommand_1.default {
|
|
23
|
+
get name() {
|
|
24
|
+
return commands_1.default.ROSTER_REMOVE;
|
|
25
|
+
}
|
|
26
|
+
get description() {
|
|
27
|
+
return 'Removes a Microsoft Planner Roster';
|
|
28
|
+
}
|
|
29
|
+
constructor() {
|
|
30
|
+
super();
|
|
31
|
+
_PlannerRosterRemoveCommand_instances.add(this);
|
|
32
|
+
__classPrivateFieldGet(this, _PlannerRosterRemoveCommand_instances, "m", _PlannerRosterRemoveCommand_initTelemetry).call(this);
|
|
33
|
+
__classPrivateFieldGet(this, _PlannerRosterRemoveCommand_instances, "m", _PlannerRosterRemoveCommand_initOptions).call(this);
|
|
34
|
+
}
|
|
35
|
+
commandAction(logger, args) {
|
|
36
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
if (args.options.confirm) {
|
|
38
|
+
yield this.removeRoster(args, logger);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const result = yield Cli_1.Cli.prompt({
|
|
42
|
+
type: 'confirm',
|
|
43
|
+
name: 'continue',
|
|
44
|
+
default: false,
|
|
45
|
+
message: `Are you sure you want to remove roster ${args.options.id}?`
|
|
46
|
+
});
|
|
47
|
+
if (result.continue) {
|
|
48
|
+
yield this.removeRoster(args, logger);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
removeRoster(args, logger) {
|
|
54
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
if (this.verbose) {
|
|
56
|
+
logger.logToStderr(`Removing roster ${args.options.id}`);
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const requestOptions = {
|
|
60
|
+
url: `${this.resource}/beta/planner/rosters/${args.options.id}`,
|
|
61
|
+
headers: {
|
|
62
|
+
accept: 'application/json;odata.metadata=none'
|
|
63
|
+
},
|
|
64
|
+
responseType: 'json'
|
|
65
|
+
};
|
|
66
|
+
yield request_1.default.delete(requestOptions);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
this.handleRejectedODataJsonPromise(err);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
_PlannerRosterRemoveCommand_instances = new WeakSet(), _PlannerRosterRemoveCommand_initTelemetry = function _PlannerRosterRemoveCommand_initTelemetry() {
|
|
75
|
+
this.telemetry.push((args) => {
|
|
76
|
+
Object.assign(this.telemetryProperties, {
|
|
77
|
+
confirm: !!args.options.confirm
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
}, _PlannerRosterRemoveCommand_initOptions = function _PlannerRosterRemoveCommand_initOptions() {
|
|
81
|
+
this.options.unshift({
|
|
82
|
+
option: '--id <id>'
|
|
83
|
+
}, {
|
|
84
|
+
option: '--confirm'
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
module.exports = new PlannerRosterRemoveCommand();
|
|
88
|
+
//# sourceMappingURL=roster-remove.js.map
|
|
@@ -69,6 +69,9 @@ class PlannerTaskAddCommand extends GraphCommand_1.default {
|
|
|
69
69
|
};
|
|
70
70
|
const newTask = yield request_1.default.post(requestOptions);
|
|
71
71
|
const result = yield this.updateTaskDetails(args.options, newTask);
|
|
72
|
+
if (result.description) {
|
|
73
|
+
result.hasDescription = true;
|
|
74
|
+
}
|
|
72
75
|
logger.log(result);
|
|
73
76
|
}
|
|
74
77
|
catch (err) {
|
|
@@ -16,6 +16,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
16
16
|
var _PlannerTaskChecklistItemAddCommand_instances, _PlannerTaskChecklistItemAddCommand_initTelemetry, _PlannerTaskChecklistItemAddCommand_initOptions;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const uuid_1 = require("uuid");
|
|
19
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
19
20
|
const request_1 = require("../../../../request");
|
|
20
21
|
const formatting_1 = require("../../../../utils/formatting");
|
|
21
22
|
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
@@ -61,7 +62,7 @@ class PlannerTaskChecklistItemAddCommand extends GraphCommand_1.default {
|
|
|
61
62
|
data: body
|
|
62
63
|
};
|
|
63
64
|
const result = yield request_1.default.patch(requestOptions);
|
|
64
|
-
if (args.options.output
|
|
65
|
+
if (!Cli_1.Cli.shouldTrimOutput(args.options.output)) {
|
|
65
66
|
logger.log(result.checklist);
|
|
66
67
|
}
|
|
67
68
|
else {
|
|
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _PlannerTaskChecklistItemListCommand_instances, _PlannerTaskChecklistItemListCommand_initOptions;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
18
19
|
const request_1 = require("../../../../request");
|
|
19
20
|
const formatting_1 = require("../../../../utils/formatting");
|
|
20
21
|
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
@@ -45,7 +46,7 @@ class PlannerTaskChecklistItemListCommand extends GraphCommand_1.default {
|
|
|
45
46
|
};
|
|
46
47
|
try {
|
|
47
48
|
const res = yield request_1.default.get(requestOptions);
|
|
48
|
-
if (!args.options.output || args.options.output
|
|
49
|
+
if (!args.options.output || !Cli_1.Cli.shouldTrimOutput(args.options.output)) {
|
|
49
50
|
logger.log(res.checklist);
|
|
50
51
|
}
|
|
51
52
|
else {
|
|
@@ -12,6 +12,12 @@ exports.default = {
|
|
|
12
12
|
PLAN_LIST: `${prefix} plan list`,
|
|
13
13
|
PLAN_REMOVE: `${prefix} plan remove`,
|
|
14
14
|
PLAN_SET: `${prefix} plan set`,
|
|
15
|
+
ROSTER_ADD: `${prefix} roster add`,
|
|
16
|
+
ROSTER_GET: `${prefix} roster get`,
|
|
17
|
+
ROSTER_MEMBER_ADD: `${prefix} roster member add`,
|
|
18
|
+
ROSTER_MEMBER_LIST: `${prefix} roster member list`,
|
|
19
|
+
ROSTER_MEMBER_REMOVE: `${prefix} roster member remove`,
|
|
20
|
+
ROSTER_REMOVE: `${prefix} roster remove`,
|
|
15
21
|
TASK_ADD: `${prefix} task add`,
|
|
16
22
|
TASK_CHECKLISTITEM_ADD: `${prefix} task checklistitem add`,
|
|
17
23
|
TASK_CHECKLISTITEM_LIST: `${prefix} task checklistitem list`,
|
|
@@ -15,9 +15,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _PpEnvironmentGetCommand_instances, _PpEnvironmentGetCommand_initTelemetry, _PpEnvironmentGetCommand_initOptions;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
const odata_1 = require("../../../../utils/odata");
|
|
19
18
|
const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
|
|
20
19
|
const commands_1 = require("../../commands");
|
|
20
|
+
const request_1 = require("../../../../request");
|
|
21
|
+
const formatting_1 = require("../../../../utils/formatting");
|
|
21
22
|
class PpEnvironmentGetCommand extends PowerPlatformCommand_1.default {
|
|
22
23
|
get name() {
|
|
23
24
|
return commands_1.default.ENVIRONMENT_GET;
|
|
@@ -36,16 +37,24 @@ class PpEnvironmentGetCommand extends PowerPlatformCommand_1.default {
|
|
|
36
37
|
}
|
|
37
38
|
commandAction(logger, args) {
|
|
38
39
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
url = `${this.resource}/providers/Microsoft.BusinessAppPlatform/scopes/admin/environments`;
|
|
40
|
+
if (this.verbose) {
|
|
41
|
+
logger.logToStderr(`Retrieving environment: ${args.options.name || 'default'}`);
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
throw `The specified Power Platform environment does not exist`;
|
|
43
|
+
let url = `${this.resource}/providers/Microsoft.BusinessAppPlatform`;
|
|
44
|
+
if (args.options.asAdmin) {
|
|
45
|
+
url += '/scopes/admin';
|
|
47
46
|
}
|
|
48
|
-
|
|
47
|
+
const envName = args.options.name ? formatting_1.formatting.encodeQueryParameter(args.options.name) : '~Default';
|
|
48
|
+
url += `/environments/${envName}?api-version=2020-10-01`;
|
|
49
|
+
const requestOptions = {
|
|
50
|
+
url: url,
|
|
51
|
+
headers: {
|
|
52
|
+
accept: 'application/json;odata.metadata=none'
|
|
53
|
+
},
|
|
54
|
+
responseType: 'json'
|
|
55
|
+
};
|
|
56
|
+
const response = yield request_1.default.get(requestOptions);
|
|
57
|
+
logger.log(response);
|
|
49
58
|
});
|
|
50
59
|
}
|
|
51
60
|
}
|
|
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _PpSolutionGetCommand_instances, _PpSolutionGetCommand_initTelemetry, _PpSolutionGetCommand_initOptions, _PpSolutionGetCommand_initOptionSets, _PpSolutionGetCommand_initValidators;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
18
19
|
const request_1 = require("../../../../request");
|
|
19
20
|
const powerPlatform_1 = require("../../../../utils/powerPlatform");
|
|
20
21
|
const validation_1 = require("../../../../utils/validation");
|
|
@@ -46,7 +47,7 @@ class PpSolutionGetCommand extends PowerPlatformCommand_1.default {
|
|
|
46
47
|
try {
|
|
47
48
|
const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
48
49
|
const res = yield this.getSolution(dynamicsApiUrl, args.options);
|
|
49
|
-
if (!args.options.output || args.options.output
|
|
50
|
+
if (!args.options.output || !Cli_1.Cli.shouldTrimOutput(args.options.output)) {
|
|
50
51
|
logger.log(res);
|
|
51
52
|
}
|
|
52
53
|
else {
|
|
@@ -15,6 +15,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
15
15
|
};
|
|
16
16
|
var _PpSolutionListCommand_instances, _PpSolutionListCommand_initTelemetry, _PpSolutionListCommand_initOptions;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
18
19
|
const odata_1 = require("../../../../utils/odata");
|
|
19
20
|
const powerPlatform_1 = require("../../../../utils/powerPlatform");
|
|
20
21
|
const PowerPlatformCommand_1 = require("../../../base/PowerPlatformCommand");
|
|
@@ -44,7 +45,7 @@ class PpSolutionListCommand extends PowerPlatformCommand_1.default {
|
|
|
44
45
|
const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
|
|
45
46
|
const requestUrl = `${dynamicsApiUrl}/api/data/v9.0/solutions?$filter=isvisible eq true&$expand=publisherid($select=friendlyname)&$select=solutionid,uniquename,version,publisherid,installedon,solutionpackageversion,friendlyname,versionnumber&api-version=9.1`;
|
|
46
47
|
const res = yield odata_1.odata.getAllItems(requestUrl);
|
|
47
|
-
if (!args.options.output || args.options.output
|
|
48
|
+
if (!args.options.output || !Cli_1.Cli.shouldTrimOutput(args.options.output)) {
|
|
48
49
|
logger.log(res);
|
|
49
50
|
}
|
|
50
51
|
else {
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
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");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _PurviewAuditLogListCommand_instances, _PurviewAuditLogListCommand_initTelemetry, _PurviewAuditLogListCommand_initOptions, _PurviewAuditLogListCommand_initValidators;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Auth_1 = require("../../../../Auth");
|
|
19
|
+
const request_1 = require("../../../../request");
|
|
20
|
+
const accessToken_1 = require("../../../../utils/accessToken");
|
|
21
|
+
const validation_1 = require("../../../../utils/validation");
|
|
22
|
+
const O365MgmtCommand_1 = require("../../../base/O365MgmtCommand");
|
|
23
|
+
const commands_1 = require("../../commands");
|
|
24
|
+
class PurviewAuditLogListCommand extends O365MgmtCommand_1.default {
|
|
25
|
+
get name() {
|
|
26
|
+
return commands_1.default.AUDITLOG_LIST;
|
|
27
|
+
}
|
|
28
|
+
get description() {
|
|
29
|
+
return 'List audit logs within your tenant';
|
|
30
|
+
}
|
|
31
|
+
defaultProperties() {
|
|
32
|
+
return ['CreationTime', 'UserId', 'Operation', 'ObjectId'];
|
|
33
|
+
}
|
|
34
|
+
constructor() {
|
|
35
|
+
super();
|
|
36
|
+
_PurviewAuditLogListCommand_instances.add(this);
|
|
37
|
+
this.contentTypeOptions = ['AzureActiveDirectory', 'Exchange', 'SharePoint', 'General', 'DLP'];
|
|
38
|
+
__classPrivateFieldGet(this, _PurviewAuditLogListCommand_instances, "m", _PurviewAuditLogListCommand_initTelemetry).call(this);
|
|
39
|
+
__classPrivateFieldGet(this, _PurviewAuditLogListCommand_instances, "m", _PurviewAuditLogListCommand_initOptions).call(this);
|
|
40
|
+
__classPrivateFieldGet(this, _PurviewAuditLogListCommand_instances, "m", _PurviewAuditLogListCommand_initValidators).call(this);
|
|
41
|
+
}
|
|
42
|
+
commandAction(logger, args) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
// If we don't create a now object, start and end date can be an few extra ms apart due to execution time between code lines
|
|
45
|
+
const now = new Date();
|
|
46
|
+
try {
|
|
47
|
+
let startTime;
|
|
48
|
+
if (args.options.startTime) {
|
|
49
|
+
startTime = new Date(args.options.startTime);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
startTime = new Date(now);
|
|
53
|
+
startTime.setDate(startTime.getDate() - 1);
|
|
54
|
+
}
|
|
55
|
+
const endTime = args.options.endTime ? new Date(args.options.endTime) : new Date(now);
|
|
56
|
+
if (this.verbose) {
|
|
57
|
+
logger.logToStderr(`Getting audit logs for content type '${args.options.contentType}' within a time frame from '${startTime.toISOString()}' to '${endTime.toISOString()}'.`);
|
|
58
|
+
}
|
|
59
|
+
const tenantId = accessToken_1.accessToken.getTenantIdFromAccessToken(Auth_1.default.service.accessTokens[Auth_1.default.defaultResource].accessToken);
|
|
60
|
+
const contentTypeValue = args.options.contentType === 'DLP' ? 'DLP.All' : 'Audit.' + args.options.contentType;
|
|
61
|
+
yield this.ensureSubscription(tenantId, contentTypeValue);
|
|
62
|
+
if (this.verbose) {
|
|
63
|
+
logger.logToStderr(`'${args.options.contentType}' subscription is active.`);
|
|
64
|
+
}
|
|
65
|
+
const contentUris = [];
|
|
66
|
+
for (const time = startTime; time < endTime; time.setDate(time.getDate() + 1)) {
|
|
67
|
+
const differenceInMs = endTime.getTime() - time.getTime();
|
|
68
|
+
const endTimeBatch = new Date(time.getTime() + Math.min(differenceInMs, 1000 * 60 * 60 * 24)); // ms difference cannot be greater than 1 day
|
|
69
|
+
if (this.verbose) {
|
|
70
|
+
logger.logToStderr(`Get content URIs for date range from '${time.toISOString()}' to '${endTimeBatch.toISOString()}'.`);
|
|
71
|
+
}
|
|
72
|
+
const contentUrisBatch = yield this.getContentUris(tenantId, contentTypeValue, time, endTimeBatch);
|
|
73
|
+
contentUris.push(...contentUrisBatch);
|
|
74
|
+
}
|
|
75
|
+
if (this.verbose) {
|
|
76
|
+
logger.logToStderr(`Get content from ${contentUris.length} content URIs.`);
|
|
77
|
+
}
|
|
78
|
+
const logs = yield this.getContent(logger, contentUris);
|
|
79
|
+
const sortedLogs = logs.sort(this.auditLogsCompare);
|
|
80
|
+
logger.log(sortedLogs);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
this.handleRejectedODataJsonPromise(err);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
ensureSubscription(tenantId, contentType) {
|
|
88
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
const requestOptions = {
|
|
90
|
+
url: `${this.resource}/api/v1.0/${tenantId}/activity/feed/subscriptions/list`,
|
|
91
|
+
headers: {
|
|
92
|
+
accept: 'application/json'
|
|
93
|
+
},
|
|
94
|
+
responseType: 'json'
|
|
95
|
+
};
|
|
96
|
+
const subscriptions = yield request_1.default.get(requestOptions);
|
|
97
|
+
if (subscriptions.some(s => s.contentType === contentType && s.status === 'enabled')) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
requestOptions.url = `${this.resource}/api/v1.0/${tenantId}/activity/feed/subscriptions/start?contentType=${contentType}`;
|
|
101
|
+
const subscription = yield request_1.default.post(requestOptions);
|
|
102
|
+
if (subscription.status !== 'enabled') {
|
|
103
|
+
throw `Unable to start subscription '${contentType}'`;
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
getContentUris(tenantId, contentType, startTime, endTime) {
|
|
108
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
109
|
+
const contentUris = [];
|
|
110
|
+
const requestOptions = {
|
|
111
|
+
url: `${this.resource}/api/v1.0/${tenantId}/activity/feed/subscriptions/content?contentType=${contentType}&startTime=${startTime.toISOString()}&endTime=${endTime.toISOString()}`,
|
|
112
|
+
headers: {
|
|
113
|
+
accept: 'application/json'
|
|
114
|
+
},
|
|
115
|
+
responseType: 'json',
|
|
116
|
+
fullResponse: true
|
|
117
|
+
};
|
|
118
|
+
do {
|
|
119
|
+
const response = yield request_1.default.get(requestOptions);
|
|
120
|
+
const uris = response.data.map(d => d.contentUri);
|
|
121
|
+
contentUris.push(...uris);
|
|
122
|
+
requestOptions.url = response.headers.nextpageuri;
|
|
123
|
+
} while (requestOptions.url);
|
|
124
|
+
return contentUris;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
getContent(logger, contentUris) {
|
|
128
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const logs = [];
|
|
130
|
+
const batchSize = 30;
|
|
131
|
+
for (let i = 0; i < contentUris.length; i += batchSize) {
|
|
132
|
+
const contentUrisBatch = contentUris.slice(i, i + batchSize);
|
|
133
|
+
if (this.verbose) {
|
|
134
|
+
logger.logToStderr(`Retrieving content from next ${contentUrisBatch.length} content URIs. Progress: ${Math.round(i / contentUris.length * 100)}%`);
|
|
135
|
+
}
|
|
136
|
+
const batchResult = yield Promise.all(contentUrisBatch.map(uri => request_1.default.get({
|
|
137
|
+
url: uri,
|
|
138
|
+
headers: {
|
|
139
|
+
accept: 'application/json'
|
|
140
|
+
},
|
|
141
|
+
responseType: 'json'
|
|
142
|
+
})));
|
|
143
|
+
batchResult.forEach(res => logs.push(...res));
|
|
144
|
+
}
|
|
145
|
+
return logs;
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
auditLogsCompare(a, b) {
|
|
149
|
+
if (a.CreationTime < b.CreationTime) {
|
|
150
|
+
return -1;
|
|
151
|
+
}
|
|
152
|
+
if (a.CreationTime > b.CreationTime) {
|
|
153
|
+
return 1;
|
|
154
|
+
}
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
_PurviewAuditLogListCommand_instances = new WeakSet(), _PurviewAuditLogListCommand_initTelemetry = function _PurviewAuditLogListCommand_initTelemetry() {
|
|
159
|
+
this.telemetry.push((args) => {
|
|
160
|
+
Object.assign(this.telemetryProperties, {
|
|
161
|
+
startTime: typeof args.options.startTime !== 'undefined',
|
|
162
|
+
endTime: typeof args.options.endTime !== 'undefined'
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
}, _PurviewAuditLogListCommand_initOptions = function _PurviewAuditLogListCommand_initOptions() {
|
|
166
|
+
this.options.unshift({
|
|
167
|
+
option: '--contentType <contentType>',
|
|
168
|
+
autocomplete: this.contentTypeOptions
|
|
169
|
+
}, {
|
|
170
|
+
option: '--startTime [startTime]'
|
|
171
|
+
}, {
|
|
172
|
+
option: '--endTime [endTime]'
|
|
173
|
+
});
|
|
174
|
+
}, _PurviewAuditLogListCommand_initValidators = function _PurviewAuditLogListCommand_initValidators() {
|
|
175
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
176
|
+
if (this.contentTypeOptions.indexOf(args.options.contentType) === -1) {
|
|
177
|
+
return `'${args.options.contentType}' is not a valid contentType value. Allowed values: ${this.contentTypeOptions}.`;
|
|
178
|
+
}
|
|
179
|
+
if (args.options.startTime) {
|
|
180
|
+
if (!validation_1.validation.isValidISODateTime(args.options.startTime)) {
|
|
181
|
+
return `'${args.options.startTime}' is not a valid ISO date time string.`;
|
|
182
|
+
}
|
|
183
|
+
const lowerDateLimit = new Date();
|
|
184
|
+
lowerDateLimit.setDate(lowerDateLimit.getDate() - 7);
|
|
185
|
+
lowerDateLimit.setHours(lowerDateLimit.getHours() - 1); // Min date is 7 days ago, however there seems to be an 1h margin
|
|
186
|
+
if (new Date(args.options.startTime) < lowerDateLimit) {
|
|
187
|
+
return 'startTime value cannot be more than 7 days in the past.';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
if (args.options.endTime) {
|
|
191
|
+
if (!validation_1.validation.isValidISODateTime(args.options.endTime)) {
|
|
192
|
+
return `'${args.options.endTime}' is not a valid ISO date time string.`;
|
|
193
|
+
}
|
|
194
|
+
if (new Date(args.options.endTime) > new Date()) {
|
|
195
|
+
return 'endTime value cannot be in the future.';
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (args.options.startTime && args.options.endTime && new Date(args.options.startTime) >= new Date(args.options.endTime)) {
|
|
199
|
+
return 'startTime value must be before endTime.';
|
|
200
|
+
}
|
|
201
|
+
return true;
|
|
202
|
+
}));
|
|
203
|
+
};
|
|
204
|
+
module.exports = new PurviewAuditLogListCommand();
|
|
205
|
+
//# sourceMappingURL=auditlog-list.js.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
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");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _PurviewRetentionEventGetCommand_instances, _PurviewRetentionEventGetCommand_initOptions, _PurviewRetentionEventGetCommand_initValidators;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
19
|
+
const commands_1 = require("../../commands");
|
|
20
|
+
const accessToken_1 = require("../../../../utils/accessToken");
|
|
21
|
+
const Auth_1 = require("../../../../Auth");
|
|
22
|
+
const request_1 = require("../../../../request");
|
|
23
|
+
const validation_1 = require("../../../../utils/validation");
|
|
24
|
+
class PurviewRetentionEventGetCommand extends GraphCommand_1.default {
|
|
25
|
+
get name() {
|
|
26
|
+
return commands_1.default.RETENTIONEVENT_GET;
|
|
27
|
+
}
|
|
28
|
+
get description() {
|
|
29
|
+
return 'Retrieve the specified retention event';
|
|
30
|
+
}
|
|
31
|
+
constructor() {
|
|
32
|
+
super();
|
|
33
|
+
_PurviewRetentionEventGetCommand_instances.add(this);
|
|
34
|
+
__classPrivateFieldGet(this, _PurviewRetentionEventGetCommand_instances, "m", _PurviewRetentionEventGetCommand_initOptions).call(this);
|
|
35
|
+
__classPrivateFieldGet(this, _PurviewRetentionEventGetCommand_instances, "m", _PurviewRetentionEventGetCommand_initValidators).call(this);
|
|
36
|
+
}
|
|
37
|
+
commandAction(logger, args) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
if (accessToken_1.accessToken.isAppOnlyAccessToken(Auth_1.default.service.accessTokens[this.resource].accessToken)) {
|
|
40
|
+
this.handleError('This command does not support application permissions.');
|
|
41
|
+
}
|
|
42
|
+
if (this.verbose) {
|
|
43
|
+
logger.logToStderr(`Retrieving retention event with id ${args.options.id}`);
|
|
44
|
+
}
|
|
45
|
+
try {
|
|
46
|
+
const requestOptions = {
|
|
47
|
+
url: `${this.resource}/beta/security/triggers/retentionEvents/${args.options.id}`,
|
|
48
|
+
headers: {
|
|
49
|
+
accept: 'application/json;odata.metadata=none'
|
|
50
|
+
},
|
|
51
|
+
responseType: 'json'
|
|
52
|
+
};
|
|
53
|
+
const res = yield request_1.default.get(requestOptions);
|
|
54
|
+
logger.log(res);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
this.handleRejectedODataJsonPromise(err);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
_PurviewRetentionEventGetCommand_instances = new WeakSet(), _PurviewRetentionEventGetCommand_initOptions = function _PurviewRetentionEventGetCommand_initOptions() {
|
|
63
|
+
this.options.unshift({
|
|
64
|
+
option: '-i, --id <id>'
|
|
65
|
+
});
|
|
66
|
+
}, _PurviewRetentionEventGetCommand_initValidators = function _PurviewRetentionEventGetCommand_initValidators() {
|
|
67
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
68
|
+
if (!validation_1.validation.isValidGuid(args.options.id)) {
|
|
69
|
+
return `'${args.options.id}' is not a valid GUID.`;
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}));
|
|
73
|
+
};
|
|
74
|
+
module.exports = new PurviewRetentionEventGetCommand();
|
|
75
|
+
//# sourceMappingURL=retentionevent-get.js.map
|