@pnp/cli-microsoft365 6.1.0-beta.825554 → 6.1.0-beta.fd67be0
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/dist/cli/Cli.js +48 -5
- package/dist/m365/planner/commands/tenant/tenant-settings-set.js +4 -7
- package/dist/m365/spfx/commands/project/project-doctor/doctor-1.16.1.js +23 -0
- package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN006006_CFG_PS_features.js +63 -0
- package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015009_FILE_config_sass_json.js +14 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.14.0.js +2 -0
- package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.16.1.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/listitem/listitem-list.js +2 -2
- package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +121 -0
- package/dist/m365/teams/commands/user/user-app-list.js +1 -1
- package/dist/m365/teams/commands.js +1 -0
- package/dist/utils/formatting.js +25 -0
- package/docs/docs/cmd/cli/cli-consent.md +20 -0
- package/docs/docs/cmd/cli/cli-doctor.md +50 -0
- package/docs/docs/cmd/cli/cli-issue.md +20 -0
- package/docs/docs/cmd/cli/cli-reconsent.md +20 -0
- package/docs/docs/cmd/cli/completion/completion-clink-update.md +5 -1
- package/docs/docs/cmd/cli/completion/completion-pwsh-setup.md +5 -1
- package/docs/docs/cmd/cli/completion/completion-pwsh-update.md +5 -1
- package/docs/docs/cmd/cli/completion/completion-sh-setup.md +21 -1
- package/docs/docs/cmd/cli/completion/completion-sh-update.md +4 -0
- package/docs/docs/cmd/cli/config/config-get.md +22 -0
- package/docs/docs/cmd/cli/config/config-reset.md +4 -0
- package/docs/docs/cmd/cli/config/config-set.md +4 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-add.md +4 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-get.md +38 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-list.md +38 -0
- package/docs/docs/cmd/search/externalconnection/externalconnection-remove.md +4 -0
- package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
- package/docs/docs/cmd/teams/meeting/meeting-attendancereport-list.md +69 -0
- package/docs/docs/cmd/teams/user/user-app-list.md +6 -0
- package/package.json +1 -1
package/dist/cli/Cli.js
CHANGED
|
@@ -22,6 +22,7 @@ const settingsNames_1 = require("../settingsNames");
|
|
|
22
22
|
const formatting_1 = require("../utils/formatting");
|
|
23
23
|
const fsUtil_1 = require("../utils/fsUtil");
|
|
24
24
|
const md_1 = require("../utils/md");
|
|
25
|
+
const validation_1 = require("../utils/validation");
|
|
25
26
|
const packageJSON = require('../../package.json');
|
|
26
27
|
class Cli {
|
|
27
28
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
@@ -83,9 +84,15 @@ class Cli {
|
|
|
83
84
|
// we have found a command to execute. Parse args again taking into
|
|
84
85
|
// account short and long options, option types and whether the command
|
|
85
86
|
// supports known and unknown options or not
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
try {
|
|
88
|
+
this.optionsFromArgs = {
|
|
89
|
+
options: this.getCommandOptionsFromArgs(rawArgs, this.commandToExecute)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (e) {
|
|
93
|
+
const optionsWithoutShorts = Cli.removeShortOptions({ options: parsedArgs });
|
|
94
|
+
return this.closeWithError(e.message, optionsWithoutShorts, false);
|
|
95
|
+
}
|
|
89
96
|
}
|
|
90
97
|
else {
|
|
91
98
|
this.optionsFromArgs = {
|
|
@@ -208,6 +215,11 @@ class Cli {
|
|
|
208
215
|
});
|
|
209
216
|
}
|
|
210
217
|
catch (err) {
|
|
218
|
+
// restoring the command and logger is done here instead of in a 'finally' because there were issues with the code coverage tool
|
|
219
|
+
// restore the original command name
|
|
220
|
+
cli.currentCommandName = parentCommandName;
|
|
221
|
+
// restore the original logger
|
|
222
|
+
request_1.default.logger = currentLogger;
|
|
211
223
|
throw {
|
|
212
224
|
error: err,
|
|
213
225
|
stderr: logErr.join(os.EOL)
|
|
@@ -339,11 +351,15 @@ class Cli {
|
|
|
339
351
|
const minimistOptions = {
|
|
340
352
|
alias: {}
|
|
341
353
|
};
|
|
354
|
+
let argsToParse = args;
|
|
342
355
|
if (commandInfo) {
|
|
343
356
|
const commandTypes = commandInfo.command.types;
|
|
344
357
|
if (commandTypes) {
|
|
345
358
|
minimistOptions.string = commandTypes.string;
|
|
346
|
-
|
|
359
|
+
// minimist will parse unused boolean options to 'false' (unused options => options that are not included in the args)
|
|
360
|
+
// But in the CLI booleans are nullable. They can can be true, false or undefined.
|
|
361
|
+
// For this reason we only pass boolean types that are actually used as arg.
|
|
362
|
+
minimistOptions.boolean = commandTypes.boolean.filter(optionName => args.some(arg => `--${optionName}` === arg || `-${optionName}` === arg));
|
|
347
363
|
}
|
|
348
364
|
minimistOptions.alias = {};
|
|
349
365
|
commandInfo.options.forEach(option => {
|
|
@@ -351,8 +367,35 @@ class Cli {
|
|
|
351
367
|
minimistOptions.alias[option.short] = option.long;
|
|
352
368
|
}
|
|
353
369
|
});
|
|
370
|
+
argsToParse = this.getRewrittenArgs(args, commandTypes);
|
|
354
371
|
}
|
|
355
|
-
return minimist(
|
|
372
|
+
return minimist(argsToParse, minimistOptions);
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Rewrites arguments (if necessary) before passing them into minimist.
|
|
376
|
+
* Currently only boolean values are checked and fixed.
|
|
377
|
+
* Args are only checked and rewritten if the option has been added to the 'types.boolean' array.
|
|
378
|
+
*/
|
|
379
|
+
getRewrittenArgs(args, commandTypes) {
|
|
380
|
+
const booleanTypes = commandTypes.boolean;
|
|
381
|
+
if (booleanTypes.length === 0) {
|
|
382
|
+
return args;
|
|
383
|
+
}
|
|
384
|
+
return args.map((arg, index, array) => {
|
|
385
|
+
if (arg.startsWith('-') || index === 0) {
|
|
386
|
+
return arg;
|
|
387
|
+
}
|
|
388
|
+
// This line checks if the current arg is a value that belongs to a boolean option.
|
|
389
|
+
if (booleanTypes.some(t => `--${t}` === array[index - 1] || `-${t}` === array[index - 1])) {
|
|
390
|
+
const rewrittenBoolean = formatting_1.formatting.rewriteBooleanValue(arg);
|
|
391
|
+
if (!validation_1.validation.isValidBoolean(rewrittenBoolean)) {
|
|
392
|
+
const optionName = array[index - 1];
|
|
393
|
+
throw new Error(`The value '${arg}' for option '${optionName}' is not a valid boolean`);
|
|
394
|
+
}
|
|
395
|
+
return rewrittenBoolean;
|
|
396
|
+
}
|
|
397
|
+
return arg;
|
|
398
|
+
});
|
|
356
399
|
}
|
|
357
400
|
static formatOutput(logStatement, options) {
|
|
358
401
|
if (logStatement instanceof Date) {
|
|
@@ -13,10 +13,9 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
13
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
14
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
15
|
};
|
|
16
|
-
var _PlannerTenantSettingsSetCommand_instances, _PlannerTenantSettingsSetCommand_initTelemetry, _PlannerTenantSettingsSetCommand_initOptions, _PlannerTenantSettingsSetCommand_initValidators;
|
|
16
|
+
var _PlannerTenantSettingsSetCommand_instances, _PlannerTenantSettingsSetCommand_initTelemetry, _PlannerTenantSettingsSetCommand_initOptions, _PlannerTenantSettingsSetCommand_initTypes, _PlannerTenantSettingsSetCommand_initValidators;
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
const request_1 = require("../../../../request");
|
|
19
|
-
const validation_1 = require("../../../../utils/validation");
|
|
20
19
|
const PlannerCommand_1 = require("../../../base/PlannerCommand");
|
|
21
20
|
const commands_1 = require("../../commands");
|
|
22
21
|
class PlannerTenantSettingsSetCommand extends PlannerCommand_1.default {
|
|
@@ -25,6 +24,7 @@ class PlannerTenantSettingsSetCommand extends PlannerCommand_1.default {
|
|
|
25
24
|
_PlannerTenantSettingsSetCommand_instances.add(this);
|
|
26
25
|
__classPrivateFieldGet(this, _PlannerTenantSettingsSetCommand_instances, "m", _PlannerTenantSettingsSetCommand_initTelemetry).call(this);
|
|
27
26
|
__classPrivateFieldGet(this, _PlannerTenantSettingsSetCommand_instances, "m", _PlannerTenantSettingsSetCommand_initOptions).call(this);
|
|
27
|
+
__classPrivateFieldGet(this, _PlannerTenantSettingsSetCommand_instances, "m", _PlannerTenantSettingsSetCommand_initTypes).call(this);
|
|
28
28
|
__classPrivateFieldGet(this, _PlannerTenantSettingsSetCommand_instances, "m", _PlannerTenantSettingsSetCommand_initValidators).call(this);
|
|
29
29
|
}
|
|
30
30
|
get name() {
|
|
@@ -92,6 +92,8 @@ _PlannerTenantSettingsSetCommand_instances = new WeakSet(), _PlannerTenantSettin
|
|
|
92
92
|
option: '--allowPlannerMobilePushNotifications [allowPlannerMobilePushNotifications]',
|
|
93
93
|
autocomplete: ['true', 'false']
|
|
94
94
|
});
|
|
95
|
+
}, _PlannerTenantSettingsSetCommand_initTypes = function _PlannerTenantSettingsSetCommand_initTypes() {
|
|
96
|
+
this.types.boolean.push('isPlannerAllowed', 'allowCalendarSharing', 'allowTenantMoveWithDataLoss', 'allowTenantMoveWithDataMigration', 'allowRosterCreation', 'allowPlannerMobilePushNotifications');
|
|
95
97
|
}, _PlannerTenantSettingsSetCommand_initValidators = function _PlannerTenantSettingsSetCommand_initValidators() {
|
|
96
98
|
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
97
99
|
const optionsArray = [
|
|
@@ -101,11 +103,6 @@ _PlannerTenantSettingsSetCommand_instances = new WeakSet(), _PlannerTenantSettin
|
|
|
101
103
|
if (optionsArray.every(o => typeof o === 'undefined')) {
|
|
102
104
|
return 'You must specify at least one option';
|
|
103
105
|
}
|
|
104
|
-
for (const option of optionsArray) {
|
|
105
|
-
if (typeof option !== 'undefined' && !validation_1.validation.isValidBoolean(option)) {
|
|
106
|
-
return `Value '${option}' is not a valid boolean`;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
106
|
return true;
|
|
110
107
|
}));
|
|
111
108
|
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const FN001008_DEP_react_1 = require("./rules/FN001008_DEP_react");
|
|
4
|
+
const FN001009_DEP_react_dom_1 = require("./rules/FN001009_DEP_react_dom");
|
|
5
|
+
const FN001022_DEP_office_ui_fabric_react_1 = require("./rules/FN001022_DEP_office_ui_fabric_react");
|
|
6
|
+
const FN002004_DEVDEP_gulp_1 = require("./rules/FN002004_DEVDEP_gulp");
|
|
7
|
+
const FN002007_DEVDEP_ajv_1 = require("./rules/FN002007_DEVDEP_ajv");
|
|
8
|
+
const FN002013_DEVDEP_types_webpack_env_1 = require("./rules/FN002013_DEVDEP_types_webpack_env");
|
|
9
|
+
const FN002015_DEVDEP_types_react_1 = require("./rules/FN002015_DEVDEP_types_react");
|
|
10
|
+
const FN002016_DEVDEP_types_react_dom_1 = require("./rules/FN002016_DEVDEP_types_react_dom");
|
|
11
|
+
const FN002019_DEVDEP_microsoft_rush_stack_compiler_1 = require("./rules/FN002019_DEVDEP_microsoft_rush_stack_compiler");
|
|
12
|
+
module.exports = [
|
|
13
|
+
new FN001008_DEP_react_1.FN001008_DEP_react('17'),
|
|
14
|
+
new FN001009_DEP_react_dom_1.FN001009_DEP_react_dom('17'),
|
|
15
|
+
new FN001022_DEP_office_ui_fabric_react_1.FN001022_DEP_office_ui_fabric_react('^7.199.1'),
|
|
16
|
+
new FN002004_DEVDEP_gulp_1.FN002004_DEVDEP_gulp('4.0.2'),
|
|
17
|
+
new FN002007_DEVDEP_ajv_1.FN002007_DEVDEP_ajv('^6.12.5'),
|
|
18
|
+
new FN002013_DEVDEP_types_webpack_env_1.FN002013_DEVDEP_types_webpack_env('~1.15.2'),
|
|
19
|
+
new FN002015_DEVDEP_types_react_1.FN002015_DEVDEP_types_react('17'),
|
|
20
|
+
new FN002016_DEVDEP_types_react_dom_1.FN002016_DEVDEP_types_react_dom('17'),
|
|
21
|
+
new FN002019_DEVDEP_microsoft_rush_stack_compiler_1.FN002019_DEVDEP_microsoft_rush_stack_compiler(['4.5'])
|
|
22
|
+
];
|
|
23
|
+
//# sourceMappingURL=doctor-1.16.1.js.map
|
|
@@ -62,7 +62,8 @@ class SpfxProjectDoctorCommand extends base_project_command_1.BaseProjectCommand
|
|
|
62
62
|
'1.14.0',
|
|
63
63
|
'1.15.0',
|
|
64
64
|
'1.15.2',
|
|
65
|
-
'1.16.0'
|
|
65
|
+
'1.16.0',
|
|
66
|
+
'1.16.1'
|
|
66
67
|
];
|
|
67
68
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
|
|
68
69
|
__classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FN006006_CFG_PS_features = void 0;
|
|
4
|
+
const JsonRule_1 = require("../../JsonRule");
|
|
5
|
+
class FN006006_CFG_PS_features extends JsonRule_1.JsonRule {
|
|
6
|
+
get id() {
|
|
7
|
+
return 'FN006006';
|
|
8
|
+
}
|
|
9
|
+
get title() {
|
|
10
|
+
return 'package-solution.json features';
|
|
11
|
+
}
|
|
12
|
+
get description() {
|
|
13
|
+
return `In package-solution.json add features for components`;
|
|
14
|
+
}
|
|
15
|
+
get resolution() {
|
|
16
|
+
return '';
|
|
17
|
+
}
|
|
18
|
+
get resolutionType() {
|
|
19
|
+
return 'json';
|
|
20
|
+
}
|
|
21
|
+
get severity() {
|
|
22
|
+
return 'Required';
|
|
23
|
+
}
|
|
24
|
+
get file() {
|
|
25
|
+
return './config/package-solution.json';
|
|
26
|
+
}
|
|
27
|
+
visit(project, findings) {
|
|
28
|
+
if (!project.packageSolutionJson ||
|
|
29
|
+
!project.packageSolutionJson.solution ||
|
|
30
|
+
// if project already has features defined, we don't need to do anything
|
|
31
|
+
(project.packageSolutionJson.solution.features && project.packageSolutionJson.solution.features.length > 0) ||
|
|
32
|
+
// if there are no components, we don't need to do anything
|
|
33
|
+
!project.manifests || project.manifests.length < 1) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const occurrences = [];
|
|
37
|
+
project.manifests.forEach(manifest => {
|
|
38
|
+
var _a, _b;
|
|
39
|
+
const resolution = {
|
|
40
|
+
solution: {
|
|
41
|
+
features: [
|
|
42
|
+
{
|
|
43
|
+
title: `${(_a = project.packageJson) === null || _a === void 0 ? void 0 : _a.name} ${manifest.alias} Feature`,
|
|
44
|
+
description: `The feature that activates ${manifest.alias} from the ${(_b = project.packageJson) === null || _b === void 0 ? void 0 : _b.name} solution.`,
|
|
45
|
+
id: manifest.id,
|
|
46
|
+
version: project.packageSolutionJson.solution.version,
|
|
47
|
+
componentIds: [manifest.id]
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const node = this.getAstNodeFromFile(project.packageSolutionJson, 'solution');
|
|
53
|
+
occurrences.push({
|
|
54
|
+
file: this.file,
|
|
55
|
+
resolution: JSON.stringify(resolution, null, 2),
|
|
56
|
+
position: this.getPositionFromNode(node)
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
this.addFindingWithOccurrences(occurrences, findings);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.FN006006_CFG_PS_features = FN006006_CFG_PS_features;
|
|
63
|
+
//# sourceMappingURL=FN006006_CFG_PS_features.js.map
|
package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015009_FILE_config_sass_json.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FN015009_FILE_config_sass_json = void 0;
|
|
4
|
+
const FileAddRemoveRule_1 = require("./FileAddRemoveRule");
|
|
5
|
+
class FN015009_FILE_config_sass_json extends FileAddRemoveRule_1.FileAddRemoveRule {
|
|
6
|
+
constructor(add, contents) {
|
|
7
|
+
super('./config/sass.json', add, contents);
|
|
8
|
+
}
|
|
9
|
+
get id() {
|
|
10
|
+
return 'FN015009';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.FN015009_FILE_config_sass_json = FN015009_FILE_config_sass_json;
|
|
14
|
+
//# sourceMappingURL=FN015009_FILE_config_sass_json.js.map
|
|
@@ -25,6 +25,7 @@ const FN002009_DEVDEP_microsoft_sp_tslint_rules_1 = require("./rules/FN002009_DE
|
|
|
25
25
|
const FN002019_DEVDEP_spfx_fast_serve_helpers_1 = require("./rules/FN002019_DEVDEP_spfx_fast_serve_helpers");
|
|
26
26
|
const FN006004_CFG_PS_developer_1 = require("./rules/FN006004_CFG_PS_developer");
|
|
27
27
|
const FN006005_CFG_PS_metadata_1 = require("./rules/FN006005_CFG_PS_metadata");
|
|
28
|
+
const FN006006_CFG_PS_features_1 = require("./rules/FN006006_CFG_PS_features");
|
|
28
29
|
const FN010001_YORC_version_1 = require("./rules/FN010001_YORC_version");
|
|
29
30
|
const FN014008_CODE_launch_hostedWorkbench_type_1 = require("./rules/FN014008_CODE_launch_hostedWorkbench_type");
|
|
30
31
|
module.exports = [
|
|
@@ -53,6 +54,7 @@ module.exports = [
|
|
|
53
54
|
new FN002019_DEVDEP_spfx_fast_serve_helpers_1.FN002019_DEVDEP_spfx_fast_serve_helpers('1.14.0'),
|
|
54
55
|
new FN006004_CFG_PS_developer_1.FN006004_CFG_PS_developer('1.14.0'),
|
|
55
56
|
new FN006005_CFG_PS_metadata_1.FN006005_CFG_PS_metadata(),
|
|
57
|
+
new FN006006_CFG_PS_features_1.FN006006_CFG_PS_features(),
|
|
56
58
|
new FN010001_YORC_version_1.FN010001_YORC_version('1.14.0'),
|
|
57
59
|
new FN014008_CODE_launch_hostedWorkbench_type_1.FN014008_CODE_launch_hostedWorkbench_type('pwa-chrome')
|
|
58
60
|
];
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const FN001001_DEP_microsoft_sp_core_library_1 = require("./rules/FN001001_DEP_microsoft_sp_core_library");
|
|
4
|
+
const FN001002_DEP_microsoft_sp_lodash_subset_1 = require("./rules/FN001002_DEP_microsoft_sp_lodash_subset");
|
|
5
|
+
const FN001003_DEP_microsoft_sp_office_ui_fabric_core_1 = require("./rules/FN001003_DEP_microsoft_sp_office_ui_fabric_core");
|
|
6
|
+
const FN001004_DEP_microsoft_sp_webpart_base_1 = require("./rules/FN001004_DEP_microsoft_sp_webpart_base");
|
|
7
|
+
const FN001011_DEP_microsoft_sp_dialog_1 = require("./rules/FN001011_DEP_microsoft_sp_dialog");
|
|
8
|
+
const FN001012_DEP_microsoft_sp_application_base_1 = require("./rules/FN001012_DEP_microsoft_sp_application_base");
|
|
9
|
+
const FN001013_DEP_microsoft_decorators_1 = require("./rules/FN001013_DEP_microsoft_decorators");
|
|
10
|
+
const FN001014_DEP_microsoft_sp_listview_extensibility_1 = require("./rules/FN001014_DEP_microsoft_sp_listview_extensibility");
|
|
11
|
+
const FN001021_DEP_microsoft_sp_property_pane_1 = require("./rules/FN001021_DEP_microsoft_sp_property_pane");
|
|
12
|
+
const FN001023_DEP_microsoft_sp_component_base_1 = require("./rules/FN001023_DEP_microsoft_sp_component_base");
|
|
13
|
+
const FN001024_DEP_microsoft_sp_diagnostics_1 = require("./rules/FN001024_DEP_microsoft_sp_diagnostics");
|
|
14
|
+
const FN001025_DEP_microsoft_sp_dynamic_data_1 = require("./rules/FN001025_DEP_microsoft_sp_dynamic_data");
|
|
15
|
+
const FN001026_DEP_microsoft_sp_extension_base_1 = require("./rules/FN001026_DEP_microsoft_sp_extension_base");
|
|
16
|
+
const FN001027_DEP_microsoft_sp_http_1 = require("./rules/FN001027_DEP_microsoft_sp_http");
|
|
17
|
+
const FN001028_DEP_microsoft_sp_list_subscription_1 = require("./rules/FN001028_DEP_microsoft_sp_list_subscription");
|
|
18
|
+
const FN001029_DEP_microsoft_sp_loader_1 = require("./rules/FN001029_DEP_microsoft_sp_loader");
|
|
19
|
+
const FN001030_DEP_microsoft_sp_module_interfaces_1 = require("./rules/FN001030_DEP_microsoft_sp_module_interfaces");
|
|
20
|
+
const FN001031_DEP_microsoft_sp_odata_types_1 = require("./rules/FN001031_DEP_microsoft_sp_odata_types");
|
|
21
|
+
const FN001032_DEP_microsoft_sp_page_context_1 = require("./rules/FN001032_DEP_microsoft_sp_page_context");
|
|
22
|
+
const FN001034_DEP_microsoft_sp_adaptive_card_extension_base_1 = require("./rules/FN001034_DEP_microsoft_sp_adaptive_card_extension_base");
|
|
23
|
+
const FN002001_DEVDEP_microsoft_sp_build_web_1 = require("./rules/FN002001_DEVDEP_microsoft_sp_build_web");
|
|
24
|
+
const FN002002_DEVDEP_microsoft_sp_module_interfaces_1 = require("./rules/FN002002_DEVDEP_microsoft_sp_module_interfaces");
|
|
25
|
+
const FN002022_DEVDEP_microsoft_eslint_plugin_spfx_1 = require("./rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx");
|
|
26
|
+
const FN002023_DEVDEP_microsoft_eslint_config_spfx_1 = require("./rules/FN002023_DEVDEP_microsoft_eslint_config_spfx");
|
|
27
|
+
const FN010001_YORC_version_1 = require("./rules/FN010001_YORC_version");
|
|
28
|
+
const FN015009_FILE_config_sass_json_1 = require("./rules/FN015009_FILE_config_sass_json");
|
|
29
|
+
module.exports = [
|
|
30
|
+
new FN001001_DEP_microsoft_sp_core_library_1.FN001001_DEP_microsoft_sp_core_library('1.16.1'),
|
|
31
|
+
new FN001002_DEP_microsoft_sp_lodash_subset_1.FN001002_DEP_microsoft_sp_lodash_subset('1.16.1'),
|
|
32
|
+
new FN001003_DEP_microsoft_sp_office_ui_fabric_core_1.FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.16.1'),
|
|
33
|
+
new FN001004_DEP_microsoft_sp_webpart_base_1.FN001004_DEP_microsoft_sp_webpart_base('1.16.1'),
|
|
34
|
+
new FN001011_DEP_microsoft_sp_dialog_1.FN001011_DEP_microsoft_sp_dialog('1.16.1'),
|
|
35
|
+
new FN001012_DEP_microsoft_sp_application_base_1.FN001012_DEP_microsoft_sp_application_base('1.16.1'),
|
|
36
|
+
new FN001014_DEP_microsoft_sp_listview_extensibility_1.FN001014_DEP_microsoft_sp_listview_extensibility('1.16.1'),
|
|
37
|
+
new FN001021_DEP_microsoft_sp_property_pane_1.FN001021_DEP_microsoft_sp_property_pane('1.16.1'),
|
|
38
|
+
new FN001023_DEP_microsoft_sp_component_base_1.FN001023_DEP_microsoft_sp_component_base('1.16.1'),
|
|
39
|
+
new FN001024_DEP_microsoft_sp_diagnostics_1.FN001024_DEP_microsoft_sp_diagnostics('1.16.1'),
|
|
40
|
+
new FN001025_DEP_microsoft_sp_dynamic_data_1.FN001025_DEP_microsoft_sp_dynamic_data('1.16.1'),
|
|
41
|
+
new FN001026_DEP_microsoft_sp_extension_base_1.FN001026_DEP_microsoft_sp_extension_base('1.16.1'),
|
|
42
|
+
new FN001027_DEP_microsoft_sp_http_1.FN001027_DEP_microsoft_sp_http('1.16.1'),
|
|
43
|
+
new FN001028_DEP_microsoft_sp_list_subscription_1.FN001028_DEP_microsoft_sp_list_subscription('1.16.1'),
|
|
44
|
+
new FN001029_DEP_microsoft_sp_loader_1.FN001029_DEP_microsoft_sp_loader('1.16.1'),
|
|
45
|
+
new FN001030_DEP_microsoft_sp_module_interfaces_1.FN001030_DEP_microsoft_sp_module_interfaces('1.16.1'),
|
|
46
|
+
new FN001031_DEP_microsoft_sp_odata_types_1.FN001031_DEP_microsoft_sp_odata_types('1.16.1'),
|
|
47
|
+
new FN001032_DEP_microsoft_sp_page_context_1.FN001032_DEP_microsoft_sp_page_context('1.16.1'),
|
|
48
|
+
new FN001013_DEP_microsoft_decorators_1.FN001013_DEP_microsoft_decorators('1.16.1'),
|
|
49
|
+
new FN001034_DEP_microsoft_sp_adaptive_card_extension_base_1.FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.16.1'),
|
|
50
|
+
new FN002022_DEVDEP_microsoft_eslint_plugin_spfx_1.FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.16.1'),
|
|
51
|
+
new FN002023_DEVDEP_microsoft_eslint_config_spfx_1.FN002023_DEVDEP_microsoft_eslint_config_spfx('1.16.1'),
|
|
52
|
+
new FN002001_DEVDEP_microsoft_sp_build_web_1.FN002001_DEVDEP_microsoft_sp_build_web('1.16.1'),
|
|
53
|
+
new FN002002_DEVDEP_microsoft_sp_module_interfaces_1.FN002002_DEVDEP_microsoft_sp_module_interfaces('1.16.1'),
|
|
54
|
+
new FN010001_YORC_version_1.FN010001_YORC_version('1.16.1'),
|
|
55
|
+
new FN015009_FILE_config_sass_json_1.FN015009_FILE_config_sass_json(true, `{
|
|
56
|
+
"$schema": "https://developer.microsoft.com/json-schemas/core-build/sass.schema.json"
|
|
57
|
+
}`)
|
|
58
|
+
];
|
|
59
|
+
//# sourceMappingURL=upgrade-1.16.1.js.map
|
|
@@ -64,7 +64,8 @@ class SpfxProjectUpgradeCommand extends base_project_command_1.BaseProjectComman
|
|
|
64
64
|
'1.14.0',
|
|
65
65
|
'1.15.0',
|
|
66
66
|
'1.15.2',
|
|
67
|
-
'1.16.0'
|
|
67
|
+
'1.16.0',
|
|
68
|
+
'1.16.1'
|
|
68
69
|
];
|
|
69
70
|
__classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
|
|
70
71
|
__classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
|
|
@@ -443,6 +443,21 @@ class SpfxDoctorCommand extends AnonymousCommand_1.default {
|
|
|
443
443
|
range: '^4',
|
|
444
444
|
fix: 'npm i -g yo@4'
|
|
445
445
|
}
|
|
446
|
+
},
|
|
447
|
+
'1.16.1': {
|
|
448
|
+
gulpCli: {
|
|
449
|
+
range: '^1 || ^2',
|
|
450
|
+
fix: 'npm i -g gulp-cli@2'
|
|
451
|
+
},
|
|
452
|
+
node: {
|
|
453
|
+
range: '>=16.13.0 <17.0.0',
|
|
454
|
+
fix: 'Install Node.js >=16.13.0 <17.0.0'
|
|
455
|
+
},
|
|
456
|
+
sp: SharePointVersion.SPO,
|
|
457
|
+
yo: {
|
|
458
|
+
range: '^4',
|
|
459
|
+
fix: 'npm i -g yo@4'
|
|
460
|
+
}
|
|
446
461
|
}
|
|
447
462
|
};
|
|
448
463
|
__classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initTelemetry).call(this);
|
|
@@ -68,7 +68,7 @@ class SpoListItemListCommand extends SpoCommand_1.default {
|
|
|
68
68
|
let res;
|
|
69
69
|
if (args.options.pageNumber && Number(args.options.pageNumber) > 0) {
|
|
70
70
|
const rowLimit = `$top=${Number(args.options.pageSize) * Number(args.options.pageNumber)}`;
|
|
71
|
-
const filter = args.options.filter ? `$filter=${
|
|
71
|
+
const filter = args.options.filter ? `$filter=${encodeURIComponent(args.options.filter)}` : ``;
|
|
72
72
|
const fieldSelect = `?$select=Id&${rowLimit}&${filter}`;
|
|
73
73
|
const requestOptions = {
|
|
74
74
|
url: `${requestUrl}/items${fieldSelect}`,
|
|
@@ -83,7 +83,7 @@ class SpoListItemListCommand extends SpoCommand_1.default {
|
|
|
83
83
|
const skipTokenId = (res && res.value && res.value.length && res.value[res.value.length - 1]) ? res.value[res.value.length - 1].Id : 0;
|
|
84
84
|
const skipToken = (args.options.pageNumber && Number(args.options.pageNumber) > 0 && skipTokenId > 0) ? `$skiptoken=Paged=TRUE%26p_ID=${res.value[res.value.length - 1].Id}` : ``;
|
|
85
85
|
const rowLimit = args.options.pageSize ? `$top=${args.options.pageSize}` : ``;
|
|
86
|
-
const filter = args.options.filter ? `$filter=${
|
|
86
|
+
const filter = args.options.filter ? `$filter=${encodeURIComponent(args.options.filter)}` : ``;
|
|
87
87
|
const fieldExpand = expandFieldsArray.length > 0 ? `&$expand=${expandFieldsArray.join(",")}` : ``;
|
|
88
88
|
const fieldSelect = fieldsArray.length > 0 ?
|
|
89
89
|
`?$select=${formatting_1.formatting.encodeQueryParameter(fieldsArray.join(","))}${fieldExpand}&${rowLimit}&${skipToken}&${filter}` :
|
|
@@ -0,0 +1,121 @@
|
|
|
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 _TeamsMeetingAttendancereportListCommand_instances, _TeamsMeetingAttendancereportListCommand_initTelemetry, _TeamsMeetingAttendancereportListCommand_initOptions, _TeamsMeetingAttendancereportListCommand_initValidators;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const Auth_1 = require("../../../../Auth");
|
|
19
|
+
const Cli_1 = require("../../../../cli/Cli");
|
|
20
|
+
const GraphCommand_1 = require("../../../base/GraphCommand");
|
|
21
|
+
const commands_1 = require("../../commands");
|
|
22
|
+
const odata_1 = require("../../../../utils/odata");
|
|
23
|
+
const validation_1 = require("../../../../utils/validation");
|
|
24
|
+
const AadUserGetCommand = require("../../../aad/commands/user/user-get");
|
|
25
|
+
const accessToken_1 = require("../../../../utils/accessToken");
|
|
26
|
+
class TeamsMeetingAttendancereportListCommand extends GraphCommand_1.default {
|
|
27
|
+
constructor() {
|
|
28
|
+
super();
|
|
29
|
+
_TeamsMeetingAttendancereportListCommand_instances.add(this);
|
|
30
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportListCommand_instances, "m", _TeamsMeetingAttendancereportListCommand_initTelemetry).call(this);
|
|
31
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportListCommand_instances, "m", _TeamsMeetingAttendancereportListCommand_initOptions).call(this);
|
|
32
|
+
__classPrivateFieldGet(this, _TeamsMeetingAttendancereportListCommand_instances, "m", _TeamsMeetingAttendancereportListCommand_initValidators).call(this);
|
|
33
|
+
}
|
|
34
|
+
get name() {
|
|
35
|
+
return commands_1.default.MEETING_ATTENDANCEREPORT_LIST;
|
|
36
|
+
}
|
|
37
|
+
get description() {
|
|
38
|
+
return 'Lists all attendance reports for a given meeting';
|
|
39
|
+
}
|
|
40
|
+
defaultProperties() {
|
|
41
|
+
return ['id', 'totalParticipantCount'];
|
|
42
|
+
}
|
|
43
|
+
commandAction(logger, args) {
|
|
44
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
const isAppOnlyAuth = accessToken_1.accessToken.isAppOnlyAccessToken(Auth_1.default.service.accessTokens[this.resource].accessToken);
|
|
46
|
+
if (isAppOnlyAuth && !args.options.userId && !args.options.userName && !args.options.email) {
|
|
47
|
+
this.handleError(`The option 'userId', 'userName' or 'email' is required when retrieving meeting attendance report using app only permissions`);
|
|
48
|
+
}
|
|
49
|
+
else if (!isAppOnlyAuth && (args.options.userId || args.options.userName || args.options.email)) {
|
|
50
|
+
this.handleError(`The options 'userId', 'userName' and 'email' cannot be used when retrieving meeting attendance reports using delegated permissions`);
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
if (this.verbose) {
|
|
54
|
+
logger.logToStderr(`Retrieving attendance report for ${isAppOnlyAuth ? 'specific user' : 'currently logged in user'}`);
|
|
55
|
+
}
|
|
56
|
+
let requestUrl = `${this.resource}/v1.0/`;
|
|
57
|
+
if (isAppOnlyAuth) {
|
|
58
|
+
requestUrl += 'users/';
|
|
59
|
+
if (args.options.userId) {
|
|
60
|
+
requestUrl += args.options.userId;
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const userId = yield this.getUserId(args.options.userName, args.options.email);
|
|
64
|
+
requestUrl += userId;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
requestUrl += `me`;
|
|
69
|
+
}
|
|
70
|
+
requestUrl += `/onlineMeetings/${args.options.meetingId}/attendanceReports`;
|
|
71
|
+
const res = yield odata_1.odata.getAllItems(requestUrl);
|
|
72
|
+
logger.log(res);
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
this.handleRejectedODataJsonPromise(err);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
getUserId(userName, email) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
const options = {
|
|
82
|
+
email: email,
|
|
83
|
+
userName: userName,
|
|
84
|
+
output: 'json',
|
|
85
|
+
debug: this.debug,
|
|
86
|
+
verbose: this.verbose
|
|
87
|
+
};
|
|
88
|
+
const output = yield Cli_1.Cli.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
|
|
89
|
+
const getUserOutput = JSON.parse(output.stdout);
|
|
90
|
+
return getUserOutput.id;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_TeamsMeetingAttendancereportListCommand_instances = new WeakSet(), _TeamsMeetingAttendancereportListCommand_initTelemetry = function _TeamsMeetingAttendancereportListCommand_initTelemetry() {
|
|
95
|
+
this.telemetry.push((args) => {
|
|
96
|
+
Object.assign(this.telemetryProperties, {
|
|
97
|
+
userId: typeof args.options.userId !== 'undefined',
|
|
98
|
+
userName: typeof args.options.userName !== 'undefined',
|
|
99
|
+
email: typeof args.options.email !== 'undefined'
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}, _TeamsMeetingAttendancereportListCommand_initOptions = function _TeamsMeetingAttendancereportListCommand_initOptions() {
|
|
103
|
+
this.options.unshift({
|
|
104
|
+
option: '-u, --userId [userId]'
|
|
105
|
+
}, {
|
|
106
|
+
option: '-n, --userName [userName]'
|
|
107
|
+
}, {
|
|
108
|
+
option: '--email [email]'
|
|
109
|
+
}, {
|
|
110
|
+
option: '-m, --meetingId <meetingId>'
|
|
111
|
+
});
|
|
112
|
+
}, _TeamsMeetingAttendancereportListCommand_initValidators = function _TeamsMeetingAttendancereportListCommand_initValidators() {
|
|
113
|
+
this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
if (args.options.userId && !validation_1.validation.isValidGuid(args.options.userId)) {
|
|
115
|
+
return `${args.options.userId} is not a valid Guid`;
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}));
|
|
119
|
+
};
|
|
120
|
+
module.exports = new TeamsMeetingAttendancereportListCommand();
|
|
121
|
+
//# sourceMappingURL=meeting-attendancereport-list.js.map
|
|
@@ -40,7 +40,7 @@ class TeamsUserAppListCommand extends GraphCommand_1.default {
|
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
try {
|
|
42
42
|
const userId = (yield this.getUserId(args)).value;
|
|
43
|
-
const endpoint = `${this.resource}/v1.0/users/${formatting_1.formatting.encodeQueryParameter(userId)}/teamwork/installedApps?$expand=teamsAppDefinition`;
|
|
43
|
+
const endpoint = `${this.resource}/v1.0/users/${formatting_1.formatting.encodeQueryParameter(userId)}/teamwork/installedApps?$expand=teamsAppDefinition,teamsApp`;
|
|
44
44
|
const items = yield odata_1.odata.getAllItems(endpoint);
|
|
45
45
|
items.forEach(i => {
|
|
46
46
|
const userAppId = Buffer.from(i.id, 'base64').toString('ascii');
|
|
@@ -27,6 +27,7 @@ exports.default = {
|
|
|
27
27
|
FUNSETTINGS_SET: `${prefix} funsettings set`,
|
|
28
28
|
GUESTSETTINGS_LIST: `${prefix} guestsettings list`,
|
|
29
29
|
GUESTSETTINGS_SET: `${prefix} guestsettings set`,
|
|
30
|
+
MEETING_ATTENDANCEREPORT_LIST: `${prefix} meeting attendancereport list`,
|
|
30
31
|
MEETING_GET: `${prefix} meeting get`,
|
|
31
32
|
MEETING_LIST: `${prefix} meeting list`,
|
|
32
33
|
MEMBERSETTINGS_LIST: `${prefix} membersettings list`,
|
package/dist/utils/formatting.js
CHANGED
|
@@ -85,6 +85,31 @@ exports.formatting = {
|
|
|
85
85
|
.replace(/:/g, '%3A')
|
|
86
86
|
.replace(/@/g, '%40')
|
|
87
87
|
.replace(/#/g, '%23');
|
|
88
|
+
},
|
|
89
|
+
/**
|
|
90
|
+
* Rewrites boolean values according to the definition:
|
|
91
|
+
* Booleans are case-insensitive, and are represented by the following values.
|
|
92
|
+
* True: 1, yes, true, on
|
|
93
|
+
* False: 0, no, false, off
|
|
94
|
+
* @value Stringified Boolean value to rewrite
|
|
95
|
+
* @returns A stringified boolean with the value 'true' or 'false'. Returns the original value if it does not comply with the definition.
|
|
96
|
+
*/
|
|
97
|
+
rewriteBooleanValue(value) {
|
|
98
|
+
const argValue = value.toLowerCase();
|
|
99
|
+
switch (argValue) {
|
|
100
|
+
case '1':
|
|
101
|
+
case 'true':
|
|
102
|
+
case 'yes':
|
|
103
|
+
case 'on':
|
|
104
|
+
return 'true';
|
|
105
|
+
case '0':
|
|
106
|
+
case 'false':
|
|
107
|
+
case 'no':
|
|
108
|
+
case 'off':
|
|
109
|
+
return 'false';
|
|
110
|
+
default:
|
|
111
|
+
return value;
|
|
112
|
+
}
|
|
88
113
|
}
|
|
89
114
|
};
|
|
90
115
|
//# sourceMappingURL=formatting.js.map
|
|
@@ -30,3 +30,23 @@ Consent permissions to the Yammer API
|
|
|
30
30
|
```sh
|
|
31
31
|
m365 cli consent --service yammer
|
|
32
32
|
```
|
|
33
|
+
|
|
34
|
+
## Response
|
|
35
|
+
|
|
36
|
+
=== "JSON"
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
"To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
=== "Text"
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
=== "CSV"
|
|
49
|
+
|
|
50
|
+
```csv
|
|
51
|
+
To consent permissions for executing yammer commands, navigate in your web browser to https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&scope=https%3A%2F%2Fapi.yammer.com%2Fuser_impersonation
|
|
52
|
+
```
|
|
@@ -23,3 +23,53 @@ Retrieve diagnostic information
|
|
|
23
23
|
```sh
|
|
24
24
|
m365 cli doctor
|
|
25
25
|
```
|
|
26
|
+
|
|
27
|
+
## Response
|
|
28
|
+
|
|
29
|
+
=== "JSON"
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"os": {
|
|
34
|
+
"platform": "win32",
|
|
35
|
+
"version": "Windows 10 Pro",
|
|
36
|
+
"release": "10.0.19045"
|
|
37
|
+
},
|
|
38
|
+
"cliVersion": "6.1.0",
|
|
39
|
+
"nodeVersion": "v16.13.0",
|
|
40
|
+
"cliAadAppId": "31359c7f-bd7e-475c-86db-fdb8c937548e",
|
|
41
|
+
"cliAadAppTenant": "common",
|
|
42
|
+
"authMode": "DeviceCode",
|
|
43
|
+
"cliEnvironment": "",
|
|
44
|
+
"cliConfig": {
|
|
45
|
+
"output": "json",
|
|
46
|
+
"showHelpOnFailure": false
|
|
47
|
+
},
|
|
48
|
+
"roles": [],
|
|
49
|
+
"scopes": [
|
|
50
|
+
"AllSites.FullControl"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
=== "Text"
|
|
56
|
+
|
|
57
|
+
```text
|
|
58
|
+
authMode : DeviceCode
|
|
59
|
+
cliAadAppId : 31359c7f-bd7e-475c-86db-fdb8c937548e
|
|
60
|
+
cliAadAppTenant: common
|
|
61
|
+
cliConfig : {"output":"json","showHelpOnFailure":false}
|
|
62
|
+
cliEnvironment :
|
|
63
|
+
cliVersion : 6.1.0
|
|
64
|
+
nodeVersion : v16.13.0
|
|
65
|
+
os : {"platform":"win32","version":"Windows 10 Pro","release":"10.0.19045"}
|
|
66
|
+
roles : []
|
|
67
|
+
scopes : ["AllSites.FullControl"]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
=== "CSV"
|
|
71
|
+
|
|
72
|
+
```csv
|
|
73
|
+
os,cliVersion,nodeVersion,cliAadAppId,cliAadAppTenant,authMode,cliEnvironment,cliConfig,roles,scopes
|
|
74
|
+
"{""platform"":""win32"",""version"":""Windows 10 Pro"",""release"":""10.0.19045""}",6.1.0,v16.13.0,31359c7f-bd7e-475c-86db-fdb8c937548e,common,DeviceCode,,"{""output"":""json"",""showHelpOnFailure"":false}",[],"[""AllSites.FullControl""]"
|
|
75
|
+
```
|
|
@@ -32,3 +32,23 @@ Suggest a new command
|
|
|
32
32
|
```sh
|
|
33
33
|
m365 cli issue --type command
|
|
34
34
|
```
|
|
35
|
+
|
|
36
|
+
## Response
|
|
37
|
+
|
|
38
|
+
=== "JSON"
|
|
39
|
+
|
|
40
|
+
```json
|
|
41
|
+
"https://aka.ms/cli-m365/new-command"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
=== "Text"
|
|
45
|
+
|
|
46
|
+
```text
|
|
47
|
+
https://aka.ms/cli-m365/new-command
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
=== "CSV"
|
|
51
|
+
|
|
52
|
+
```csv
|
|
53
|
+
https://aka.ms/cli-m365/new-command
|
|
54
|
+
```
|
|
@@ -20,6 +20,26 @@ Get the URL to open in the browser to re-consent CLI for Microsoft 365 permissio
|
|
|
20
20
|
m365 cli reconsent
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Response
|
|
24
|
+
|
|
25
|
+
=== "JSON"
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
"To re-consent the PnP Microsoft 365 Management Shell Azure AD application navigate in your web browser to https://login.microsoftonline.com/common/oauth2/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&prompt=admin_consent"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
=== "Text"
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
To re-consent the PnP Microsoft 365 Management Shell Azure AD application navigate in your web browser to https://login.microsoftonline.com/common/oauth2/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&prompt=admin_consent
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
=== "CSV"
|
|
38
|
+
|
|
39
|
+
```csv
|
|
40
|
+
To re-consent the PnP Microsoft 365 Management Shell Azure AD application navigate in your web browser to https://login.microsoftonline.com/common/oauth2/authorize?client_id=31359c7f-bd7e-475c-86db-fdb8c937548e&response_type=code&prompt=admin_consent
|
|
41
|
+
```
|
|
42
|
+
|
|
23
43
|
## More information
|
|
24
44
|
|
|
25
45
|
- Re-consent the PnP Microsoft 365 Management Shell Azure AD application: [https://pnp.github.io/cli-microsoft365/user-guide/connecting-office-365/#re-consent-the-pnp-office-365-management-shell-azure-ad-application](https://pnp.github.io/cli-microsoft365/user-guide/connecting-office-365/#re-consent-the-pnp-office-365-management-shell-azure-ad-application)
|
|
@@ -24,9 +24,13 @@ This commands updates the list of commands and their options used by command com
|
|
|
24
24
|
Write the list of commands for Clink (cmder) command completion to a file named `m365.lua` in the current directory
|
|
25
25
|
|
|
26
26
|
```powershell
|
|
27
|
-
cli completion clink update > m365.lua
|
|
27
|
+
m365 cli completion clink update > m365.lua
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Response
|
|
31
|
+
|
|
32
|
+
The command won't return a response on success.
|
|
33
|
+
|
|
30
34
|
## More information
|
|
31
35
|
|
|
32
36
|
- Command completion: [https://pnp.github.io/cli-microsoft365/user-guide/completion/](https://pnp.github.io/cli-microsoft365/user-guide/completion/)
|
|
@@ -26,9 +26,13 @@ If the specified profile path doesn't exist, the CLI will try to create it.
|
|
|
26
26
|
Set up command completion for PowerShell using the profile from the profile variable
|
|
27
27
|
|
|
28
28
|
```powershell
|
|
29
|
-
cli completion pwsh setup --profile $profile
|
|
29
|
+
m365 cli completion pwsh setup --profile $profile
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
## Response
|
|
33
|
+
|
|
34
|
+
The command won't return a response on success.
|
|
35
|
+
|
|
32
36
|
## More information
|
|
33
37
|
|
|
34
38
|
- Command completion: [https://pnp.github.io/cli-microsoft365/user-guide/completion/](https://pnp.github.io/cli-microsoft365/user-guide/completion/)
|
|
@@ -21,9 +21,13 @@ This commands updates the list of commands and their options used by command com
|
|
|
21
21
|
Update list of commands for PowerShell command completion
|
|
22
22
|
|
|
23
23
|
```powershell
|
|
24
|
-
cli completion pwsh update
|
|
24
|
+
m365 cli completion pwsh update
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
## Response
|
|
28
|
+
|
|
29
|
+
The command won't return a response on success.
|
|
30
|
+
|
|
27
31
|
## More information
|
|
28
32
|
|
|
29
33
|
- Command completion: [https://pnp.github.io/cli-microsoft365/user-guide/completion/](https://pnp.github.io/cli-microsoft365/user-guide/completion/)
|
|
@@ -17,9 +17,29 @@ m365 cli completion sh setup [options]
|
|
|
17
17
|
Set up command completion for Zsh, Bash or Fish
|
|
18
18
|
|
|
19
19
|
```powershell
|
|
20
|
-
cli completion sh setup
|
|
20
|
+
m365 cli completion sh setup
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Response
|
|
24
|
+
|
|
25
|
+
=== "JSON"
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
"Command completion successfully registered. Restart your shell to load the completion"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
=== "Text"
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
Command completion successfully registered. Restart your shell to load the completion
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
=== "CSV"
|
|
38
|
+
|
|
39
|
+
```csv
|
|
40
|
+
Command completion successfully registered. Restart your shell to load the completion
|
|
41
|
+
```
|
|
42
|
+
|
|
23
43
|
## More information
|
|
24
44
|
|
|
25
45
|
- Command completion: [https://pnp.github.io/cli-microsoft365/user-guide/completion/](https://pnp.github.io/cli-microsoft365/user-guide/completion/)
|
|
@@ -24,6 +24,10 @@ Update list of commands for Zsh, Bash and Fish command completion
|
|
|
24
24
|
m365 cli completion sh update
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
## Response
|
|
28
|
+
|
|
29
|
+
The command won't return a response on success.
|
|
30
|
+
|
|
27
31
|
## More information
|
|
28
32
|
|
|
29
33
|
- Command completion: [https://pnp.github.io/cli-microsoft365/user-guide/completion/](https://pnp.github.io/cli-microsoft365/user-guide/completion/)
|
|
@@ -29,6 +29,28 @@ Get the output configured for CLI for Microsoft 365
|
|
|
29
29
|
m365 cli config get --key output
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
+
## Response
|
|
33
|
+
|
|
34
|
+
When retrieving the `output` key, responses will look like this:
|
|
35
|
+
|
|
36
|
+
=== "JSON"
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
"json"
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
=== "Text"
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
=== "CSV"
|
|
49
|
+
|
|
50
|
+
```csv
|
|
51
|
+
json
|
|
52
|
+
```
|
|
53
|
+
|
|
32
54
|
## More information
|
|
33
55
|
|
|
34
56
|
- [Configuring the CLI for Microsoft 365](../../../user-guide/configuring-cli.md)
|
|
@@ -31,6 +31,10 @@ Reset all configuration settings to default
|
|
|
31
31
|
m365 cli config reset
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
+
## Response
|
|
35
|
+
|
|
36
|
+
The command won't return a response on success.
|
|
37
|
+
|
|
34
38
|
## More information
|
|
35
39
|
|
|
36
40
|
- [Configuring the CLI for Microsoft 365](../../../user-guide/configuring-cli.md)
|
|
@@ -34,6 +34,10 @@ Configure the default CLI output to JSON
|
|
|
34
34
|
m365 cli config set --key output --value json
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
## Response
|
|
38
|
+
|
|
39
|
+
The command won't return a response on success.
|
|
40
|
+
|
|
37
41
|
## More information
|
|
38
42
|
|
|
39
43
|
- [Configuring the CLI for Microsoft 365](../../../user-guide/configuring-cli.md)
|
|
@@ -41,3 +41,7 @@ Adds a new external connection with a limited number of authorized apps
|
|
|
41
41
|
```sh
|
|
42
42
|
m365 search externalconnection add --id MyApp --name "Test" --description "Test" --authorizedAppIds "00000000-0000-0000-0000-000000000000,00000000-0000-0000-0000-000000000001,00000000-0000-0000-0000-000000000002"
|
|
43
43
|
```
|
|
44
|
+
|
|
45
|
+
## Response
|
|
46
|
+
|
|
47
|
+
The command won't return a response on success.
|
|
@@ -31,3 +31,41 @@ Get the External Connection by its name
|
|
|
31
31
|
```sh
|
|
32
32
|
m365 search externalconnection get --name "Test"
|
|
33
33
|
```
|
|
34
|
+
|
|
35
|
+
## Response
|
|
36
|
+
|
|
37
|
+
=== "JSON"
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"id": "CLITest",
|
|
42
|
+
"name": "CLI-Test",
|
|
43
|
+
"description": "CLI Test",
|
|
44
|
+
"state": "draft",
|
|
45
|
+
"configuration": {
|
|
46
|
+
"authorizedApps": [
|
|
47
|
+
"31359c7f-bd7e-475c-86db-fdb8c937548e"
|
|
48
|
+
],
|
|
49
|
+
"authorizedAppIds": [
|
|
50
|
+
"31359c7f-bd7e-475c-86db-fdb8c937548e"
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
=== "Text"
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
configuration: {"authorizedApps":["31359c7f-bd7e-475c-86db-fdb8c937548e"],"authorizedAppIds":["31359c7f-bd7e-475c-86db-fdb8c937548e"]}
|
|
60
|
+
description : CLI Test
|
|
61
|
+
id : CLITest
|
|
62
|
+
name : CLI-Test
|
|
63
|
+
state : draft
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
=== "CSV"
|
|
67
|
+
|
|
68
|
+
```csv
|
|
69
|
+
id,name,description,state,configuration
|
|
70
|
+
CLITest,CLI-Test,CLI Test,draft,"{""authorizedApps"":[""31359c7f-bd7e-475c-86db-fdb8c937548e""],""authorizedAppIds"":[""31359c7f-bd7e-475c-86db-fdb8c937548e""]}"
|
|
71
|
+
```
|
|
@@ -19,3 +19,41 @@ List external connections defined in Microsoft Search
|
|
|
19
19
|
```sh
|
|
20
20
|
m365 search externalconnection list
|
|
21
21
|
```
|
|
22
|
+
|
|
23
|
+
## Response
|
|
24
|
+
|
|
25
|
+
=== "JSON"
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
[
|
|
29
|
+
{
|
|
30
|
+
"id": "CLITest",
|
|
31
|
+
"name": "CLI-Test",
|
|
32
|
+
"description": "CLI Test",
|
|
33
|
+
"state": "draft",
|
|
34
|
+
"configuration": {
|
|
35
|
+
"authorizedApps": [
|
|
36
|
+
"31359c7f-bd7e-475c-86db-fdb8c937548e"
|
|
37
|
+
],
|
|
38
|
+
"authorizedAppIds": [
|
|
39
|
+
"31359c7f-bd7e-475c-86db-fdb8c937548e"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
=== "Text"
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
id name state
|
|
50
|
+
------- -------- -----
|
|
51
|
+
CLITest CLI-Test draft
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
=== "CSV"
|
|
55
|
+
|
|
56
|
+
```csv
|
|
57
|
+
id,name,state
|
|
58
|
+
CLITest,CLI-Test,draft
|
|
59
|
+
```
|
|
@@ -32,7 +32,7 @@ m365 spfx project upgrade [options]
|
|
|
32
32
|
|
|
33
33
|
## Remarks
|
|
34
34
|
|
|
35
|
-
The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.16.
|
|
35
|
+
The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.16.1).
|
|
36
36
|
|
|
37
37
|
This command doesn't change your project files. Instead, it gives you a report with all steps necessary to upgrade your project to the specified version of the SharePoint Framework. Changing project files is error-prone, especially when it comes to updating your solution's code. This is why at this moment, this command produces a report that you can use yourself to perform the necessary updates and verify that everything is working as expected.
|
|
38
38
|
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# teams meeting attendancereport list
|
|
2
|
+
|
|
3
|
+
Lists all attendance reports for a given meeting
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
m365 teams meeting attendancereport list [options]
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Options
|
|
12
|
+
|
|
13
|
+
`-u, --userId [userId]`
|
|
14
|
+
: The id of the user, omit to list attendance reports for current signed in user. Use either `id`, `userName` or `email`, but not multiple.
|
|
15
|
+
|
|
16
|
+
`-n, --userName [userName]`
|
|
17
|
+
: The name of the user, omit to list attendance reports for current signed in user. Use either `id`, `userName` or `email`, but not multiple.
|
|
18
|
+
|
|
19
|
+
`--email [email]`
|
|
20
|
+
: The email of the user, omit to list attendance reports for current signed in user. Use either `id`, `userName` or `email`, but not multiple.
|
|
21
|
+
|
|
22
|
+
`-m, --meetingId <meetingId>`
|
|
23
|
+
: The Id of the meeting.
|
|
24
|
+
|
|
25
|
+
--8<-- "docs/cmd/_global.md"
|
|
26
|
+
|
|
27
|
+
## Examples
|
|
28
|
+
|
|
29
|
+
Lists all attendance reports made for the current signed in user and Microsoft Teams meeting with given id
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
m365 teams meeting attendancereport list --meetingId MSo4NmY0MWZhMi1kYjUxLTQyMTUtYjE3Zi1lYzY3NGQ2MjQzNjYqMCoqMTk6bWVldGluZ19OamMwWW1Zd05UVXROMlJoTlMwME0yRmhMV0V6T1RndE9HVmxNbVl4TkdVd05tUTNAdGhyZWFkLnYy
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Lists all attendance reports made for the garthf@contoso.com and Microsoft Teams meeting with given id
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
m365 teams meeting attendancereport list --userName garthf@contoso.com --meetingId MSo4NmY0MWZhMi1kYjUxLTQyMTUtYjE3Zi1lYzY3NGQ2MjQzNjYqMCoqMTk6bWVldGluZ19OamMwWW1Zd05UVXROMlJoTlMwME0yRmhMV0V6T1RndE9HVmxNbVl4TkdVd05tUTNAdGhyZWFkLnYy
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Response
|
|
42
|
+
|
|
43
|
+
=== "JSON"
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
[
|
|
47
|
+
{
|
|
48
|
+
"id": "ae6ddf54-5d48-4448-a7a9-780eee17fa13",
|
|
49
|
+
"totalParticipantCount": 6,
|
|
50
|
+
"meetingStartDateTime": "2022-11-22T22:46:46.981Z",
|
|
51
|
+
"meetingEndDateTime": "2022-11-22T22:47:07.703Z"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
=== "Text"
|
|
57
|
+
|
|
58
|
+
```text
|
|
59
|
+
id totalParticipantCount
|
|
60
|
+
------------------------------------ ---------------------
|
|
61
|
+
ae6ddf54-5d48-4448-a7a9-780eee17fa13 6
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
=== "CSV"
|
|
65
|
+
|
|
66
|
+
```csv
|
|
67
|
+
id,totalParticipantCount
|
|
68
|
+
ae6ddf54-5d48-4448-a7a9-780eee17fa13,6
|
|
69
|
+
```
|
|
@@ -51,6 +51,12 @@ m365 teams user app list --userName admin@contoso.com
|
|
|
51
51
|
"lastModifiedDateTime": null,
|
|
52
52
|
"createdBy": null
|
|
53
53
|
},
|
|
54
|
+
"teamsApp": {
|
|
55
|
+
"id": "14d6962d-6eeb-4f48-8890-de55454bb136",
|
|
56
|
+
"externalId": null,
|
|
57
|
+
"displayName": "Activity",
|
|
58
|
+
"distributionMethod": "store"
|
|
59
|
+
},
|
|
54
60
|
"appId": "14d6962d-6eeb-4f48-8890-de55454bb136"
|
|
55
61
|
}
|
|
56
62
|
]
|
package/package.json
CHANGED