@pnp/cli-microsoft365 6.9.0-beta.1cd2525 → 6.9.0-beta.3158148
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/.devcontainer/Dockerfile +12 -19
- package/.devcontainer/devcontainer.json +24 -17
- package/Dockerfile +3 -1
- package/dist/Auth.js +2 -8
- package/dist/AuthServer.js +2 -4
- package/dist/cli/Cli.js +2 -2
- package/dist/m365/aad/commands/app/app-add.js +258 -249
- package/dist/m365/aad/commands/app/app-get.js +65 -62
- package/dist/m365/aad/commands/app/app-remove.js +22 -23
- package/dist/m365/aad/commands/app/app-role-add.js +35 -34
- package/dist/m365/aad/commands/app/app-role-list.js +22 -23
- package/dist/m365/aad/commands/app/app-role-remove.js +76 -73
- package/dist/m365/aad/commands/app/app-set.js +103 -103
- package/dist/m365/aad/commands/approleassignment/approleassignment-add.js +16 -14
- package/dist/m365/aad/commands/approleassignment/approleassignment-list.js +43 -52
- package/dist/m365/aad/commands/approleassignment/approleassignment-remove.js +20 -16
- package/dist/m365/aad/commands/o365group/o365group-add.js +40 -37
- package/dist/m365/aad/commands/o365group/o365group-conversation-post-list.js +7 -6
- package/dist/m365/aad/commands/o365group/o365group-list.js +6 -11
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-clear.js +7 -8
- package/dist/m365/aad/commands/o365group/o365group-recyclebinitem-restore.js +23 -24
- package/dist/m365/aad/commands/o365group/o365group-set.js +15 -20
- package/dist/m365/aad/commands/o365group/o365group-teamify.js +15 -16
- package/dist/m365/aad/commands/o365group/o365group-user-list.js +17 -10
- package/dist/m365/aad/commands/o365group/o365group-user-set.js +17 -10
- package/dist/m365/aad/commands/policy/policy-list.js +12 -13
- package/dist/m365/aad/commands/siteclassification/siteclassification-enable.js +1 -3
- package/dist/m365/aad/commands/siteclassification/siteclassification-set.js +19 -20
- package/dist/m365/aad/commands/sp/sp-add.js +22 -23
- package/dist/m365/aad/commands/sp/sp-get.js +22 -23
- package/dist/m365/aad/commands/sp/sp-list.js +78 -0
- package/dist/m365/aad/commands.js +1 -0
- package/dist/m365/app/commands/app-open.js +4 -14
- package/dist/m365/base/AzmgmtItemsListCommand.js +31 -33
- package/dist/m365/cli/commands/cli-issue.js +4 -10
- package/dist/m365/cli/commands/cli-reconsent.js +2 -8
- package/dist/m365/cli/commands/config/config-set.js +0 -1
- package/dist/m365/commands/docs.js +2 -8
- package/dist/m365/commands/login.js +20 -0
- package/dist/m365/flow/commands/flow-list.js +30 -12
- package/dist/m365/flow/commands/flow-remove.js +2 -3
- package/dist/m365/flow/commands/run/run-resubmit.js +11 -10
- package/dist/m365/onedrive/commands/onedrive-list.js +21 -32
- package/dist/m365/outlook/commands/message/message-list.js +18 -23
- package/dist/m365/outlook/commands/message/message-move.js +15 -20
- package/dist/m365/pa/commands/app/app-export.js +3 -4
- package/dist/m365/pa/commands/app/app-get.js +11 -9
- package/dist/m365/pa/commands/app/app-remove.js +1 -1
- package/dist/m365/pa/commands/pcf/pcf-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-init.js +1 -2
- package/dist/m365/pa/commands/solution/solution-reference-add.js +1 -2
- package/dist/m365/pp/commands/managementapp/managementapp-add.js +19 -20
- package/dist/m365/purview/commands/retentionevent/retentionevent-add.js +3 -3
- package/dist/m365/purview/commands/retentionevent/retentionevent-get.js +1 -1
- package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +1 -1
- package/dist/m365/purview/commands/retentionevent/retentionevent-remove.js +1 -1
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-add.js +1 -1
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-get.js +1 -1
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +1 -1
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-remove.js +1 -1
- package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-set.js +1 -1
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.17.3.js +25 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002027_DEVDEP_fluentui_react.js +14 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.3.js +59 -0
- package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
- package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
- package/dist/m365/spo/commands/app/app-teamspackage-download.js +17 -24
- package/dist/m365/spo/commands/apppage/apppage-set.js +1 -1
- package/dist/m365/spo/commands/contenttype/contenttype-field-set.js +65 -94
- package/dist/m365/spo/commands/customaction/customaction-clear.js +4 -12
- package/dist/m365/spo/commands/customaction/customaction-remove.js +12 -23
- package/dist/m365/spo/commands/customaction/customaction-set.js +21 -29
- package/dist/m365/spo/commands/file/file-add.js +133 -133
- package/dist/m365/spo/commands/file/file-checkout-undo.js +119 -0
- package/dist/m365/spo/commands/file/file-rename.js +11 -9
- package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +2 -2
- package/dist/m365/spo/commands/file/file-roleassignment-add.js +41 -61
- package/dist/m365/spo/commands/file/file-roleassignment-remove.js +3 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-break.js +3 -0
- package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +3 -0
- package/dist/m365/spo/commands/file/file-sharinginfo-get.js +23 -21
- package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
- package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
- package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
- package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +3 -3
- package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
- package/dist/m365/spo/commands/group/group-member-add.js +17 -16
- package/dist/m365/spo/commands/group/group-set.js +20 -20
- package/dist/m365/spo/commands/homesite/homesite-remove.js +1 -1
- package/dist/m365/spo/commands/hubsite/hubsite-get.js +33 -31
- package/dist/m365/spo/commands/hubsite/hubsite-list.js +18 -29
- package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +3 -0
- package/dist/m365/spo/commands/list/list-add.js +1 -1
- package/dist/m365/spo/commands/list/list-contenttype-default-set.js +1 -1
- package/dist/m365/spo/commands/list/list-roleassignment-add.js +45 -52
- package/dist/m365/spo/commands/list/list-roleassignment-remove.js +33 -38
- package/dist/m365/spo/commands/list/list-sensitivitylabel-ensure.js +13 -3
- package/dist/m365/spo/commands/list/list-view-field-add.js +12 -10
- package/dist/m365/spo/commands/list/list-view-field-remove.js +12 -10
- package/dist/m365/spo/commands/list/list-view-field-set.js +12 -10
- package/dist/m365/spo/commands/list/list-view-remove.js +3 -0
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +41 -61
- package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +71 -74
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +36 -34
- package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +32 -30
- package/dist/m365/spo/commands/navigation/navigation-node-remove.js +24 -22
- package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-remove.js +29 -27
- package/dist/m365/spo/commands/orgnewssite/orgnewssite-remove.js +26 -24
- package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +34 -40
- package/dist/m365/spo/commands/sitedesign/sitedesign-task-remove.js +23 -21
- package/dist/m365/spo/commands/sitescript/sitescript-remove.js +24 -22
- package/dist/m365/spo/commands/spo-search.js +7 -15
- package/dist/m365/spo/commands/storageentity/storageentity-remove.js +29 -27
- package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-set.js +156 -0
- package/dist/m365/spo/commands.js +2 -0
- package/dist/m365/teams/commands/app/app-install.js +23 -21
- package/dist/m365/teams/commands/app/app-remove.js +3 -0
- package/dist/m365/teams/commands/app/app-uninstall.js +3 -0
- package/dist/m365/teams/commands/app/app-update.js +15 -16
- package/dist/m365/teams/commands/channel/channel-add.js +40 -39
- package/dist/m365/teams/commands/channel/channel-get.js +23 -25
- package/dist/m365/teams/commands/channel/channel-list.js +6 -7
- package/dist/m365/teams/commands/channel/channel-member-add.js +61 -60
- package/dist/m365/teams/commands/channel/channel-member-list.js +20 -22
- package/dist/m365/teams/commands/channel/channel-member-remove.js +43 -48
- package/dist/m365/teams/commands/channel/channel-member-set.js +36 -39
- package/dist/m365/teams/commands/channel/channel-remove.js +4 -1
- package/dist/m365/teams/commands/funsettings/funsettings-list.js +3 -0
- package/dist/m365/teams/commands/funsettings/funsettings-set.js +3 -0
- package/dist/m365/teams/commands/tab/tab-get.js +34 -37
- package/dist/m365/teams/commands/team/team-archive.js +6 -7
- package/dist/m365/teams/commands/team/team-get.js +6 -7
- package/dist/m365/teams/commands/team/team-list.js +9 -11
- package/dist/m365/teams/commands/team/team-remove.js +6 -7
- package/dist/m365/teams/commands/team/team-unarchive.js +6 -7
- package/dist/m365/teams/commands/user/user-app-list.js +13 -11
- package/dist/m365/teams/commands/user/user-list.js +7 -4
- package/dist/m365/tenant/commands/security/security-alerts-list.js +25 -26
- package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +13 -14
- package/dist/m365/todo/commands/list/list-remove.js +39 -36
- package/dist/m365/todo/commands/list/list-set.js +16 -14
- package/dist/m365/todo/commands/task/task-add.js +14 -14
- package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -7
- package/dist/settingsNames.js +0 -1
- package/dist/utils/browserUtil.js +23 -0
- package/docs/docs/cmd/aad/sp/sp-list.mdx +162 -0
- package/docs/docs/cmd/flow/flow-list.mdx +15 -0
- package/docs/docs/cmd/login.mdx +39 -0
- package/docs/docs/cmd/setup.mdx +2 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
- package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +55 -0
- package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
- package/docs/docs/cmd/spo/list/list-sensitivitylabel-ensure.mdx +14 -5
- package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-set.mdx +81 -0
- package/docs/docs/cmd/spo/tenant/tenant-settings-set.mdx +6 -0
- package/docs/docs/cmd/status.mdx +6 -3
- package/docs/docs/cmd/util/accesstoken/accesstoken-get.mdx +12 -2
- package/npm-shrinkwrap.json +299 -272
- package/package.json +17 -17
- package/dist/m365/aad/commands/approleassignment/AppRoleAssignment.js +0 -3
- package/dist/m365/aad/commands/approleassignment/ServicePrincipal.js +0 -3
- package/dist/m365/aad/commands/groupsetting/GroupSetting.js +0 -3
- package/dist/m365/aad/commands/groupsettingtemplate/GroupSettingTemplate.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySetting.js +0 -10
- package/dist/m365/aad/commands/siteclassification/DirectorySettingTemplatesRsp.js +0 -3
- package/dist/m365/aad/commands/siteclassification/DirectorySettingValue.js +0 -3
- package/dist/m365/outlook/Message.js +0 -3
- package/dist/m365/spo/commands/site/SitePermission.js +0 -3
- package/dist/m365/teams/Channel.js +0 -3
- package/dist/m365/teams/ConversationMember.js +0 -3
- package/dist/m365/teams/Message.js +0 -3
- package/dist/m365/teams/Reply.js +0 -3
- package/dist/m365/teams/Tab.js +0 -3
- package/dist/m365/teams/Team.js +0 -3
- package/dist/m365/teams/TeamsApp.js +0 -3
- package/dist/m365/teams/TeamsAppInstallation.js +0 -3
- package/dist/m365/teams/TeamsTabConfiguration.js +0 -3
- package/dist/m365/teams/commands/Meeting.js +0 -3
|
@@ -0,0 +1,156 @@
|
|
|
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 _SpoTenantApplicationCustomizerSetCommand_instances, _SpoTenantApplicationCustomizerSetCommand_initTelemetry, _SpoTenantApplicationCustomizerSetCommand_initOptions, _SpoTenantApplicationCustomizerSetCommand_initValidators, _SpoTenantApplicationCustomizerSetCommand_initOptionSets;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const formatting_1 = require("../../../../utils/formatting");
|
|
19
|
+
const odata_1 = require("../../../../utils/odata");
|
|
20
|
+
const spo_1 = require("../../../../utils/spo");
|
|
21
|
+
const urlUtil_1 = require("../../../../utils/urlUtil");
|
|
22
|
+
const validation_1 = require("../../../../utils/validation");
|
|
23
|
+
const SpoCommand_1 = require("../../../base/SpoCommand");
|
|
24
|
+
const commands_1 = require("../../commands");
|
|
25
|
+
const os = require("os");
|
|
26
|
+
const request_1 = require("../../../../request");
|
|
27
|
+
class SpoTenantApplicationCustomizerSetCommand extends SpoCommand_1.default {
|
|
28
|
+
get name() {
|
|
29
|
+
return commands_1.default.TENANT_APPLICATIONCUSTOMIZER_SET;
|
|
30
|
+
}
|
|
31
|
+
get description() {
|
|
32
|
+
return 'Updates an Application Customizer that is deployed as a tenant-wide extension';
|
|
33
|
+
}
|
|
34
|
+
constructor() {
|
|
35
|
+
super();
|
|
36
|
+
_SpoTenantApplicationCustomizerSetCommand_instances.add(this);
|
|
37
|
+
__classPrivateFieldGet(this, _SpoTenantApplicationCustomizerSetCommand_instances, "m", _SpoTenantApplicationCustomizerSetCommand_initTelemetry).call(this);
|
|
38
|
+
__classPrivateFieldGet(this, _SpoTenantApplicationCustomizerSetCommand_instances, "m", _SpoTenantApplicationCustomizerSetCommand_initOptions).call(this);
|
|
39
|
+
__classPrivateFieldGet(this, _SpoTenantApplicationCustomizerSetCommand_instances, "m", _SpoTenantApplicationCustomizerSetCommand_initValidators).call(this);
|
|
40
|
+
__classPrivateFieldGet(this, _SpoTenantApplicationCustomizerSetCommand_instances, "m", _SpoTenantApplicationCustomizerSetCommand_initOptionSets).call(this);
|
|
41
|
+
}
|
|
42
|
+
commandAction(logger, args) {
|
|
43
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
try {
|
|
45
|
+
const appCatalogUrl = yield spo_1.spo.getTenantAppCatalogUrl(logger, this.debug);
|
|
46
|
+
if (!appCatalogUrl) {
|
|
47
|
+
throw 'No app catalog URL found';
|
|
48
|
+
}
|
|
49
|
+
const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
|
|
50
|
+
const listItemId = yield this.getListItemId(appCatalogUrl, args.options, listServerRelativeUrl, logger);
|
|
51
|
+
yield this.updateTenantWideExtension(appCatalogUrl, args.options, listServerRelativeUrl, listItemId, logger);
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
return this.handleRejectedODataJsonPromise(err);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
getListItemId(appCatalogUrl, options, listServerRelativeUrl, logger) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
const { title, id, clientSideComponentId } = options;
|
|
61
|
+
const filter = title ? `Title eq '${title}'` : id ? `Id eq '${id}'` : `TenantWideExtensionComponentId eq '${clientSideComponentId}'`;
|
|
62
|
+
if (this.verbose) {
|
|
63
|
+
logger.logToStderr(`Getting tenant-wide application customizer: "${title || id || clientSideComponentId}"...`);
|
|
64
|
+
}
|
|
65
|
+
const listItemInstances = yield odata_1.odata.getAllItems(`${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/items?$filter=TenantWideExtensionLocation eq 'ClientSideExtension.ApplicationCustomizer' and ${filter}`);
|
|
66
|
+
if (!listItemInstances || listItemInstances.length === 0) {
|
|
67
|
+
throw 'The specified application customizer was not found';
|
|
68
|
+
}
|
|
69
|
+
if (listItemInstances.length > 1) {
|
|
70
|
+
throw `Multiple application customizers with ${title ? `title '${title}'` : `ClientSideComponentId '${clientSideComponentId}'`} found. Please disambiguate using IDs: ${os.EOL}${listItemInstances.map(item => `- ${item.Id}`).join(os.EOL)}`;
|
|
71
|
+
}
|
|
72
|
+
return listItemInstances[0].Id;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
updateTenantWideExtension(appCatalogUrl, options, listServerRelativeUrl, itemId, logger) {
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
const { title, id, clientSideComponentId, newTitle, clientSideComponentProperties, webTemplate } = options;
|
|
78
|
+
if (this.verbose) {
|
|
79
|
+
logger.logToStderr(`Updating tenant-wide application customizer: "${title || id || clientSideComponentId}"...`);
|
|
80
|
+
}
|
|
81
|
+
const formValues = [];
|
|
82
|
+
if (newTitle !== undefined) {
|
|
83
|
+
formValues.push({
|
|
84
|
+
FieldName: 'Title',
|
|
85
|
+
FieldValue: newTitle
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
if (clientSideComponentProperties !== undefined) {
|
|
89
|
+
formValues.push({
|
|
90
|
+
FieldName: 'TenantWideExtensionComponentProperties',
|
|
91
|
+
FieldValue: clientSideComponentProperties
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
if (webTemplate !== undefined) {
|
|
95
|
+
formValues.push({
|
|
96
|
+
FieldName: 'TenantWideExtensionWebTemplate',
|
|
97
|
+
FieldValue: webTemplate
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
const requestOptions = {
|
|
101
|
+
url: `${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Items(${itemId})/ValidateUpdateListItem()`,
|
|
102
|
+
headers: {
|
|
103
|
+
'accept': 'application/json;odata=nometadata'
|
|
104
|
+
},
|
|
105
|
+
data: {
|
|
106
|
+
formValues: formValues
|
|
107
|
+
},
|
|
108
|
+
responseType: 'json'
|
|
109
|
+
};
|
|
110
|
+
yield request_1.default.post(requestOptions);
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
_SpoTenantApplicationCustomizerSetCommand_instances = new WeakSet(), _SpoTenantApplicationCustomizerSetCommand_initTelemetry = function _SpoTenantApplicationCustomizerSetCommand_initTelemetry() {
|
|
115
|
+
this.telemetry.push((args) => {
|
|
116
|
+
Object.assign(this.telemetryProperties, {
|
|
117
|
+
title: typeof args.options.title !== 'undefined',
|
|
118
|
+
id: typeof args.options.id !== 'undefined',
|
|
119
|
+
clientSideComponentId: typeof args.options.clientSideComponentId !== 'undefined',
|
|
120
|
+
newTitle: typeof args.options.newTitle !== 'undefined',
|
|
121
|
+
clientSideComponentProperties: typeof args.options.clientSideComponentProperties !== 'undefined',
|
|
122
|
+
webTemplate: typeof args.options.webTemplate !== 'undefined'
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}, _SpoTenantApplicationCustomizerSetCommand_initOptions = function _SpoTenantApplicationCustomizerSetCommand_initOptions() {
|
|
126
|
+
this.options.unshift({
|
|
127
|
+
option: '-i, --id [id]'
|
|
128
|
+
}, {
|
|
129
|
+
option: '-t, --title [title]'
|
|
130
|
+
}, {
|
|
131
|
+
option: '-c, --clientSideComponentId [clientSideComponentId]'
|
|
132
|
+
}, {
|
|
133
|
+
option: '--newTitle [newTitle]'
|
|
134
|
+
}, {
|
|
135
|
+
option: '-p, --clientSideComponentProperties [clientSideComponentProperties]'
|
|
136
|
+
}, {
|
|
137
|
+
option: '-w, --webTemplate [webTemplate]'
|
|
138
|
+
});
|
|
139
|
+
}, _SpoTenantApplicationCustomizerSetCommand_initValidators = function _SpoTenantApplicationCustomizerSetCommand_initValidators() {
|
|
140
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
141
|
+
if (args.options.id && isNaN(parseInt(args.options.id))) {
|
|
142
|
+
return `${args.options.id} is not a number`;
|
|
143
|
+
}
|
|
144
|
+
if (args.options.clientSideComponentId && !validation_1.validation.isValidGuid(args.options.clientSideComponentId)) {
|
|
145
|
+
return `${args.options.clientSideComponentId} is not a valid GUID`;
|
|
146
|
+
}
|
|
147
|
+
if (!args.options.newTitle && !args.options.clientSideComponentProperties && !args.options.webTemplate) {
|
|
148
|
+
return `Please specify an option to be updated`;
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}));
|
|
152
|
+
}, _SpoTenantApplicationCustomizerSetCommand_initOptionSets = function _SpoTenantApplicationCustomizerSetCommand_initOptionSets() {
|
|
153
|
+
this.optionSets.push({ options: ['title', 'id', 'clientSideComponentId'] });
|
|
154
|
+
};
|
|
155
|
+
module.exports = new SpoTenantApplicationCustomizerSetCommand();
|
|
156
|
+
//# sourceMappingURL=tenant-applicationcustomizer-set.js.map
|
|
@@ -61,6 +61,7 @@ exports.default = {
|
|
|
61
61
|
FILE_ADD: `${prefix} file add`,
|
|
62
62
|
FILE_CHECKIN: `${prefix} file checkin`,
|
|
63
63
|
FILE_CHECKOUT: `${prefix} file checkout`,
|
|
64
|
+
FILE_CHECKOUT_UNDO: `${prefix} file checkout undo`,
|
|
64
65
|
FILE_COPY: `${prefix} file copy`,
|
|
65
66
|
FILE_GET: `${prefix} file get`,
|
|
66
67
|
FILE_LIST: `${prefix} file list`,
|
|
@@ -297,6 +298,7 @@ exports.default = {
|
|
|
297
298
|
TENANT_APPLICATIONCUSTOMIZER_GET: `${prefix} tenant applicationcustomizer get`,
|
|
298
299
|
TENANT_APPLICATIONCUSTOMIZER_LIST: `${prefix} tenant applicationcustomizer list`,
|
|
299
300
|
TENANT_APPLICATIONCUSTOMIZER_REMOVE: `${prefix} tenant applicationcustomizer remove`,
|
|
301
|
+
TENANT_APPLICATIONCUSTOMIZER_SET: `${prefix} tenant applicationcustomizer set`,
|
|
300
302
|
TENANT_COMMANDSET_ADD: `${prefix} tenant commandset add`,
|
|
301
303
|
TENANT_COMMANDSET_GET: `${prefix} tenant commandset get`,
|
|
302
304
|
TENANT_COMMANDSET_LIST: `${prefix} tenant commandset list`,
|
|
@@ -70,30 +70,32 @@ class TeamsAppInstallCommand extends GraphCommand_1.default {
|
|
|
70
70
|
// we need this method, because passing an invalid user ID to the API
|
|
71
71
|
// won't cause an error
|
|
72
72
|
validateUser(args, logger) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
if (this.verbose) {
|
|
77
|
-
logger.logToStderr(`Checking if user ${args.options.userId} exists...`);
|
|
78
|
-
}
|
|
79
|
-
const options = {
|
|
80
|
-
id: args.options.userId,
|
|
81
|
-
output: 'json',
|
|
82
|
-
debug: args.options.debug,
|
|
83
|
-
verbose: args.options.verbose
|
|
84
|
-
};
|
|
85
|
-
return Cli_1.Cli
|
|
86
|
-
.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) })
|
|
87
|
-
.then((res) => {
|
|
88
|
-
if (this.verbose) {
|
|
89
|
-
logger.logToStderr(res.stderr);
|
|
73
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
if (!args.options.userId) {
|
|
75
|
+
return true;
|
|
90
76
|
}
|
|
91
|
-
return true;
|
|
92
|
-
}, (err) => {
|
|
93
77
|
if (this.verbose) {
|
|
94
|
-
logger.logToStderr(
|
|
78
|
+
logger.logToStderr(`Checking if user ${args.options.userId} exists...`);
|
|
79
|
+
}
|
|
80
|
+
const options = {
|
|
81
|
+
id: args.options.userId,
|
|
82
|
+
output: 'json',
|
|
83
|
+
debug: args.options.debug,
|
|
84
|
+
verbose: args.options.verbose
|
|
85
|
+
};
|
|
86
|
+
try {
|
|
87
|
+
const res = yield Cli_1.Cli.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
|
|
88
|
+
if (this.verbose) {
|
|
89
|
+
logger.logToStderr(res.stderr);
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
if (this.verbose) {
|
|
95
|
+
logger.logToStderr(err.stderr);
|
|
96
|
+
}
|
|
97
|
+
throw `User with ID ${args.options.userId} not found. Original error: ${err.error.message}`;
|
|
95
98
|
}
|
|
96
|
-
return Promise.reject(`User with ID ${args.options.userId} not found. Original error: ${err.error.message}`);
|
|
97
99
|
});
|
|
98
100
|
}
|
|
99
101
|
}
|
|
@@ -38,6 +38,9 @@ class TeamsAppRemoveCommand extends GraphCommand_1.default {
|
|
|
38
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
39
|
const { id: appId } = args.options;
|
|
40
40
|
const removeApp = () => __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
if (this.verbose) {
|
|
42
|
+
logger.logToStderr(`Removing app with ID ${args.options.id}`);
|
|
43
|
+
}
|
|
41
44
|
const requestOptions = {
|
|
42
45
|
url: `${this.resource}/v1.0/appCatalogs/teamsApps/${appId}`,
|
|
43
46
|
headers: {
|
|
@@ -37,6 +37,9 @@ class TeamsAppUninstallCommand extends GraphCommand_1.default {
|
|
|
37
37
|
commandAction(logger, args) {
|
|
38
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
39
39
|
const uninstallApp = () => __awaiter(this, void 0, void 0, function* () {
|
|
40
|
+
if (this.verbose) {
|
|
41
|
+
logger.logToStderr(`Uninstalling app with ID ${args.options.id} in team ${args.options.teamId}`);
|
|
42
|
+
}
|
|
40
43
|
const requestOptions = {
|
|
41
44
|
url: `${this.resource}/v1.0/teams/${args.options.teamId}/installedApps/${args.options.id}`,
|
|
42
45
|
headers: {
|
|
@@ -61,27 +61,26 @@ class TeamsAppUpdateCommand extends GraphCommand_1.default {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
getAppId(args) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
.get(requestOptions)
|
|
76
|
-
.then(response => {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
65
|
+
if (args.options.id) {
|
|
66
|
+
return args.options.id;
|
|
67
|
+
}
|
|
68
|
+
const requestOptions = {
|
|
69
|
+
url: `${this.resource}/v1.0/appCatalogs/teamsApps?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(args.options.name)}'`,
|
|
70
|
+
headers: {
|
|
71
|
+
accept: 'application/json;odata.metadata=none'
|
|
72
|
+
},
|
|
73
|
+
responseType: 'json'
|
|
74
|
+
};
|
|
75
|
+
const response = yield request_1.default.get(requestOptions);
|
|
77
76
|
const app = response.value[0];
|
|
78
77
|
if (!app) {
|
|
79
|
-
|
|
78
|
+
throw `The specified Teams app does not exist`;
|
|
80
79
|
}
|
|
81
80
|
if (response.value.length > 1) {
|
|
82
|
-
|
|
81
|
+
throw `Multiple Teams apps with name ${args.options.name} found. Please choose one of these ids: ${response.value.map(x => x.id).join(', ')}`;
|
|
83
82
|
}
|
|
84
|
-
return
|
|
83
|
+
return app.id;
|
|
85
84
|
});
|
|
86
85
|
}
|
|
87
86
|
}
|
|
@@ -35,55 +35,56 @@ class TeamsChannelAddCommand extends GraphCommand_1.default {
|
|
|
35
35
|
__classPrivateFieldGet(this, _TeamsChannelAddCommand_instances, "m", _TeamsChannelAddCommand_initOptionSets).call(this);
|
|
36
36
|
}
|
|
37
37
|
getTeamId(args) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
.get(teamRequestOptions)
|
|
50
|
-
.then(response => {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
if (args.options.teamId) {
|
|
40
|
+
return args.options.teamId;
|
|
41
|
+
}
|
|
42
|
+
const teamRequestOptions = {
|
|
43
|
+
url: `${this.resource}/v1.0/me/joinedTeams`,
|
|
44
|
+
headers: {
|
|
45
|
+
accept: 'application/json;odata.metadata=none'
|
|
46
|
+
},
|
|
47
|
+
responseType: 'json'
|
|
48
|
+
};
|
|
49
|
+
const response = yield request_1.default.get(teamRequestOptions);
|
|
51
50
|
const matchingTeams = response.value
|
|
52
51
|
.filter(team => team.displayName === args.options.teamName)
|
|
53
52
|
.map(team => team.id);
|
|
54
53
|
if (matchingTeams.length < 1) {
|
|
55
|
-
|
|
54
|
+
throw `The specified team does not exist in the Microsoft Teams`;
|
|
56
55
|
}
|
|
57
56
|
if (matchingTeams.length > 1) {
|
|
58
|
-
|
|
57
|
+
throw `Multiple Microsoft Teams teams with name ${args.options.teamName} found: ${matchingTeams.join(', ')}`;
|
|
59
58
|
}
|
|
60
|
-
return
|
|
59
|
+
return matchingTeams[0];
|
|
61
60
|
});
|
|
62
61
|
}
|
|
63
62
|
createChannel(args, teamId) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const requestOptions = {
|
|
65
|
+
url: `${this.resource}/v1.0/teams/${teamId}/channels`,
|
|
66
|
+
headers: {
|
|
67
|
+
accept: 'application/json;odata.metadata=none',
|
|
68
|
+
'content-type': 'application/json;odata=nometadata'
|
|
69
|
+
},
|
|
70
|
+
data: {
|
|
71
|
+
membershipType: args.options.type || 'standard',
|
|
72
|
+
displayName: args.options.name
|
|
73
|
+
},
|
|
74
|
+
responseType: 'json'
|
|
75
|
+
};
|
|
76
|
+
if (args.options.type === 'private' || args.options.type === 'shared') {
|
|
77
|
+
// Private and Shared channels must have at least 1 owner
|
|
78
|
+
requestOptions.data.members = [
|
|
79
|
+
{
|
|
80
|
+
'@odata.type': '#microsoft.graph.aadUserConversationMember',
|
|
81
|
+
'user@odata.bind': `https://graph.microsoft.com/v1.0/users('${args.options.owner}')`,
|
|
82
|
+
roles: ['owner']
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
}
|
|
86
|
+
return request_1.default.post(requestOptions);
|
|
87
|
+
});
|
|
87
88
|
}
|
|
88
89
|
commandAction(logger, args) {
|
|
89
90
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -38,40 +38,38 @@ class TeamsChannelGetCommand extends GraphCommand_1.default {
|
|
|
38
38
|
__classPrivateFieldGet(this, _TeamsChannelGetCommand_instances, "m", _TeamsChannelGetCommand_initOptionSets).call(this);
|
|
39
39
|
}
|
|
40
40
|
getTeamId(args) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
.getGroupByDisplayName(args.options.teamName)
|
|
46
|
-
.then(group => {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
if (args.options.teamId) {
|
|
43
|
+
return args.options.teamId;
|
|
44
|
+
}
|
|
45
|
+
const group = yield aadGroup_1.aadGroup.getGroupByDisplayName(args.options.teamName);
|
|
47
46
|
if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
|
|
48
|
-
|
|
47
|
+
throw `The specified team does not exist in the Microsoft Teams`;
|
|
49
48
|
}
|
|
50
49
|
return group.id;
|
|
51
50
|
});
|
|
52
51
|
}
|
|
53
52
|
getChannelId(args) {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
.get(channelRequestOptions)
|
|
69
|
-
.then(response => {
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
if (args.options.id) {
|
|
55
|
+
return args.options.id;
|
|
56
|
+
}
|
|
57
|
+
if (args.options.primary) {
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
const channelRequestOptions = {
|
|
61
|
+
url: `${this.resource}/v1.0/teams/${formatting_1.formatting.encodeQueryParameter(this.teamId)}/channels?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(args.options.name)}'`,
|
|
62
|
+
headers: {
|
|
63
|
+
accept: 'application/json;odata.metadata=none'
|
|
64
|
+
},
|
|
65
|
+
responseType: 'json'
|
|
66
|
+
};
|
|
67
|
+
const response = yield request_1.default.get(channelRequestOptions);
|
|
70
68
|
const channelItem = response.value[0];
|
|
71
69
|
if (!channelItem) {
|
|
72
|
-
|
|
70
|
+
throw `The specified channel does not exist in the Microsoft Teams team`;
|
|
73
71
|
}
|
|
74
|
-
return
|
|
72
|
+
return channelItem.id;
|
|
75
73
|
});
|
|
76
74
|
}
|
|
77
75
|
commandAction(logger, args) {
|
|
@@ -39,14 +39,13 @@ class TeamsChannelListCommand extends GraphCommand_1.default {
|
|
|
39
39
|
__classPrivateFieldGet(this, _TeamsChannelListCommand_instances, "m", _TeamsChannelListCommand_initOptionSets).call(this);
|
|
40
40
|
}
|
|
41
41
|
getTeamId(args) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.getGroupByDisplayName(args.options.teamName)
|
|
47
|
-
.then(group => {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
if (args.options.teamId) {
|
|
44
|
+
return args.options.teamId;
|
|
45
|
+
}
|
|
46
|
+
const group = yield aadGroup_1.aadGroup.getGroupByDisplayName(args.options.teamName);
|
|
48
47
|
if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
|
|
49
|
-
|
|
48
|
+
throw 'The specified team does not exist in the Microsoft Teams';
|
|
50
49
|
}
|
|
51
50
|
return group.id;
|
|
52
51
|
});
|
|
@@ -57,89 +57,90 @@ class TeamsChannelMemberAddCommand extends GraphCommand_1.default {
|
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
59
|
addUser(userId, endpoint, roles) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const requestOptions = {
|
|
62
|
+
url: endpoint,
|
|
63
|
+
headers: {
|
|
64
|
+
'content-type': 'application/json;odata=nometadata',
|
|
65
|
+
'accept': 'application/json;odata.metadata=none'
|
|
66
|
+
},
|
|
67
|
+
responseType: 'json',
|
|
68
|
+
data: {
|
|
69
|
+
'@odata.type': '#microsoft.graph.aadUserConversationMember',
|
|
70
|
+
'roles': roles,
|
|
71
|
+
'user@odata.bind': `${this.resource}/v1.0/users('${userId}')`
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
return request_1.default.post(requestOptions);
|
|
75
|
+
});
|
|
74
76
|
}
|
|
75
77
|
getTeamId(args) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
.getGroupByDisplayName(args.options.teamName)
|
|
81
|
-
.then(group => {
|
|
78
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
if (args.options.teamId) {
|
|
80
|
+
return args.options.teamId;
|
|
81
|
+
}
|
|
82
|
+
const group = yield aadGroup_1.aadGroup.getGroupByDisplayName(args.options.teamName);
|
|
82
83
|
if (group.resourceProvisioningOptions.indexOf('Team') === -1) {
|
|
83
|
-
|
|
84
|
+
throw 'The specified team does not exist in the Microsoft Teams';
|
|
84
85
|
}
|
|
85
86
|
return group.id;
|
|
86
87
|
});
|
|
87
88
|
}
|
|
88
89
|
getChannelId(teamId, args) {
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
.get(channelRequestOptions)
|
|
101
|
-
.then(response => {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
if (args.options.channelId) {
|
|
92
|
+
return args.options.channelId;
|
|
93
|
+
}
|
|
94
|
+
const channelRequestOptions = {
|
|
95
|
+
url: `${this.resource}/v1.0/teams/${formatting_1.formatting.encodeQueryParameter(teamId)}/channels?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(args.options.channelName)}'`,
|
|
96
|
+
headers: {
|
|
97
|
+
accept: 'application/json;odata.metadata=none'
|
|
98
|
+
},
|
|
99
|
+
responseType: 'json'
|
|
100
|
+
};
|
|
101
|
+
const response = yield request_1.default.get(channelRequestOptions);
|
|
102
102
|
const channelItem = response.value[0];
|
|
103
103
|
if (!channelItem) {
|
|
104
|
-
|
|
104
|
+
throw `The specified channel '${args.options.channelName}' does not exist in the Microsoft Teams team with ID '${teamId}'`;
|
|
105
105
|
}
|
|
106
106
|
if (channelItem.membershipType !== "private") {
|
|
107
|
-
|
|
107
|
+
throw `The specified channel is not a private channel`;
|
|
108
108
|
}
|
|
109
|
-
return
|
|
109
|
+
return channelItem.id;
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
getUserId(args) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
113
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
if (args.options.userId) {
|
|
115
|
+
return args.options.userId.split(',').map(u => u.trim());
|
|
116
|
+
}
|
|
117
|
+
const tasks = [];
|
|
118
|
+
const userDisplayNames = args.options.userDisplayName && args.options.userDisplayName.split(',').map(u => u.trim());
|
|
119
|
+
for (const userName of userDisplayNames) {
|
|
120
|
+
tasks.push(this.getSingleUser(userName));
|
|
121
|
+
}
|
|
122
|
+
return Promise.all(tasks);
|
|
123
|
+
});
|
|
122
124
|
}
|
|
123
125
|
getSingleUser(userDisplayName) {
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
.get(userRequestOptions)
|
|
133
|
-
.then(response => {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const userRequestOptions = {
|
|
128
|
+
url: `${this.resource}/v1.0/users?$filter=displayName eq '${formatting_1.formatting.encodeQueryParameter(userDisplayName)}'`,
|
|
129
|
+
headers: {
|
|
130
|
+
accept: 'application/json;odata.metadata=none'
|
|
131
|
+
},
|
|
132
|
+
responseType: 'json'
|
|
133
|
+
};
|
|
134
|
+
const response = yield request_1.default.get(userRequestOptions);
|
|
134
135
|
const userItem = response.value[0];
|
|
135
136
|
if (!userItem) {
|
|
136
|
-
|
|
137
|
+
throw `The specified user '${userDisplayName}' does not exist`;
|
|
137
138
|
}
|
|
138
139
|
if (response.value.length > 1) {
|
|
139
|
-
|
|
140
|
+
throw `Multiple users with display name '${userDisplayName}' found. Please disambiguate:${os.EOL}${response.value.map(x => `- ${x.id}`).join(os.EOL)}`;
|
|
140
141
|
}
|
|
141
|
-
return
|
|
142
|
-
}
|
|
142
|
+
return userItem.id;
|
|
143
|
+
});
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
_TeamsChannelMemberAddCommand_instances = new WeakSet(), _TeamsChannelMemberAddCommand_initTelemetry = function _TeamsChannelMemberAddCommand_initTelemetry() {
|