@pnp/cli-microsoft365 9.0.0-beta.2f8dd1e → 9.0.0-beta.39e78b2
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 +1 -0
- package/allCommands.json +1 -1
- package/allCommandsFull.json +1 -1
- package/dist/Auth.js +10 -18
- package/dist/Command.js +50 -5
- package/dist/chili/chili.js +0 -23
- package/dist/cli/cli.js +100 -100
- package/dist/config.js +1 -1
- package/dist/m365/app/commands/permission/permission-add.js +9 -9
- package/dist/m365/cli/commands/cli-consent.js +3 -7
- package/dist/m365/commands/login.js +49 -96
- package/dist/m365/commands/setup.js +0 -4
- package/dist/m365/commands/status.js +2 -2
- package/dist/m365/connection/commands/connection-remove.js +6 -2
- package/dist/m365/connection/commands/connection-set.js +4 -1
- package/dist/m365/connection/commands/connection-use.js +25 -4
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-add.js +13 -13
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-get.js +18 -18
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-list.js +1 -1
- package/dist/m365/entra/commands/enterpriseapp/enterpriseapp-remove.js +123 -0
- package/dist/m365/entra/commands/group/group-set.js +256 -0
- package/dist/m365/entra/commands/group/group-user-list.js +4 -4
- package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +4 -4
- package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +3 -3
- package/dist/m365/entra/commands/m365group/m365group-set.js +66 -29
- package/dist/m365/entra/commands/m365group/m365group-user-add.js +109 -32
- package/dist/m365/entra/commands/m365group/m365group-user-list.js +6 -9
- package/dist/m365/entra/commands/m365group/m365group-user-set.js +159 -84
- package/dist/m365/entra/commands/multitenant/MultitenantOrganization.js +2 -0
- package/dist/m365/entra/commands/multitenant/multitenant-add.js +65 -0
- package/dist/m365/entra/commands/multitenant/multitenant-get.js +32 -0
- package/dist/m365/entra/commands/multitenant/multitenant-remove.js +118 -0
- package/dist/m365/entra/commands/multitenant/multitenant-set.js +72 -0
- package/dist/m365/entra/commands.js +7 -0
- package/dist/m365/external/commands/connection/connection-doctor.js +10 -24
- package/dist/m365/flow/commands/flow-get.js +1 -1
- package/dist/m365/flow/commands/flow-list.js +23 -24
- package/dist/m365/graph/commands/subscription/subscription-add.js +4 -2
- package/dist/m365/onenote/commands/notebook/notebook-add.js +132 -0
- package/dist/m365/onenote/commands.js +1 -0
- package/dist/m365/outlook/commands/message/message-get.js +11 -11
- package/dist/m365/pa/commands/app/app-export.js +13 -7
- package/dist/m365/spe/ContainerTypeProperties.js +2 -0
- package/dist/m365/spe/commands/containertype/containertype-list.js +49 -0
- package/dist/m365/spe/commands.js +2 -1
- package/dist/m365/spfx/commands/project/DeployWorkflow.js +1 -1
- package/dist/m365/spfx/commands/project/base-project-command.js +36 -126
- package/dist/m365/spfx/commands/project/project-github-workflow-add.js +1 -10
- package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-get.js +16 -22
- package/dist/m365/spo/commands/cdn/cdn-get.js +12 -15
- package/dist/m365/spo/commands/cdn/cdn-set.js +6 -4
- package/dist/m365/spo/commands/commandset/commandset-get.js +31 -17
- package/dist/m365/spo/commands/contenttype/contenttype-field-list.js +124 -0
- package/dist/m365/spo/commands/field/field-list.js +1 -1
- package/dist/m365/spo/commands/file/file-copy.js +55 -34
- package/dist/m365/spo/commands/file/file-roleassignment-add.js +1 -1
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +1 -1
- package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
- package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +1 -1
- package/dist/m365/spo/commands/folder/folder-set.js +0 -4
- package/dist/m365/spo/commands/folder/folder-sharinglink-get.js +86 -0
- package/dist/m365/spo/commands/folder/folder-sharinglink-list.js +110 -0
- package/dist/m365/spo/commands/group/group-member-add.js +103 -99
- package/dist/m365/spo/commands/list/ListInstance.js +6 -1
- package/dist/m365/spo/commands/list/list-get.js +9 -3
- package/dist/m365/spo/commands/list/list-list.js +1 -4
- package/dist/m365/spo/commands/list/list-roleassignment-add.js +46 -21
- package/dist/m365/spo/commands/list/list-roleassignment-remove.js +48 -46
- package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +2 -3
- package/dist/m365/spo/commands/page/page-text-add.js +2 -3
- package/dist/m365/spo/commands/site/site-appcatalog-remove.js +48 -24
- package/dist/m365/spo/commands/site/site-get.js +12 -16
- package/dist/m365/spo/commands/site/site-remove.js +1 -7
- package/dist/m365/spo/commands/spo-search.js +3 -4
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-get.js +19 -5
- package/dist/m365/spo/commands/tenant/tenant-commandset-get.js +20 -6
- package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +2 -22
- package/dist/m365/spo/commands.js +3 -1
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-get.js +119 -0
- package/dist/m365/teams/commands/message/message-remove.js +112 -0
- package/dist/m365/teams/commands/message/message-restore.js +106 -0
- package/dist/m365/teams/commands.js +3 -0
- package/dist/m365/viva/commands/engage/engage-community-add.js +166 -0
- package/dist/m365/viva/commands/engage/engage-group-list.js +0 -5
- package/dist/m365/viva/commands/engage/engage-group-user-add.js +0 -5
- package/dist/m365/viva/commands/engage/engage-group-user-remove.js +0 -5
- package/dist/m365/viva/commands/engage/engage-message-add.js +0 -5
- package/dist/m365/viva/commands/engage/engage-message-get.js +0 -5
- package/dist/m365/viva/commands/engage/engage-message-like-set.js +0 -5
- package/dist/m365/viva/commands/engage/engage-message-list.js +0 -5
- package/dist/m365/viva/commands/engage/engage-message-remove.js +0 -5
- package/dist/m365/viva/commands/engage/engage-network-list.js +0 -5
- package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +0 -8
- package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +0 -8
- package/dist/m365/viva/commands/engage/engage-search.js +0 -5
- package/dist/m365/viva/commands/engage/engage-user-get.js +0 -5
- package/dist/m365/viva/commands/engage/engage-user-list.js +0 -5
- package/dist/m365/viva/commands.js +1 -0
- package/dist/utils/drive.js +61 -0
- package/dist/utils/formatting.js +30 -1
- package/dist/utils/spo.js +143 -6
- package/dist/utils/teams.js +49 -0
- package/dist/utils/validation.js +19 -0
- package/dist/utils/zod.js +124 -0
- package/docs/docs/cmd/app/permission/permission-add.mdx +5 -5
- package/docs/docs/cmd/cli/cli-consent.mdx +1 -1
- package/docs/docs/cmd/connection/connection-use.mdx +8 -2
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +12 -12
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +14 -14
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +5 -5
- package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-remove.mdx +65 -0
- package/docs/docs/cmd/entra/group/group-add.mdx +0 -4
- package/docs/docs/cmd/entra/group/group-set.mdx +89 -0
- package/docs/docs/cmd/entra/group/group-user-list.mdx +7 -7
- package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +5 -5
- package/docs/docs/cmd/entra/m365group/m365group-recyclebinitem-list.mdx +3 -3
- package/docs/docs/cmd/entra/m365group/m365group-set.mdx +37 -7
- package/docs/docs/cmd/entra/m365group/m365group-user-add.mdx +28 -10
- package/docs/docs/cmd/entra/m365group/m365group-user-list.mdx +1 -1
- package/docs/docs/cmd/entra/m365group/m365group-user-set.mdx +35 -11
- package/docs/docs/cmd/entra/multitenant/multitenant-add.mdx +107 -0
- package/docs/docs/cmd/entra/multitenant/multitenant-get.mdx +94 -0
- package/docs/docs/cmd/entra/multitenant/multitenant-remove.mdx +58 -0
- package/docs/docs/cmd/entra/multitenant/multitenant-set.mdx +53 -0
- package/docs/docs/cmd/external/connection/connection-doctor.mdx +9 -9
- package/docs/docs/cmd/flow/flow-get.mdx +149 -283
- package/docs/docs/cmd/flow/flow-list.mdx +114 -56
- package/docs/docs/cmd/graph/subscription/subscription-add.mdx +18 -0
- package/docs/docs/cmd/onenote/notebook/notebook-add.mdx +169 -0
- package/docs/docs/cmd/outlook/message/message-get.mdx +5 -5
- package/docs/docs/cmd/pa/app/app-export.mdx +15 -9
- package/docs/docs/cmd/planner/plan/plan-remove.mdx +1 -1
- package/docs/docs/cmd/spe/containertype/containertype-list.mdx +102 -0
- package/docs/docs/cmd/spfx/project/project-github-workflow-add.mdx +11 -12
- package/docs/docs/cmd/spo/app/app-uninstall.mdx +1 -1
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-get.mdx +88 -38
- package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-list.mdx +22 -28
- package/docs/docs/cmd/spo/cdn/cdn-set.mdx +3 -3
- package/docs/docs/cmd/spo/commandset/commandset-get.mdx +75 -24
- package/docs/docs/cmd/spo/commandset/commandset-list.mdx +26 -32
- package/docs/docs/cmd/spo/contenttype/contenttype-field-list.mdx +172 -0
- package/docs/docs/cmd/spo/contenttype/contenttype-list.mdx +3 -3
- package/docs/docs/cmd/spo/field/field-list.mdx +3 -3
- package/docs/docs/cmd/spo/file/file-copy.mdx +119 -12
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +2 -2
- package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +2 -2
- package/docs/docs/cmd/spo/folder/folder-set.mdx +0 -6
- package/docs/docs/cmd/spo/folder/folder-sharinglink-get.mdx +110 -0
- package/docs/docs/cmd/spo/folder/folder-sharinglink-list.mdx +114 -0
- package/docs/docs/cmd/spo/group/group-member-add.mdx +34 -27
- package/docs/docs/cmd/spo/list/list-get.mdx +6 -0
- package/docs/docs/cmd/spo/list/list-list.mdx +5 -7
- package/docs/docs/cmd/spo/list/list-roleassignment-add.mdx +15 -3
- package/docs/docs/cmd/spo/list/list-roleassignment-remove.mdx +15 -3
- package/docs/docs/cmd/spo/listitem/listitem-retentionlabel-ensure.mdx +4 -4
- package/docs/docs/cmd/spo/listitem/listitem-retentionlabel-remove.mdx +1 -1
- package/docs/docs/cmd/spo/listitem/listitem-roleassignment-add.mdx +9 -9
- package/docs/docs/cmd/spo/listitem/listitem-roleassignment-remove.mdx +7 -7
- package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +11 -2
- package/docs/docs/cmd/spo/site/site-recyclebinitem-list.mdx +1 -1
- package/docs/docs/cmd/spo/site/site-remove.mdx +0 -3
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-get.mdx +79 -30
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.mdx +20 -19
- package/docs/docs/cmd/spo/tenant/tenant-commandset-get.mdx +84 -38
- package/docs/docs/cmd/spo/tenant/tenant-commandset-list.mdx +20 -19
- package/docs/docs/cmd/spo/tenant/tenant-recyclebinitem-restore.mdx +2 -49
- package/docs/docs/cmd/spo/web/web-roleassignment-add.mdx +1 -1
- package/docs/docs/cmd/spo/web/web-roleassignment-remove.mdx +1 -1
- package/docs/docs/cmd/teams/meeting/meeting-attendancereport-get.mdx +138 -0
- package/docs/docs/cmd/teams/meeting/meeting-list.mdx +7 -3
- package/docs/docs/cmd/teams/message/message-remove.mdx +64 -0
- package/docs/docs/cmd/teams/message/message-restore.mdx +62 -0
- package/docs/docs/cmd/viva/engage/engage-community-add.mdx +168 -0
- package/npm-shrinkwrap.json +986 -1326
- package/package.json +27 -24
- package/dist/m365/viva/commands/engage/yammerCommands.js +0 -25
|
@@ -3,7 +3,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
3
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
4
4
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
5
5
|
};
|
|
6
|
-
var _SpoTenantRecycleBinItemRestoreCommand_instances,
|
|
6
|
+
var _SpoTenantRecycleBinItemRestoreCommand_instances, _SpoTenantRecycleBinItemRestoreCommand_initOptions, _SpoTenantRecycleBinItemRestoreCommand_initValidators, _SpoTenantRecycleBinItemRestoreCommand_initTypes;
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
8
|
import { formatting } from '../../../../utils/formatting.js';
|
|
9
9
|
import { odata } from '../../../../utils/odata.js';
|
|
@@ -22,15 +22,11 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
|
|
|
22
22
|
constructor() {
|
|
23
23
|
super();
|
|
24
24
|
_SpoTenantRecycleBinItemRestoreCommand_instances.add(this);
|
|
25
|
-
__classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initTelemetry).call(this);
|
|
26
25
|
__classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initOptions).call(this);
|
|
27
26
|
__classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initValidators).call(this);
|
|
28
27
|
__classPrivateFieldGet(this, _SpoTenantRecycleBinItemRestoreCommand_instances, "m", _SpoTenantRecycleBinItemRestoreCommand_initTypes).call(this);
|
|
29
28
|
}
|
|
30
29
|
async commandAction(logger, args) {
|
|
31
|
-
if (args.options.wait) {
|
|
32
|
-
await this.warn(logger, `Option 'wait' is deprecated and will be removed in the next major release.`);
|
|
33
|
-
}
|
|
34
30
|
try {
|
|
35
31
|
if (this.verbose) {
|
|
36
32
|
await logger.logToStderr(`Restoring site collection '${args.options.siteUrl}' from recycle bin.`);
|
|
@@ -62,13 +58,6 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
|
|
|
62
58
|
};
|
|
63
59
|
await request.post(restoreOptions);
|
|
64
60
|
}
|
|
65
|
-
// Here, we return a fixed response because this new API endpoint doesn't return a response while the previous API did.
|
|
66
|
-
// This has to be removed in the next major release.
|
|
67
|
-
await logger.log({
|
|
68
|
-
HasTimedout: false,
|
|
69
|
-
IsComplete: !!args.options.wait,
|
|
70
|
-
PollingInterval: 15000
|
|
71
|
-
});
|
|
72
61
|
}
|
|
73
62
|
catch (err) {
|
|
74
63
|
this.handleRejectedODataJsonPromise(err);
|
|
@@ -79,23 +68,14 @@ class SpoTenantRecycleBinItemRestoreCommand extends SpoCommand {
|
|
|
79
68
|
return sites[0].GroupId;
|
|
80
69
|
}
|
|
81
70
|
}
|
|
82
|
-
_SpoTenantRecycleBinItemRestoreCommand_instances = new WeakSet(),
|
|
83
|
-
this.telemetry.push((args) => {
|
|
84
|
-
Object.assign(this.telemetryProperties, {
|
|
85
|
-
wait: !!args.options.wait
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}, _SpoTenantRecycleBinItemRestoreCommand_initOptions = function _SpoTenantRecycleBinItemRestoreCommand_initOptions() {
|
|
71
|
+
_SpoTenantRecycleBinItemRestoreCommand_instances = new WeakSet(), _SpoTenantRecycleBinItemRestoreCommand_initOptions = function _SpoTenantRecycleBinItemRestoreCommand_initOptions() {
|
|
89
72
|
this.options.unshift({
|
|
90
73
|
option: '-u, --siteUrl <siteUrl>'
|
|
91
|
-
}, {
|
|
92
|
-
option: '--wait'
|
|
93
74
|
});
|
|
94
75
|
}, _SpoTenantRecycleBinItemRestoreCommand_initValidators = function _SpoTenantRecycleBinItemRestoreCommand_initValidators() {
|
|
95
76
|
this.validators.push(async (args) => validation.isValidSharePointUrl(args.options.siteUrl));
|
|
96
77
|
}, _SpoTenantRecycleBinItemRestoreCommand_initTypes = function _SpoTenantRecycleBinItemRestoreCommand_initTypes() {
|
|
97
78
|
this.types.string.push('siteUrl');
|
|
98
|
-
this.types.boolean.push('wait');
|
|
99
79
|
};
|
|
100
80
|
export default new SpoTenantRecycleBinItemRestoreCommand();
|
|
101
81
|
//# sourceMappingURL=tenant-recyclebinitem-restore.js.map
|
|
@@ -31,6 +31,7 @@ export default {
|
|
|
31
31
|
COMMANDSET_REMOVE: `${prefix} commandset remove`,
|
|
32
32
|
COMMANDSET_SET: `${prefix} commandset set`,
|
|
33
33
|
CONTENTTYPE_ADD: `${prefix} contenttype add`,
|
|
34
|
+
CONTENTTYPE_FIELD_LIST: `${prefix} contenttype field list`,
|
|
34
35
|
CONTENTTYPE_FIELD_REMOVE: `${prefix} contenttype field remove`,
|
|
35
36
|
CONTENTTYPE_FIELD_SET: `${prefix} contenttype field set`,
|
|
36
37
|
CONTENTTYPE_GET: `${prefix} contenttype get`,
|
|
@@ -91,7 +92,6 @@ export default {
|
|
|
91
92
|
FOLDER_LIST: `${prefix} folder list`,
|
|
92
93
|
FOLDER_MOVE: `${prefix} folder move`,
|
|
93
94
|
FOLDER_REMOVE: `${prefix} folder remove`,
|
|
94
|
-
FOLDER_RENAME: `${prefix} folder rename`,
|
|
95
95
|
FOLDER_SET: `${prefix} folder set`,
|
|
96
96
|
FOLDER_RETENTIONLABEL_ENSURE: `${prefix} folder retentionlabel ensure`,
|
|
97
97
|
FOLDER_RETENTIONLABEL_REMOVE: `${prefix} folder retentionlabel remove`,
|
|
@@ -99,6 +99,8 @@ export default {
|
|
|
99
99
|
FOLDER_ROLEASSIGNMENT_ADD: `${prefix} folder roleassignment add`,
|
|
100
100
|
FOLDER_ROLEINHERITANCE_BREAK: `${prefix} folder roleinheritance break`,
|
|
101
101
|
FOLDER_ROLEINHERITANCE_RESET: `${prefix} folder roleinheritance reset`,
|
|
102
|
+
FOLDER_SHARINGLINK_GET: `${prefix} folder sharinglink get`,
|
|
103
|
+
FOLDER_SHARINGLINK_LIST: `${prefix} folder sharinglink list`,
|
|
102
104
|
GET: `${prefix} get`,
|
|
103
105
|
GROUP_ADD: `${prefix} group add`,
|
|
104
106
|
GROUP_GET: `${prefix} group get`,
|
|
@@ -0,0 +1,119 @@
|
|
|
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 _TeamsMeetingAttendancereportGetCommand_instances, _TeamsMeetingAttendancereportGetCommand_initTelemetry, _TeamsMeetingAttendancereportGetCommand_initOptions, _TeamsMeetingAttendancereportGetCommand_initTypes, _TeamsMeetingAttendancereportGetCommand_initValidators, _TeamsMeetingAttendancereportGetCommand_initOptionSets;
|
|
7
|
+
import auth from '../../../../Auth.js';
|
|
8
|
+
import { accessToken } from '../../../../utils/accessToken.js';
|
|
9
|
+
import { validation } from '../../../../utils/validation.js';
|
|
10
|
+
import GraphCommand from "../../../base/GraphCommand.js";
|
|
11
|
+
import commands from '../../commands.js';
|
|
12
|
+
import { entraUser } from '../../../../utils/entraUser.js';
|
|
13
|
+
import request from '../../../../request.js';
|
|
14
|
+
class TeamsMeetingAttendancereportGetCommand extends GraphCommand {
|
|
15
|
+
get name() {
|
|
16
|
+
return commands.MEETING_ATTENDANCEREPORT_GET;
|
|
17
|
+
}
|
|
18
|
+
get description() {
|
|
19
|
+
return 'Gets attendance report for a given meeting';
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
_TeamsMeetingAttendancereportGetCommand_instances.add(this);
|
|
24
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportGetCommand_instances, "m", _TeamsMeetingAttendancereportGetCommand_initTelemetry).call(this);
|
|
25
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportGetCommand_instances, "m", _TeamsMeetingAttendancereportGetCommand_initOptions).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportGetCommand_instances, "m", _TeamsMeetingAttendancereportGetCommand_initTypes).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportGetCommand_instances, "m", _TeamsMeetingAttendancereportGetCommand_initValidators).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportGetCommand_instances, "m", _TeamsMeetingAttendancereportGetCommand_initOptionSets).call(this);
|
|
29
|
+
}
|
|
30
|
+
async commandAction(logger, args) {
|
|
31
|
+
try {
|
|
32
|
+
const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
|
|
33
|
+
if (isAppOnlyAccessToken && !args.options.userId && !args.options.userName && !args.options.email) {
|
|
34
|
+
throw `The option 'userId', 'userName' or 'email' is required when retrieving meeting attendance report using app only permissions.`;
|
|
35
|
+
}
|
|
36
|
+
else if (!isAppOnlyAccessToken && (args.options.userId || args.options.userName || args.options.email)) {
|
|
37
|
+
throw `The options 'userId', 'userName' and 'email' cannot be used when retrieving meeting attendance report using delegated permissions.`;
|
|
38
|
+
}
|
|
39
|
+
if (this.verbose) {
|
|
40
|
+
await logger.logToStderr(`Retrieving attendance report for ${isAppOnlyAccessToken ? `specific user ${args.options.userId || args.options.userName || args.options.email}.` : 'currently logged in user'}.`);
|
|
41
|
+
}
|
|
42
|
+
let userUrl = '';
|
|
43
|
+
if (isAppOnlyAccessToken) {
|
|
44
|
+
const userId = await this.getUserId(args.options);
|
|
45
|
+
userUrl += `users/${userId}`;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
userUrl += 'me';
|
|
49
|
+
}
|
|
50
|
+
const requestOptions = {
|
|
51
|
+
url: `${this.resource}/v1.0/${userUrl}/onlineMeetings/${args.options.meetingId}/attendanceReports/${args.options.id}?$expand=attendanceRecords`,
|
|
52
|
+
headers: {
|
|
53
|
+
accept: 'application/json;odata.metadata=none'
|
|
54
|
+
},
|
|
55
|
+
responseType: 'json'
|
|
56
|
+
};
|
|
57
|
+
const attendanceReport = await request.get(requestOptions);
|
|
58
|
+
await logger.log(attendanceReport);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
this.handleRejectedODataJsonPromise(err);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async getUserId(options) {
|
|
65
|
+
if (options.userId) {
|
|
66
|
+
return options.userId;
|
|
67
|
+
}
|
|
68
|
+
if (options.userName) {
|
|
69
|
+
return entraUser.getUserIdByUpn(options.userName);
|
|
70
|
+
}
|
|
71
|
+
return entraUser.getUserIdByEmail(options.email);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
_TeamsMeetingAttendancereportGetCommand_instances = new WeakSet(), _TeamsMeetingAttendancereportGetCommand_initTelemetry = function _TeamsMeetingAttendancereportGetCommand_initTelemetry() {
|
|
75
|
+
this.telemetry.push((args) => {
|
|
76
|
+
Object.assign(this.telemetryProperties, {
|
|
77
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
78
|
+
userName: typeof args.options.userName !== 'undefined',
|
|
79
|
+
email: typeof args.options.email !== 'undefined'
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}, _TeamsMeetingAttendancereportGetCommand_initOptions = function _TeamsMeetingAttendancereportGetCommand_initOptions() {
|
|
83
|
+
this.options.unshift({
|
|
84
|
+
option: '-u, --userId [userId]'
|
|
85
|
+
}, {
|
|
86
|
+
option: '-n, --userName [userName]'
|
|
87
|
+
}, {
|
|
88
|
+
option: '--email [email]'
|
|
89
|
+
}, {
|
|
90
|
+
option: '-m, --meetingId <meetingId>'
|
|
91
|
+
}, {
|
|
92
|
+
option: '-i, --id <id>'
|
|
93
|
+
});
|
|
94
|
+
}, _TeamsMeetingAttendancereportGetCommand_initTypes = function _TeamsMeetingAttendancereportGetCommand_initTypes() {
|
|
95
|
+
this.types.string.push('userId', 'userName', 'email', 'meetingId', 'id');
|
|
96
|
+
}, _TeamsMeetingAttendancereportGetCommand_initValidators = function _TeamsMeetingAttendancereportGetCommand_initValidators() {
|
|
97
|
+
this.validators.push(async (args) => {
|
|
98
|
+
if (!validation.isValidGuid(args.options.id)) {
|
|
99
|
+
return `${args.options.id} is not a valid GUID for option 'id'.`;
|
|
100
|
+
}
|
|
101
|
+
if (args.options.userId && !validation.isValidGuid(args.options.userId)) {
|
|
102
|
+
return `${args.options.userId} is not a valid GUID for option 'userId'.`;
|
|
103
|
+
}
|
|
104
|
+
if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
|
|
105
|
+
return `${args.options.userName} is not a valid UPN.`;
|
|
106
|
+
}
|
|
107
|
+
if (args.options.email && !validation.isValidUserPrincipalName(args.options.email)) {
|
|
108
|
+
return `${args.options.email} is not a valid email.`;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
});
|
|
112
|
+
}, _TeamsMeetingAttendancereportGetCommand_initOptionSets = function _TeamsMeetingAttendancereportGetCommand_initOptionSets() {
|
|
113
|
+
this.optionSets.push({
|
|
114
|
+
options: ['userId', 'userName', 'email'],
|
|
115
|
+
runsWhen: (args) => args.options.userId || args.options.userName || args.options.email
|
|
116
|
+
});
|
|
117
|
+
};
|
|
118
|
+
export default new TeamsMeetingAttendancereportGetCommand();
|
|
119
|
+
//# sourceMappingURL=meeting-attendancereport-get.js.map
|
|
@@ -0,0 +1,112 @@
|
|
|
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 _TeamsMessageRemoveCommand_instances, _TeamsMessageRemoveCommand_initTelemetry, _TeamsMessageRemoveCommand_initOptions, _TeamsMessageRemoveCommand_initValidators, _TeamsMessageRemoveCommand_initOptionSets, _TeamsMessageRemoveCommand_initTypes;
|
|
7
|
+
import { cli } from '../../../../cli/cli.js';
|
|
8
|
+
import request from '../../../../request.js';
|
|
9
|
+
import { formatting } from '../../../../utils/formatting.js';
|
|
10
|
+
import { teams } from '../../../../utils/teams.js';
|
|
11
|
+
import { validation } from '../../../../utils/validation.js';
|
|
12
|
+
import DelegatedGraphCommand from '../../../base/DelegatedGraphCommand.js';
|
|
13
|
+
import commands from '../../commands.js';
|
|
14
|
+
class TeamsMessageRemoveCommand extends DelegatedGraphCommand {
|
|
15
|
+
get name() {
|
|
16
|
+
return commands.MESSAGE_REMOVE;
|
|
17
|
+
}
|
|
18
|
+
get description() {
|
|
19
|
+
return 'Removes a message from a channel in a Microsoft Teams team';
|
|
20
|
+
}
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
_TeamsMessageRemoveCommand_instances.add(this);
|
|
24
|
+
__classPrivateFieldGet(this, _TeamsMessageRemoveCommand_instances, "m", _TeamsMessageRemoveCommand_initTelemetry).call(this);
|
|
25
|
+
__classPrivateFieldGet(this, _TeamsMessageRemoveCommand_instances, "m", _TeamsMessageRemoveCommand_initOptions).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _TeamsMessageRemoveCommand_instances, "m", _TeamsMessageRemoveCommand_initValidators).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _TeamsMessageRemoveCommand_instances, "m", _TeamsMessageRemoveCommand_initOptionSets).call(this);
|
|
28
|
+
__classPrivateFieldGet(this, _TeamsMessageRemoveCommand_instances, "m", _TeamsMessageRemoveCommand_initTypes).call(this);
|
|
29
|
+
}
|
|
30
|
+
async commandAction(logger, args) {
|
|
31
|
+
const removeTeamMessage = async () => {
|
|
32
|
+
try {
|
|
33
|
+
if (this.verbose) {
|
|
34
|
+
await logger.logToStderr(`Removing message '${args.options.id}' from channel '${args.options.channelId || args.options.channelName}' in team '${args.options.teamId || args.options.teamName}'.`);
|
|
35
|
+
}
|
|
36
|
+
const teamId = args.options.teamId || await teams.getTeamIdByDisplayName(args.options.teamName);
|
|
37
|
+
const channelId = args.options.channelId || await teams.getChannelIdByDisplayName(teamId, args.options.channelName);
|
|
38
|
+
const requestOptions = {
|
|
39
|
+
url: `${this.resource}/v1.0/teams/${teamId}/channels/${formatting.encodeQueryParameter(channelId)}/messages/${args.options.id}/softDelete`,
|
|
40
|
+
headers: {
|
|
41
|
+
accept: 'application/json;odata.metadata=none'
|
|
42
|
+
},
|
|
43
|
+
responseType: 'json'
|
|
44
|
+
};
|
|
45
|
+
await request.post(requestOptions);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
if (err.error?.error?.code === 'NotFound') {
|
|
49
|
+
this.handleError('The message was not found in the Teams channel.');
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this.handleRejectedODataJsonPromise(err);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
if (args.options.force) {
|
|
57
|
+
await removeTeamMessage();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
const result = await cli.promptForConfirmation({ message: `Are you sure you want to remove this message?` });
|
|
61
|
+
if (result) {
|
|
62
|
+
await removeTeamMessage();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
_TeamsMessageRemoveCommand_instances = new WeakSet(), _TeamsMessageRemoveCommand_initTelemetry = function _TeamsMessageRemoveCommand_initTelemetry() {
|
|
68
|
+
this.telemetry.push((args) => {
|
|
69
|
+
Object.assign(this.telemetryProperties, {
|
|
70
|
+
teamId: typeof args.options.teamId !== 'undefined',
|
|
71
|
+
teamName: typeof args.options.teamName !== 'undefined',
|
|
72
|
+
channelId: typeof args.options.channelId !== 'undefined',
|
|
73
|
+
channelName: typeof args.options.channelName !== 'undefined',
|
|
74
|
+
force: !!args.options.force
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}, _TeamsMessageRemoveCommand_initOptions = function _TeamsMessageRemoveCommand_initOptions() {
|
|
78
|
+
this.options.unshift({
|
|
79
|
+
option: '--teamId [teamId]'
|
|
80
|
+
}, {
|
|
81
|
+
option: '--teamName [teamName]'
|
|
82
|
+
}, {
|
|
83
|
+
option: '--channelId [channelId]'
|
|
84
|
+
}, {
|
|
85
|
+
option: '--channelName [channelName]'
|
|
86
|
+
}, {
|
|
87
|
+
option: '-i, --id <id>'
|
|
88
|
+
}, {
|
|
89
|
+
option: '-f, --force'
|
|
90
|
+
});
|
|
91
|
+
}, _TeamsMessageRemoveCommand_initValidators = function _TeamsMessageRemoveCommand_initValidators() {
|
|
92
|
+
this.validators.push(async (args) => {
|
|
93
|
+
if (args.options.teamId && !validation.isValidGuid(args.options.teamId)) {
|
|
94
|
+
return `'${args.options.teamId}' is not a valid GUID for 'teamId'.`;
|
|
95
|
+
}
|
|
96
|
+
if (args.options.channelId && !validation.isValidTeamsChannelId(args.options.channelId)) {
|
|
97
|
+
return `'${args.options.channelId}' is not a valid ID for 'channelId'.`;
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
});
|
|
101
|
+
}, _TeamsMessageRemoveCommand_initOptionSets = function _TeamsMessageRemoveCommand_initOptionSets() {
|
|
102
|
+
this.optionSets.push({
|
|
103
|
+
options: ['teamId', 'teamName']
|
|
104
|
+
}, {
|
|
105
|
+
options: ['channelId', 'channelName']
|
|
106
|
+
});
|
|
107
|
+
}, _TeamsMessageRemoveCommand_initTypes = function _TeamsMessageRemoveCommand_initTypes() {
|
|
108
|
+
this.types.string.push('teamId', 'teamName', 'channelId', 'channelName', 'id');
|
|
109
|
+
this.types.boolean.push('force');
|
|
110
|
+
};
|
|
111
|
+
export default new TeamsMessageRemoveCommand();
|
|
112
|
+
//# sourceMappingURL=message-remove.js.map
|
|
@@ -0,0 +1,106 @@
|
|
|
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 _TeamsMessageRestoreCommand_instances, _TeamsMessageRestoreCommand_initTelemetry, _TeamsMessageRestoreCommand_initOptions, _TeamsMessageRestoreCommand_initValidators, _TeamsMessageRestoreCommand_initOptionSets, _TeamsMessageRestoreCommand_initTypes;
|
|
7
|
+
import request from '../../../../request.js';
|
|
8
|
+
import { validation } from '../../../../utils/validation.js';
|
|
9
|
+
import commands from '../../commands.js';
|
|
10
|
+
import DelegatedGraphCommand from '../../../base/DelegatedGraphCommand.js';
|
|
11
|
+
import { teams } from '../../../../utils/teams.js';
|
|
12
|
+
class TeamsMessageRestoreCommand extends DelegatedGraphCommand {
|
|
13
|
+
get name() {
|
|
14
|
+
return commands.MESSAGE_RESTORE;
|
|
15
|
+
}
|
|
16
|
+
get description() {
|
|
17
|
+
return 'Restores a deleted message from a channel in a Microsoft Teams team';
|
|
18
|
+
}
|
|
19
|
+
constructor() {
|
|
20
|
+
super();
|
|
21
|
+
_TeamsMessageRestoreCommand_instances.add(this);
|
|
22
|
+
__classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initTelemetry).call(this);
|
|
23
|
+
__classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initOptions).call(this);
|
|
24
|
+
__classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initValidators).call(this);
|
|
25
|
+
__classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initOptionSets).call(this);
|
|
26
|
+
__classPrivateFieldGet(this, _TeamsMessageRestoreCommand_instances, "m", _TeamsMessageRestoreCommand_initTypes).call(this);
|
|
27
|
+
}
|
|
28
|
+
async commandAction(logger, args) {
|
|
29
|
+
try {
|
|
30
|
+
if (this.verbose) {
|
|
31
|
+
await logger.logToStderr(`Restoring deleted message '${args.options.id}' from channel '${args.options.channelId || args.options.channelName}' in the Microsoft Teams team '${args.options.teamId || args.options.teamName}'.`);
|
|
32
|
+
}
|
|
33
|
+
const teamId = await this.getTeamId(args.options, logger);
|
|
34
|
+
const channelId = await this.getChannelId(args.options, teamId, logger);
|
|
35
|
+
const requestOptions = {
|
|
36
|
+
url: `${this.resource}/v1.0/teams/${teamId}/channels/${channelId}/messages/${args.options.id}/undoSoftDelete`,
|
|
37
|
+
headers: {
|
|
38
|
+
accept: 'application/json;odata.metadata=none'
|
|
39
|
+
},
|
|
40
|
+
responseType: 'json'
|
|
41
|
+
};
|
|
42
|
+
await request.post(requestOptions);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
this.handleRejectedODataJsonPromise(err);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async getTeamId(options, logger) {
|
|
49
|
+
if (options.teamId) {
|
|
50
|
+
return options.teamId;
|
|
51
|
+
}
|
|
52
|
+
if (this.verbose) {
|
|
53
|
+
await logger.logToStderr(`Getting the Team ID.`);
|
|
54
|
+
}
|
|
55
|
+
const groupId = await teams.getTeamIdByDisplayName(options.teamName);
|
|
56
|
+
return groupId;
|
|
57
|
+
}
|
|
58
|
+
async getChannelId(options, teamId, logger) {
|
|
59
|
+
if (options.channelId) {
|
|
60
|
+
return options.channelId;
|
|
61
|
+
}
|
|
62
|
+
if (this.verbose) {
|
|
63
|
+
await logger.logToStderr(`Getting the channel ID.`);
|
|
64
|
+
}
|
|
65
|
+
const channelId = await teams.getChannelIdByDisplayName(teamId, options.channelName);
|
|
66
|
+
return channelId;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
_TeamsMessageRestoreCommand_instances = new WeakSet(), _TeamsMessageRestoreCommand_initTelemetry = function _TeamsMessageRestoreCommand_initTelemetry() {
|
|
70
|
+
this.telemetry.push((args) => {
|
|
71
|
+
Object.assign(this.telemetryProperties, {
|
|
72
|
+
teamId: typeof args.options.teamId !== 'undefined',
|
|
73
|
+
teamName: typeof args.options.teamName !== 'undefined',
|
|
74
|
+
channelId: typeof args.options.channelId !== 'undefined',
|
|
75
|
+
channelName: typeof args.options.channelName !== 'undefined'
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}, _TeamsMessageRestoreCommand_initOptions = function _TeamsMessageRestoreCommand_initOptions() {
|
|
79
|
+
this.options.unshift({
|
|
80
|
+
option: '--teamId [teamId]'
|
|
81
|
+
}, {
|
|
82
|
+
option: '--teamName [teamName]'
|
|
83
|
+
}, {
|
|
84
|
+
option: '--channelId [channelId]'
|
|
85
|
+
}, {
|
|
86
|
+
option: '--channelName [channelName]'
|
|
87
|
+
}, {
|
|
88
|
+
option: '-i, --id <id>'
|
|
89
|
+
});
|
|
90
|
+
}, _TeamsMessageRestoreCommand_initValidators = function _TeamsMessageRestoreCommand_initValidators() {
|
|
91
|
+
this.validators.push(async (args) => {
|
|
92
|
+
if (args.options.teamId && !validation.isValidGuid(args.options.teamId)) {
|
|
93
|
+
return `'${args.options.teamId}' is not a valid GUID for 'teamId'.`;
|
|
94
|
+
}
|
|
95
|
+
if (args.options.channelId && !validation.isValidTeamsChannelId(args.options.channelId)) {
|
|
96
|
+
return `'${args.options.channelId}' is not a valid ID for 'channelId'.`;
|
|
97
|
+
}
|
|
98
|
+
return true;
|
|
99
|
+
});
|
|
100
|
+
}, _TeamsMessageRestoreCommand_initOptionSets = function _TeamsMessageRestoreCommand_initOptionSets() {
|
|
101
|
+
this.optionSets.push({ options: ['teamId', 'teamName'] }, { options: ['channelId', 'channelName'] });
|
|
102
|
+
}, _TeamsMessageRestoreCommand_initTypes = function _TeamsMessageRestoreCommand_initTypes() {
|
|
103
|
+
this.types.string.push('teamId', 'teamName', 'channelId', 'channelName', 'id');
|
|
104
|
+
};
|
|
105
|
+
export default new TeamsMessageRestoreCommand();
|
|
106
|
+
//# sourceMappingURL=message-restore.js.map
|
|
@@ -30,13 +30,16 @@ export default {
|
|
|
30
30
|
MEETING_ADD: `${prefix} meeting add`,
|
|
31
31
|
MEETING_GET: `${prefix} meeting get`,
|
|
32
32
|
MEETING_LIST: `${prefix} meeting list`,
|
|
33
|
+
MEETING_ATTENDANCEREPORT_GET: `${prefix} meeting attendancereport get`,
|
|
33
34
|
MEETING_ATTENDANCEREPORT_LIST: `${prefix} meeting attendancereport list`,
|
|
34
35
|
MEETING_TRANSCRIPT_LIST: `${prefix} meeting transcript list`,
|
|
35
36
|
MEMBERSETTINGS_LIST: `${prefix} membersettings list`,
|
|
36
37
|
MEMBERSETTINGS_SET: `${prefix} membersettings set`,
|
|
37
38
|
MESSAGE_GET: `${prefix} message get`,
|
|
38
39
|
MESSAGE_LIST: `${prefix} message list`,
|
|
40
|
+
MESSAGE_REMOVE: `${prefix} message remove`,
|
|
39
41
|
MESSAGE_REPLY_LIST: `${prefix} message reply list`,
|
|
42
|
+
MESSAGE_RESTORE: `${prefix} message restore`,
|
|
40
43
|
MESSAGE_SEND: `${prefix} message send`,
|
|
41
44
|
MESSAGINGSETTINGS_LIST: `${prefix} messagingsettings list`,
|
|
42
45
|
MESSAGINGSETTINGS_SET: `${prefix} messagingsettings set`,
|
|
@@ -0,0 +1,166 @@
|
|
|
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 _VivaEngageCommunityAddCommand_instances, _VivaEngageCommunityAddCommand_initTelemetry, _VivaEngageCommunityAddCommand_initOptions, _VivaEngageCommunityAddCommand_initValidators, _VivaEngageCommunityAddCommand_initTypes, _VivaEngageCommunityAddCommand_initOptionSets;
|
|
7
|
+
import GraphCommand from '../../../base/GraphCommand.js';
|
|
8
|
+
import commands from '../../commands.js';
|
|
9
|
+
import request from '../../../../request.js';
|
|
10
|
+
import { validation } from '../../../../utils/validation.js';
|
|
11
|
+
import { accessToken } from '../../../../utils/accessToken.js';
|
|
12
|
+
import auth from '../../../../Auth.js';
|
|
13
|
+
import { formatting } from '../../../../utils/formatting.js';
|
|
14
|
+
import { entraUser } from '../../../../utils/entraUser.js';
|
|
15
|
+
import { setTimeout } from 'timers/promises';
|
|
16
|
+
class VivaEngageCommunityAddCommand extends GraphCommand {
|
|
17
|
+
get name() {
|
|
18
|
+
return commands.ENGAGE_COMMUNITY_ADD;
|
|
19
|
+
}
|
|
20
|
+
get description() {
|
|
21
|
+
return 'Creates a new community in Viva Engage';
|
|
22
|
+
}
|
|
23
|
+
constructor() {
|
|
24
|
+
super();
|
|
25
|
+
_VivaEngageCommunityAddCommand_instances.add(this);
|
|
26
|
+
this.pollingInterval = 5000;
|
|
27
|
+
this.privacyOptions = ['public', 'private'];
|
|
28
|
+
__classPrivateFieldGet(this, _VivaEngageCommunityAddCommand_instances, "m", _VivaEngageCommunityAddCommand_initTelemetry).call(this);
|
|
29
|
+
__classPrivateFieldGet(this, _VivaEngageCommunityAddCommand_instances, "m", _VivaEngageCommunityAddCommand_initOptions).call(this);
|
|
30
|
+
__classPrivateFieldGet(this, _VivaEngageCommunityAddCommand_instances, "m", _VivaEngageCommunityAddCommand_initValidators).call(this);
|
|
31
|
+
__classPrivateFieldGet(this, _VivaEngageCommunityAddCommand_instances, "m", _VivaEngageCommunityAddCommand_initTypes).call(this);
|
|
32
|
+
__classPrivateFieldGet(this, _VivaEngageCommunityAddCommand_instances, "m", _VivaEngageCommunityAddCommand_initOptionSets).call(this);
|
|
33
|
+
}
|
|
34
|
+
async commandAction(logger, args) {
|
|
35
|
+
const { displayName, description, privacy, adminEntraIds, adminEntraUserNames, wait } = args.options;
|
|
36
|
+
const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
|
|
37
|
+
if (isAppOnlyAccessToken && !adminEntraIds && !adminEntraUserNames) {
|
|
38
|
+
this.handleError(`Specify at least one admin using either adminEntraIds or adminEntraUserNames options when using application permissions.`);
|
|
39
|
+
}
|
|
40
|
+
if (this.verbose) {
|
|
41
|
+
await logger.logToStderr(`Creating a Viva Engage community with display name '${displayName}'...`);
|
|
42
|
+
}
|
|
43
|
+
try {
|
|
44
|
+
const requestOptions = {
|
|
45
|
+
url: `${this.resource}/beta/employeeExperience/communities`,
|
|
46
|
+
headers: {
|
|
47
|
+
accept: 'application/json;odata.metadata=none',
|
|
48
|
+
'content-type': 'application/json'
|
|
49
|
+
},
|
|
50
|
+
responseType: 'json',
|
|
51
|
+
fullResponse: true,
|
|
52
|
+
data: {
|
|
53
|
+
displayName: displayName,
|
|
54
|
+
description: description,
|
|
55
|
+
privacy: privacy
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const entraIds = await this.getGraphUserUrls(args.options);
|
|
59
|
+
if (entraIds.length > 0) {
|
|
60
|
+
requestOptions.data['owners@odata.bind'] = entraIds;
|
|
61
|
+
}
|
|
62
|
+
const res = await request.post(requestOptions);
|
|
63
|
+
const location = res.headers.location;
|
|
64
|
+
if (!wait) {
|
|
65
|
+
await logger.log(location);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
let status;
|
|
69
|
+
do {
|
|
70
|
+
if (this.verbose) {
|
|
71
|
+
await logger.logToStderr(`Community still provisioning. Retrying in ${this.pollingInterval / 1000} seconds...`);
|
|
72
|
+
}
|
|
73
|
+
await setTimeout(this.pollingInterval);
|
|
74
|
+
if (this.verbose) {
|
|
75
|
+
await logger.logToStderr(`Checking create community operation status...`);
|
|
76
|
+
}
|
|
77
|
+
const operation = await request.get({
|
|
78
|
+
url: location,
|
|
79
|
+
headers: {
|
|
80
|
+
accept: 'application/json;odata.metadata=none'
|
|
81
|
+
},
|
|
82
|
+
responseType: 'json'
|
|
83
|
+
});
|
|
84
|
+
status = operation.status;
|
|
85
|
+
if (this.verbose) {
|
|
86
|
+
await logger.logToStderr(`Community creation operation status: ${status}`);
|
|
87
|
+
}
|
|
88
|
+
if (status === 'failed') {
|
|
89
|
+
throw `Community creation failed: ${operation.statusDetail}`;
|
|
90
|
+
}
|
|
91
|
+
if (status === 'succeeded') {
|
|
92
|
+
await logger.log(operation);
|
|
93
|
+
}
|
|
94
|
+
} while (status === 'notStarted' || status === 'running');
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
this.handleRejectedODataJsonPromise(err);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async getGraphUserUrls(options) {
|
|
101
|
+
let entraIds = [];
|
|
102
|
+
if (options.adminEntraIds) {
|
|
103
|
+
entraIds = formatting.splitAndTrim(options.adminEntraIds);
|
|
104
|
+
}
|
|
105
|
+
else if (options.adminEntraUserNames) {
|
|
106
|
+
entraIds = await entraUser.getUserIdsByUpns(formatting.splitAndTrim(options.adminEntraUserNames));
|
|
107
|
+
}
|
|
108
|
+
const graphUserUrls = entraIds.map(id => `${this.resource}/beta/users/${id}`);
|
|
109
|
+
return graphUserUrls;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
_VivaEngageCommunityAddCommand_instances = new WeakSet(), _VivaEngageCommunityAddCommand_initTelemetry = function _VivaEngageCommunityAddCommand_initTelemetry() {
|
|
113
|
+
this.telemetry.push((args) => {
|
|
114
|
+
Object.assign(this.telemetryProperties, {
|
|
115
|
+
adminEntraIds: typeof args.options.adminEntraIds !== 'undefined',
|
|
116
|
+
adminEntraUserNames: typeof args.options.adminEntraUserNames !== 'undefined',
|
|
117
|
+
wait: !!args.options.wait
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
}, _VivaEngageCommunityAddCommand_initOptions = function _VivaEngageCommunityAddCommand_initOptions() {
|
|
121
|
+
this.options.unshift({ option: '--displayName <displayName>' }, { option: '--description <description>' }, {
|
|
122
|
+
option: '--privacy <privacy>',
|
|
123
|
+
autocomplete: this.privacyOptions
|
|
124
|
+
}, { option: '--adminEntraIds [adminEntraIds]' }, { option: '--adminEntraUserNames [adminEntraUserNames]' }, { option: '--wait' });
|
|
125
|
+
}, _VivaEngageCommunityAddCommand_initValidators = function _VivaEngageCommunityAddCommand_initValidators() {
|
|
126
|
+
this.validators.push(async (args) => {
|
|
127
|
+
if (args.options.displayName.length > 255) {
|
|
128
|
+
return `The maximum amount of characters for 'displayName' is 255.`;
|
|
129
|
+
}
|
|
130
|
+
if (args.options.description.length > 1024) {
|
|
131
|
+
return `The maximum amount of characters for 'description' is 1024.`;
|
|
132
|
+
}
|
|
133
|
+
if (this.privacyOptions.indexOf(args.options.privacy) === -1) {
|
|
134
|
+
return `'${args.options.privacy}' is not a valid value for privacy. Allowed values are: ${this.privacyOptions.join(', ')}.`;
|
|
135
|
+
}
|
|
136
|
+
if (args.options.adminEntraIds) {
|
|
137
|
+
const isValidGUIDArrayResult = validation.isValidGuidArray(args.options.adminEntraIds);
|
|
138
|
+
if (isValidGUIDArrayResult !== true) {
|
|
139
|
+
return `The following GUIDs are invalid for the option 'adminEntraIds': ${isValidGUIDArrayResult}.`;
|
|
140
|
+
}
|
|
141
|
+
if (formatting.splitAndTrim(args.options.adminEntraIds).length > 20) {
|
|
142
|
+
return `Maximum of 20 admins allowed. Please reduce the number of users and try again.`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (args.options.adminEntraUserNames) {
|
|
146
|
+
const isValidUPNArrayResult = validation.isValidUserPrincipalNameArray(args.options.adminEntraUserNames);
|
|
147
|
+
if (isValidUPNArrayResult !== true) {
|
|
148
|
+
return `The following user principal names are invalid for the option 'adminEntraUserNames': ${isValidUPNArrayResult}.`;
|
|
149
|
+
}
|
|
150
|
+
if (formatting.splitAndTrim(args.options.adminEntraUserNames).length > 20) {
|
|
151
|
+
return `Maximum of 20 admins allowed. Please reduce the number of users and try again.`;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
});
|
|
156
|
+
}, _VivaEngageCommunityAddCommand_initTypes = function _VivaEngageCommunityAddCommand_initTypes() {
|
|
157
|
+
this.types.string.push('displayName', 'description', 'privacy', 'adminEntraIds', 'adminEntraUserNames');
|
|
158
|
+
this.types.boolean.push('wait');
|
|
159
|
+
}, _VivaEngageCommunityAddCommand_initOptionSets = function _VivaEngageCommunityAddCommand_initOptionSets() {
|
|
160
|
+
this.optionSets.push({
|
|
161
|
+
options: ['adminEntraIds', 'adminEntraUserNames'],
|
|
162
|
+
runsWhen: (args) => args.options.adminEntraIds || args.options.adminEntraUserNames
|
|
163
|
+
});
|
|
164
|
+
};
|
|
165
|
+
export default new VivaEngageCommunityAddCommand();
|
|
166
|
+
//# sourceMappingURL=engage-community-add.js.map
|
|
@@ -7,7 +7,6 @@ var _VivaEngageGroupListCommand_instances, _VivaEngageGroupListCommand_initTelem
|
|
|
7
7
|
import request from '../../../../request.js';
|
|
8
8
|
import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
|
|
9
9
|
import commands from '../../commands.js';
|
|
10
|
-
import yammerCommands from './yammerCommands.js';
|
|
11
10
|
class VivaEngageGroupListCommand extends VivaEngageCommand {
|
|
12
11
|
get name() {
|
|
13
12
|
return commands.ENGAGE_GROUP_LIST;
|
|
@@ -15,9 +14,6 @@ class VivaEngageGroupListCommand extends VivaEngageCommand {
|
|
|
15
14
|
get description() {
|
|
16
15
|
return 'Returns the list of groups in a Viva Engage network or the groups for a specific user';
|
|
17
16
|
}
|
|
18
|
-
alias() {
|
|
19
|
-
return [yammerCommands.GROUP_LIST];
|
|
20
|
-
}
|
|
21
17
|
constructor() {
|
|
22
18
|
super();
|
|
23
19
|
_VivaEngageGroupListCommand_instances.add(this);
|
|
@@ -59,7 +55,6 @@ class VivaEngageGroupListCommand extends VivaEngageCommand {
|
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
async commandAction(logger, args) {
|
|
62
|
-
await this.showDeprecationWarning(logger, this.alias()[0], this.name);
|
|
63
58
|
this.items = []; // this will reset the items array in interactive mode
|
|
64
59
|
try {
|
|
65
60
|
await this.getAllItems(logger, args, 1);
|