@pnp/cli-microsoft365 7.1.0 → 7.2.0-beta.0642f3a

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.
Files changed (55) hide show
  1. package/.devcontainer/Dockerfile +0 -1
  2. package/.eslintrc.cjs +4 -0
  3. package/Dockerfile +0 -1
  4. package/dist/cli/Cli.js +3 -2
  5. package/dist/m365/aad/commands/administrativeunit/administrativeunit-add.js +61 -0
  6. package/dist/m365/aad/commands/administrativeunit/administrativeunit-get.js +80 -0
  7. package/dist/m365/aad/commands/administrativeunit/administrativeunit-list.js +25 -0
  8. package/dist/m365/aad/commands/administrativeunit/administrativeunit-remove.js +96 -0
  9. package/dist/m365/aad/commands.js +4 -0
  10. package/dist/m365/base/AppCommand.js +3 -12
  11. package/dist/m365/{search/commands/externalconnection/externalconnection-add.js → external/commands/connection/connection-add.js} +16 -13
  12. package/dist/m365/{search/commands/externalconnection/externalconnection-get.js → external/commands/connection/connection-get.js} +16 -13
  13. package/dist/m365/{search/commands/externalconnection/externalconnection-list.js → external/commands/connection/connection-list.js} +7 -4
  14. package/dist/m365/{search/commands/externalconnection/externalconnection-remove.js → external/commands/connection/connection-remove.js} +17 -14
  15. package/dist/m365/{search/commands/externalconnection/externalconnection-schema-add.js → external/commands/connection/connection-schema-add.js} +14 -11
  16. package/dist/m365/external/commands.js +15 -0
  17. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.18.1-rc.0.js +21 -0
  18. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  19. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN014010_CODE_settings_filesexclude_jest.js +44 -0
  20. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.18.1-rc.0.js +57 -0
  21. package/dist/m365/spfx/commands/project/project-upgrade.js +16 -13
  22. package/dist/m365/spfx/commands/spfx-doctor.js +15 -0
  23. package/dist/m365/spo/commands/site/site-set.js +33 -1
  24. package/dist/m365/teams/commands/app/app-update.js +9 -6
  25. package/dist/m365/tenant/commands/people/people-profilecardproperty-add.js +131 -0
  26. package/dist/m365/tenant/commands/people/people-profilecardproperty-get.js +75 -0
  27. package/dist/m365/tenant/commands/people/people-profilecardproperty-list.js +53 -0
  28. package/dist/m365/tenant/commands/people/people-profilecardproperty-remove.js +84 -0
  29. package/dist/m365/tenant/commands/people/people-profilecardproperty-set.js +118 -0
  30. package/dist/m365/tenant/commands/people/profileCardProperties.js +24 -0
  31. package/dist/m365/tenant/commands.js +5 -0
  32. package/dist/utils/aadAdministrativeUnit.js +25 -0
  33. package/dist/utils/aadGroup.js +3 -1
  34. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-add.mdx +119 -0
  35. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-get.mdx +102 -0
  36. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-list.mdx +87 -0
  37. package/docs/docs/cmd/aad/administrativeunit/administrativeunit-remove.mdx +56 -0
  38. package/docs/docs/cmd/{search/externalconnection/externalconnection-add.mdx → external/connection/connection-add.mdx} +16 -10
  39. package/docs/docs/cmd/{search/externalconnection/externalconnection-get.mdx → external/connection/connection-get.mdx} +16 -11
  40. package/docs/docs/cmd/{search/externalconnection/externalconnection-list.mdx → external/connection/connection-list.mdx} +12 -7
  41. package/docs/docs/cmd/external/connection/connection-remove.mdx +54 -0
  42. package/docs/docs/cmd/external/connection/connection-schema-add.mdx +41 -0
  43. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  44. package/docs/docs/cmd/spo/file/file-rename.mdx +2 -0
  45. package/docs/docs/cmd/spo/site/site-set.mdx +15 -0
  46. package/docs/docs/cmd/tenant/people/people-profilecardproperty-add.mdx +126 -0
  47. package/docs/docs/cmd/tenant/people/people-profilecardproperty-get.mdx +101 -0
  48. package/docs/docs/cmd/tenant/people/people-profilecardproperty-list.mdx +98 -0
  49. package/docs/docs/cmd/tenant/people/people-profilecardproperty-remove.mdx +61 -0
  50. package/docs/docs/cmd/tenant/people/people-profilecardproperty-set.mdx +120 -0
  51. package/npm-shrinkwrap.json +2 -2
  52. package/package.json +5 -7
  53. package/dist/m365/search/commands.js +0 -9
  54. package/docs/docs/cmd/search/externalconnection/externalconnection-remove.mdx +0 -48
  55. package/docs/docs/cmd/search/externalconnection/externalconnection-schema-add.mdx +0 -35
@@ -3,22 +3,25 @@ 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 _SearchExternalConnectionSchemaAddCommand_instances, _SearchExternalConnectionSchemaAddCommand_initOptions, _SearchExternalConnectionSchemaAddCommand_initValidators;
6
+ var _ExternalConnectionSchemaAddCommand_instances, _ExternalConnectionSchemaAddCommand_initOptions, _ExternalConnectionSchemaAddCommand_initValidators;
7
7
  import request from '../../../../request.js';
8
8
  import GraphCommand from '../../../base/GraphCommand.js';
9
9
  import commands from '../../commands.js';
10
- class SearchExternalConnectionSchemaAddCommand extends GraphCommand {
10
+ class ExternalConnectionSchemaAddCommand extends GraphCommand {
11
11
  get name() {
12
- return commands.EXTERNALCONNECTION_SCHEMA_ADD;
12
+ return commands.CONNECTION_SCHEMA_ADD;
13
13
  }
14
14
  get description() {
15
- return 'This command allows the administrator to add a schema to a specific external connection for use in Microsoft Search.';
15
+ return 'Allows the administrator to add a schema to a specific external connection';
16
+ }
17
+ alias() {
18
+ return [commands.EXTERNALCONNECTION_SCHEMA_ADD];
16
19
  }
17
20
  constructor() {
18
21
  super();
19
- _SearchExternalConnectionSchemaAddCommand_instances.add(this);
20
- __classPrivateFieldGet(this, _SearchExternalConnectionSchemaAddCommand_instances, "m", _SearchExternalConnectionSchemaAddCommand_initOptions).call(this);
21
- __classPrivateFieldGet(this, _SearchExternalConnectionSchemaAddCommand_instances, "m", _SearchExternalConnectionSchemaAddCommand_initValidators).call(this);
22
+ _ExternalConnectionSchemaAddCommand_instances.add(this);
23
+ __classPrivateFieldGet(this, _ExternalConnectionSchemaAddCommand_instances, "m", _ExternalConnectionSchemaAddCommand_initOptions).call(this);
24
+ __classPrivateFieldGet(this, _ExternalConnectionSchemaAddCommand_instances, "m", _ExternalConnectionSchemaAddCommand_initValidators).call(this);
22
25
  }
23
26
  async commandAction(logger, args) {
24
27
  if (this.verbose) {
@@ -40,13 +43,13 @@ class SearchExternalConnectionSchemaAddCommand extends GraphCommand {
40
43
  }
41
44
  }
42
45
  }
43
- _SearchExternalConnectionSchemaAddCommand_instances = new WeakSet(), _SearchExternalConnectionSchemaAddCommand_initOptions = function _SearchExternalConnectionSchemaAddCommand_initOptions() {
46
+ _ExternalConnectionSchemaAddCommand_instances = new WeakSet(), _ExternalConnectionSchemaAddCommand_initOptions = function _ExternalConnectionSchemaAddCommand_initOptions() {
44
47
  this.options.unshift({
45
48
  option: '-i, --externalConnectionId <externalConnectionId>'
46
49
  }, {
47
50
  option: '-s, --schema <schema>'
48
51
  });
49
- }, _SearchExternalConnectionSchemaAddCommand_initValidators = function _SearchExternalConnectionSchemaAddCommand_initValidators() {
52
+ }, _ExternalConnectionSchemaAddCommand_initValidators = function _ExternalConnectionSchemaAddCommand_initValidators() {
50
53
  this.validators.push(async (args) => {
51
54
  if (args.options.externalConnectionId.length < 3 || args.options.externalConnectionId.length > 32) {
52
55
  return 'externalConnectionId must be between 3 and 32 characters in length.';
@@ -69,5 +72,5 @@ _SearchExternalConnectionSchemaAddCommand_instances = new WeakSet(), _SearchExte
69
72
  return true;
70
73
  });
71
74
  };
72
- export default new SearchExternalConnectionSchemaAddCommand();
73
- //# sourceMappingURL=externalconnection-schema-add.js.map
75
+ export default new ExternalConnectionSchemaAddCommand();
76
+ //# sourceMappingURL=connection-schema-add.js.map
@@ -0,0 +1,15 @@
1
+ const prefix = 'external';
2
+ const searchPrefix = 'search';
3
+ export default {
4
+ CONNECTION_ADD: `${prefix} connection add`,
5
+ CONNECTION_GET: `${prefix} connection get`,
6
+ CONNECTION_LIST: `${prefix} connection list`,
7
+ CONNECTION_REMOVE: `${prefix} connection remove`,
8
+ CONNECTION_SCHEMA_ADD: `${prefix} connection schema add`,
9
+ EXTERNALCONNECTION_ADD: `${searchPrefix} externalconnection add`,
10
+ EXTERNALCONNECTION_GET: `${searchPrefix} externalconnection get`,
11
+ EXTERNALCONNECTION_LIST: `${searchPrefix} externalconnection list`,
12
+ EXTERNALCONNECTION_REMOVE: `${searchPrefix} externalconnection remove`,
13
+ EXTERNALCONNECTION_SCHEMA_ADD: `${searchPrefix} externalconnection schema add`
14
+ };
15
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1,21 @@
1
+ import { FN001008_DEP_react } from './rules/FN001008_DEP_react.js';
2
+ import { FN001009_DEP_react_dom } from './rules/FN001009_DEP_react_dom.js';
3
+ import { FN001035_DEP_fluentui_react } from './rules/FN001035_DEP_fluentui_react.js';
4
+ import { FN002004_DEVDEP_gulp } from './rules/FN002004_DEVDEP_gulp.js';
5
+ import { FN002007_DEVDEP_ajv } from './rules/FN002007_DEVDEP_ajv.js';
6
+ import { FN002013_DEVDEP_types_webpack_env } from './rules/FN002013_DEVDEP_types_webpack_env.js';
7
+ import { FN002015_DEVDEP_types_react } from './rules/FN002015_DEVDEP_types_react.js';
8
+ import { FN002016_DEVDEP_types_react_dom } from './rules/FN002016_DEVDEP_types_react_dom.js';
9
+ import { FN002019_DEVDEP_microsoft_rush_stack_compiler } from './rules/FN002019_DEVDEP_microsoft_rush_stack_compiler.js';
10
+ export default [
11
+ new FN001008_DEP_react('17'),
12
+ new FN001009_DEP_react_dom('17'),
13
+ new FN001035_DEP_fluentui_react('^8.106.4'),
14
+ new FN002004_DEVDEP_gulp('4.0.2'),
15
+ new FN002007_DEVDEP_ajv('^6.12.5'),
16
+ new FN002013_DEVDEP_types_webpack_env('~1.15.2'),
17
+ new FN002015_DEVDEP_types_react('17'),
18
+ new FN002016_DEVDEP_types_react_dom('17'),
19
+ new FN002019_DEVDEP_microsoft_rush_stack_compiler(['4.7'])
20
+ ];
21
+ //# sourceMappingURL=doctor-1.18.1-rc.0.js.map
@@ -67,7 +67,8 @@ class SpfxProjectDoctorCommand extends BaseProjectCommand {
67
67
  '1.17.2',
68
68
  '1.17.3',
69
69
  '1.17.4',
70
- '1.18.0'
70
+ '1.18.0',
71
+ '1.18.1-rc.0'
71
72
  ];
72
73
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
73
74
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
@@ -0,0 +1,44 @@
1
+ import { JsonRule } from '../../JsonRule.js';
2
+ export class FN014010_CODE_settings_filesexclude_jest extends JsonRule {
3
+ constructor() {
4
+ super();
5
+ }
6
+ get id() {
7
+ return 'FN014010';
8
+ }
9
+ get title() {
10
+ return 'Exclude Jest output files in .vscode/settings.json';
11
+ }
12
+ get description() {
13
+ return `Add excluding Jest output files in .vscode/settings.json`;
14
+ }
15
+ get resolution() {
16
+ return `{
17
+ "files.exclude": {
18
+ "**/jest-output": true
19
+ }
20
+ }`;
21
+ }
22
+ get resolutionType() {
23
+ return 'json';
24
+ }
25
+ get severity() {
26
+ return 'Required';
27
+ }
28
+ get file() {
29
+ return '.vscode/settings.json';
30
+ }
31
+ visit(project, findings) {
32
+ if (!project.vsCode ||
33
+ !project.vsCode.settingsJson ||
34
+ !project.vsCode.settingsJson["files.exclude"]) {
35
+ return;
36
+ }
37
+ if (project.vsCode.settingsJson["files.exclude"]["**/jest-output"] === true) {
38
+ return;
39
+ }
40
+ const node = this.getAstNodeFromFile(project.vsCode.settingsJson, `files;#exclude`);
41
+ this.addFindingWithPosition(findings, node);
42
+ }
43
+ }
44
+ //# sourceMappingURL=FN014010_CODE_settings_filesexclude_jest.js.map
@@ -0,0 +1,57 @@
1
+ import { FN001001_DEP_microsoft_sp_core_library } from './rules/FN001001_DEP_microsoft_sp_core_library.js';
2
+ import { FN001002_DEP_microsoft_sp_lodash_subset } from './rules/FN001002_DEP_microsoft_sp_lodash_subset.js';
3
+ import { FN001003_DEP_microsoft_sp_office_ui_fabric_core } from './rules/FN001003_DEP_microsoft_sp_office_ui_fabric_core.js';
4
+ import { FN001004_DEP_microsoft_sp_webpart_base } from './rules/FN001004_DEP_microsoft_sp_webpart_base.js';
5
+ import { FN001011_DEP_microsoft_sp_dialog } from './rules/FN001011_DEP_microsoft_sp_dialog.js';
6
+ import { FN001012_DEP_microsoft_sp_application_base } from './rules/FN001012_DEP_microsoft_sp_application_base.js';
7
+ import { FN001013_DEP_microsoft_decorators } from './rules/FN001013_DEP_microsoft_decorators.js';
8
+ import { FN001014_DEP_microsoft_sp_listview_extensibility } from './rules/FN001014_DEP_microsoft_sp_listview_extensibility.js';
9
+ import { FN001021_DEP_microsoft_sp_property_pane } from './rules/FN001021_DEP_microsoft_sp_property_pane.js';
10
+ import { FN001022_DEP_office_ui_fabric_react } from './rules/FN001022_DEP_office_ui_fabric_react.js';
11
+ import { FN001023_DEP_microsoft_sp_component_base } from './rules/FN001023_DEP_microsoft_sp_component_base.js';
12
+ import { FN001024_DEP_microsoft_sp_diagnostics } from './rules/FN001024_DEP_microsoft_sp_diagnostics.js';
13
+ import { FN001025_DEP_microsoft_sp_dynamic_data } from './rules/FN001025_DEP_microsoft_sp_dynamic_data.js';
14
+ import { FN001026_DEP_microsoft_sp_extension_base } from './rules/FN001026_DEP_microsoft_sp_extension_base.js';
15
+ import { FN001027_DEP_microsoft_sp_http } from './rules/FN001027_DEP_microsoft_sp_http.js';
16
+ import { FN001028_DEP_microsoft_sp_list_subscription } from './rules/FN001028_DEP_microsoft_sp_list_subscription.js';
17
+ import { FN001029_DEP_microsoft_sp_loader } from './rules/FN001029_DEP_microsoft_sp_loader.js';
18
+ import { FN001030_DEP_microsoft_sp_module_interfaces } from './rules/FN001030_DEP_microsoft_sp_module_interfaces.js';
19
+ import { FN001031_DEP_microsoft_sp_odata_types } from './rules/FN001031_DEP_microsoft_sp_odata_types.js';
20
+ import { FN001032_DEP_microsoft_sp_page_context } from './rules/FN001032_DEP_microsoft_sp_page_context.js';
21
+ import { FN001034_DEP_microsoft_sp_adaptive_card_extension_base } from './rules/FN001034_DEP_microsoft_sp_adaptive_card_extension_base.js';
22
+ import { FN002001_DEVDEP_microsoft_sp_build_web } from './rules/FN002001_DEVDEP_microsoft_sp_build_web.js';
23
+ import { FN002002_DEVDEP_microsoft_sp_module_interfaces } from './rules/FN002002_DEVDEP_microsoft_sp_module_interfaces.js';
24
+ import { FN002022_DEVDEP_microsoft_eslint_plugin_spfx } from './rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx.js';
25
+ import { FN002023_DEVDEP_microsoft_eslint_config_spfx } from './rules/FN002023_DEVDEP_microsoft_eslint_config_spfx.js';
26
+ import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
27
+ import { FN014010_CODE_settings_filesexclude_jest } from './rules/FN014010_CODE_settings_filesexclude_jest.js';
28
+ export default [
29
+ new FN001001_DEP_microsoft_sp_core_library('1.18.1-rc.0'),
30
+ new FN001002_DEP_microsoft_sp_lodash_subset('1.18.1-rc.0'),
31
+ new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.18.1-rc.0'),
32
+ new FN001004_DEP_microsoft_sp_webpart_base('1.18.1-rc.0'),
33
+ new FN001011_DEP_microsoft_sp_dialog('1.18.1-rc.0'),
34
+ new FN001012_DEP_microsoft_sp_application_base('1.18.1-rc.0'),
35
+ new FN001014_DEP_microsoft_sp_listview_extensibility('1.18.1-rc.0'),
36
+ new FN001021_DEP_microsoft_sp_property_pane('1.18.1-rc.0'),
37
+ new FN001022_DEP_office_ui_fabric_react('', false),
38
+ new FN001023_DEP_microsoft_sp_component_base('1.18.1-rc.0'),
39
+ new FN001024_DEP_microsoft_sp_diagnostics('1.18.1-rc.0'),
40
+ new FN001025_DEP_microsoft_sp_dynamic_data('1.18.1-rc.0'),
41
+ new FN001026_DEP_microsoft_sp_extension_base('1.18.1-rc.0'),
42
+ new FN001027_DEP_microsoft_sp_http('1.18.1-rc.0'),
43
+ new FN001028_DEP_microsoft_sp_list_subscription('1.18.1-rc.0'),
44
+ new FN001029_DEP_microsoft_sp_loader('1.18.1-rc.0'),
45
+ new FN001030_DEP_microsoft_sp_module_interfaces('1.18.1-rc.0'),
46
+ new FN001031_DEP_microsoft_sp_odata_types('1.18.1-rc.0'),
47
+ new FN001032_DEP_microsoft_sp_page_context('1.18.1-rc.0'),
48
+ new FN001013_DEP_microsoft_decorators('1.18.1-rc.0'),
49
+ new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.18.1-rc.0'),
50
+ new FN002001_DEVDEP_microsoft_sp_build_web('1.18.1-rc.0'),
51
+ new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.18.1-rc.0'),
52
+ new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.18.1-rc.0'),
53
+ new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.18.1-rc.0'),
54
+ new FN010001_YORC_version('1.18.1-rc.0'),
55
+ new FN014010_CODE_settings_filesexclude_jest()
56
+ ];
57
+ //# sourceMappingURL=upgrade-1.18.1-rc.0.js.map
@@ -7,6 +7,8 @@ var _SpfxProjectUpgradeCommand_instances, _a, _SpfxProjectUpgradeCommand_initTel
7
7
  import fs from 'fs';
8
8
  import os from 'os';
9
9
  import path from 'path';
10
+ // uncomment to support upgrading to preview releases
11
+ import { prerelease } from 'semver';
10
12
  import { CommandError } from '../../../../Command.js';
11
13
  import { fsUtil } from '../../../../utils/fsUtil.js';
12
14
  import { packageManager } from '../../../../utils/packageManager.js';
@@ -69,7 +71,8 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
69
71
  '1.17.2',
70
72
  '1.17.3',
71
73
  '1.17.4',
72
- '1.18.0'
74
+ '1.18.0',
75
+ '1.18.1-rc.0'
73
76
  ];
74
77
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
75
78
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
@@ -82,15 +85,15 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
82
85
  }
83
86
  this.toVersion = args.options.toVersion ? args.options.toVersion : this.supportedVersions[this.supportedVersions.length - 1];
84
87
  // uncomment to support upgrading to preview releases
85
- // if (!args.options.toVersion &&
86
- // !args.options.preview &&
87
- // prerelease(this.toVersion)) {
88
- // // no version and no preview specified while the current version to
89
- // // upgrade to is a prerelease so let's grab the first non-preview version
90
- // // since we're supporting only one preview version, it's sufficient for
91
- // // us to take second to last version
92
- // this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
93
- // }
88
+ if (!args.options.toVersion &&
89
+ !args.options.preview &&
90
+ prerelease(this.toVersion)) {
91
+ // no version and no preview specified while the current version to
92
+ // upgrade to is a prerelease so let's grab the first non-preview version
93
+ // since we're supporting only one preview version, it's sufficient for
94
+ // us to take second to last version
95
+ this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
96
+ }
94
97
  this.packageManager = args.options.packageManager || 'npm';
95
98
  this.shell = args.options.shell || 'bash';
96
99
  if (this.supportedVersions.indexOf(this.toVersion) < 0) {
@@ -477,9 +480,9 @@ _a = SpfxProjectUpgradeCommand, _SpfxProjectUpgradeCommand_instances = new WeakS
477
480
  preview: args.options.preview
478
481
  });
479
482
  // uncomment to support upgrading to preview releases
480
- // if (prerelease(this.telemetryProperties.toVersion) && !args.options.preview) {
481
- // this.telemetryProperties.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
482
- // }
483
+ if (prerelease(this.telemetryProperties.toVersion) && !args.options.preview) {
484
+ this.telemetryProperties.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
485
+ }
483
486
  });
484
487
  }, _SpfxProjectUpgradeCommand_initOptions = function _SpfxProjectUpgradeCommand_initOptions() {
485
488
  this.options.unshift({
@@ -538,6 +538,21 @@ class SpfxDoctorCommand extends BaseProjectCommand {
538
538
  range: '^4',
539
539
  fix: 'npm i -g yo@4'
540
540
  }
541
+ },
542
+ '1.18.1-rc.0': {
543
+ gulpCli: {
544
+ range: '^1 || ^2',
545
+ fix: 'npm i -g gulp-cli@2'
546
+ },
547
+ node: {
548
+ range: '>=16.13.0 <17.0.0 || >=18.17.1 <19.0.0',
549
+ fix: 'Install Node.js >=16.13.0 <17.0.0 || >=18.17.1 <19.0.0'
550
+ },
551
+ sp: SharePointVersion.SPO,
552
+ yo: {
553
+ range: '^4',
554
+ fix: 'npm i -g yo@4'
555
+ }
541
556
  }
542
557
  };
543
558
  __classPrivateFieldGet(this, _SpfxDoctorCommand_instances, "m", _SpfxDoctorCommand_initTelemetry).call(this);
@@ -49,6 +49,7 @@ class SpoSiteSetCommand extends SpoCommand {
49
49
  await this.waitForSiteUpdateCompletion(logger, args, siteProps);
50
50
  await this.applySiteDesign(logger, args);
51
51
  await this.setLogo(logger, args);
52
+ await this.setThumbnail(logger, args);
52
53
  const lockState = await this.updateSiteLockState(logger, args);
53
54
  await this.waitForSiteUpdateCompletion(logger, args, lockState);
54
55
  }
@@ -73,7 +74,31 @@ class SpoSiteSetCommand extends SpoCommand {
73
74
  accept: 'application/json;odata=nometadata'
74
75
  },
75
76
  data: {
76
- relativeLogoUrl: logoUrl
77
+ aspect: 1,
78
+ relativeLogoUrl: logoUrl,
79
+ type: 0
80
+ },
81
+ responseType: 'json'
82
+ };
83
+ return request.post(requestOptions);
84
+ }
85
+ async setThumbnail(logger, args) {
86
+ if (typeof args.options.siteThumbnailUrl === 'undefined') {
87
+ return;
88
+ }
89
+ if (this.debug) {
90
+ await logger.logToStderr(`Setting the site thumbnail...`);
91
+ }
92
+ const thumbnailUrl = args.options.siteThumbnailUrl ? urlUtil.getServerRelativePath(args.options.url, args.options.siteThumbnailUrl) : "";
93
+ const requestOptions = {
94
+ url: `${args.options.url}/_api/siteiconmanager/setsitelogo`,
95
+ headers: {
96
+ accept: 'application/json;odata=nometadata'
97
+ },
98
+ data: {
99
+ aspect: 0,
100
+ relativeLogoUrl: thumbnailUrl,
101
+ type: 0
77
102
  },
78
103
  responseType: 'json'
79
104
  };
@@ -420,6 +445,7 @@ _SpoSiteSetCommand_instances = new WeakSet(), _SpoSiteSetCommand_initTelemetry =
420
445
  siteDesignId: typeof args.options.siteDesignId !== undefined,
421
446
  sharingCapabilities: args.options.sharingCapability,
422
447
  siteLogoUrl: typeof args.options.siteLogoUrl !== 'undefined',
448
+ siteThumbnailUrl: typeof args.options.siteThumbnailUrl !== 'undefined',
423
449
  resourceQuota: args.options.resourceQuota,
424
450
  resourceQuotaWarningLevel: args.options.resourceQuotaWarningLevel,
425
451
  storageQuota: args.options.storageQuota,
@@ -459,6 +485,8 @@ _SpoSiteSetCommand_instances = new WeakSet(), _SpoSiteSetCommand_initTelemetry =
459
485
  option: '--description [description]'
460
486
  }, {
461
487
  option: '--siteLogoUrl [siteLogoUrl]'
488
+ }, {
489
+ option: '--siteThumbnailUrl [siteThumbnailUrl]'
462
490
  }, {
463
491
  option: '--sharingCapability [sharingCapability]',
464
492
  autocomplete: this.sharingCapabilities
@@ -499,6 +527,7 @@ _SpoSiteSetCommand_instances = new WeakSet(), _SpoSiteSetCommand_initTelemetry =
499
527
  typeof args.options.siteDesignId === 'undefined' &&
500
528
  typeof args.options.sharingCapability === 'undefined' &&
501
529
  typeof args.options.siteLogoUrl === 'undefined' &&
530
+ typeof args.options.siteThumbnailUrl === 'undefined' &&
502
531
  typeof args.options.resourceQuota === 'undefined' &&
503
532
  typeof args.options.resourceQuotaWarningLevel === 'undefined' &&
504
533
  typeof args.options.storageQuota === 'undefined' &&
@@ -511,6 +540,9 @@ _SpoSiteSetCommand_instances = new WeakSet(), _SpoSiteSetCommand_initTelemetry =
511
540
  if (typeof args.options.siteLogoUrl !== 'undefined' && typeof args.options.siteLogoUrl !== 'string') {
512
541
  return `${args.options.siteLogoUrl} is not a valid value for the siteLogoUrl option. Specify the logo URL or an empty string "" to unset the logo.`;
513
542
  }
543
+ if (typeof args.options.siteThumbnailUrl !== 'undefined' && typeof args.options.siteThumbnailUrl !== 'string') {
544
+ return `${args.options.siteThumbnailUrl} is not a valid value for the siteThumbnailUrl option. Specify the logo URL or an empty string "" to unset the logo.`;
545
+ }
514
546
  if (args.options.siteDesignId) {
515
547
  if (!validation.isValidGuid(args.options.siteDesignId)) {
516
548
  return `${args.options.siteDesignId} is not a valid GUID`;
@@ -11,6 +11,7 @@ import { formatting } from '../../../../utils/formatting.js';
11
11
  import { validation } from '../../../../utils/validation.js';
12
12
  import GraphCommand from '../../../base/GraphCommand.js';
13
13
  import commands from '../../commands.js';
14
+ import { Cli } from '../../../../cli/Cli.js';
14
15
  class TeamsAppUpdateCommand extends GraphCommand {
15
16
  get name() {
16
17
  return commands.APP_UPDATE;
@@ -29,7 +30,7 @@ class TeamsAppUpdateCommand extends GraphCommand {
29
30
  async commandAction(logger, args) {
30
31
  const { filePath } = args.options;
31
32
  try {
32
- const appId = await this.getAppId(args);
33
+ const appId = await this.getAppId(args.options);
33
34
  const fullPath = path.resolve(filePath);
34
35
  if (this.verbose) {
35
36
  await logger.logToStderr(`Updating app with id '${appId}' and file '${fullPath}' in the app catalog...`);
@@ -47,12 +48,12 @@ class TeamsAppUpdateCommand extends GraphCommand {
47
48
  this.handleRejectedODataJsonPromise(err);
48
49
  }
49
50
  }
50
- async getAppId(args) {
51
- if (args.options.id) {
52
- return args.options.id;
51
+ async getAppId(options) {
52
+ if (options.id) {
53
+ return options.id;
53
54
  }
54
55
  const requestOptions = {
55
- url: `${this.resource}/v1.0/appCatalogs/teamsApps?$filter=displayName eq '${formatting.encodeQueryParameter(args.options.name)}'`,
56
+ url: `${this.resource}/v1.0/appCatalogs/teamsApps?$filter=displayName eq '${formatting.encodeQueryParameter(options.name)}'`,
56
57
  headers: {
57
58
  accept: 'application/json;odata.metadata=none'
58
59
  },
@@ -64,7 +65,9 @@ class TeamsAppUpdateCommand extends GraphCommand {
64
65
  throw `The specified Teams app does not exist`;
65
66
  }
66
67
  if (response.value.length > 1) {
67
- throw `Multiple Teams apps with name ${args.options.name} found. Please choose one of these ids: ${response.value.map(x => x.id).join(', ')}`;
68
+ const resultAsKeyValuePair = formatting.convertArrayToHashTable('id', response.value);
69
+ const result = await Cli.handleMultipleResultsFound(`Multiple Teams apps with name ${options.name} found.`, resultAsKeyValuePair);
70
+ return result.id;
68
71
  }
69
72
  return app.id;
70
73
  }
@@ -0,0 +1,131 @@
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 _TenantPeopleProfileCardPropertyAddCommand_instances, _TenantPeopleProfileCardPropertyAddCommand_initTelemetry, _TenantPeopleProfileCardPropertyAddCommand_initOptions, _TenantPeopleProfileCardPropertyAddCommand_initValidators;
7
+ import request from '../../../../request.js';
8
+ import GraphCommand from '../../../base/GraphCommand.js';
9
+ import commands from '../../commands.js';
10
+ import { profileCardPropertyNames } from './profileCardProperties.js';
11
+ class TenantPeopleProfileCardPropertyAddCommand extends GraphCommand {
12
+ get name() {
13
+ return commands.PEOPLE_PROFILECARDPROPERTY_ADD;
14
+ }
15
+ get description() {
16
+ return 'Adds an additional attribute to the profile card properties';
17
+ }
18
+ constructor() {
19
+ super();
20
+ _TenantPeopleProfileCardPropertyAddCommand_instances.add(this);
21
+ __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertyAddCommand_instances, "m", _TenantPeopleProfileCardPropertyAddCommand_initTelemetry).call(this);
22
+ __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertyAddCommand_instances, "m", _TenantPeopleProfileCardPropertyAddCommand_initOptions).call(this);
23
+ __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertyAddCommand_instances, "m", _TenantPeopleProfileCardPropertyAddCommand_initValidators).call(this);
24
+ }
25
+ allowUnknownOptions() {
26
+ return true;
27
+ }
28
+ async commandAction(logger, args) {
29
+ const directoryPropertyName = profileCardPropertyNames.find(n => n.toLowerCase() === args.options.name.toLowerCase());
30
+ if (this.verbose) {
31
+ await logger.logToStderr(`Adding '${directoryPropertyName}' as a profile card property...`);
32
+ }
33
+ const requestOptions = {
34
+ url: `${this.resource}/v1.0/admin/people/profileCardProperties`,
35
+ headers: {
36
+ 'content-type': 'application/json',
37
+ accept: 'application/json;odata.metadata=none'
38
+ },
39
+ responseType: 'json',
40
+ data: {
41
+ directoryPropertyName,
42
+ annotations: this.getAnnotations(args.options)
43
+ }
44
+ };
45
+ try {
46
+ const response = await request.post(requestOptions);
47
+ // Transform the output to make it more readable
48
+ if (args.options.output && args.options.output !== 'json' && response.annotations.length > 0) {
49
+ const annotation = response.annotations[0];
50
+ response.displayName = annotation.displayName;
51
+ annotation.localizations.forEach((l) => {
52
+ response[`displayName ${l.languageTag}`] = l.displayName;
53
+ });
54
+ delete response.annotations;
55
+ }
56
+ await logger.log(response);
57
+ }
58
+ catch (err) {
59
+ this.handleRejectedODataJsonPromise(err);
60
+ }
61
+ }
62
+ getAnnotations(options) {
63
+ if (!options.displayName) {
64
+ return [];
65
+ }
66
+ return [
67
+ {
68
+ displayName: options.displayName,
69
+ localizations: this.getLocalizations(options)
70
+ }
71
+ ];
72
+ }
73
+ getLocalizations(options) {
74
+ const unknownOptions = Object.keys(this.getUnknownOptions(options));
75
+ if (unknownOptions.length === 0) {
76
+ return [];
77
+ }
78
+ const localizations = [];
79
+ unknownOptions.forEach(key => {
80
+ localizations.push({
81
+ languageTag: key.replace('displayName-', ''),
82
+ displayName: options[key]
83
+ });
84
+ });
85
+ return localizations;
86
+ }
87
+ }
88
+ _TenantPeopleProfileCardPropertyAddCommand_instances = new WeakSet(), _TenantPeopleProfileCardPropertyAddCommand_initTelemetry = function _TenantPeopleProfileCardPropertyAddCommand_initTelemetry() {
89
+ this.telemetry.push((args) => {
90
+ // Add unknown options to telemetry
91
+ const unknownOptions = Object.keys(this.getUnknownOptions(args.options));
92
+ const unknownOptionsObj = unknownOptions.reduce((obj, key) => ({ ...obj, [key]: true }), {});
93
+ Object.assign(this.telemetryProperties, {
94
+ displayName: typeof args.options.displayName !== 'undefined',
95
+ ...unknownOptionsObj
96
+ });
97
+ });
98
+ }, _TenantPeopleProfileCardPropertyAddCommand_initOptions = function _TenantPeopleProfileCardPropertyAddCommand_initOptions() {
99
+ this.options.unshift({
100
+ option: '-n, --name <name>',
101
+ autocomplete: profileCardPropertyNames
102
+ }, {
103
+ option: '-d, --displayName [displayName]'
104
+ });
105
+ }, _TenantPeopleProfileCardPropertyAddCommand_initValidators = function _TenantPeopleProfileCardPropertyAddCommand_initValidators() {
106
+ this.validators.push(async (args) => {
107
+ const propertyName = args.options.name.toLowerCase();
108
+ if (profileCardPropertyNames.every(n => n.toLowerCase() !== propertyName)) {
109
+ return `${args.options.name} is not a valid value for name. Allowed values are ${profileCardPropertyNames.join(', ')}`;
110
+ }
111
+ if (propertyName.startsWith('customattribute') && args.options.displayName === undefined) {
112
+ return `The option 'displayName' is required when adding customAttributes as profile card properties`;
113
+ }
114
+ if (!propertyName.startsWith('customattribute') && args.options.displayName !== undefined) {
115
+ return `The option 'displayName' can only be used when adding customAttributes as profile card properties`;
116
+ }
117
+ const unknownOptions = Object.keys(this.getUnknownOptions(args.options));
118
+ if (!propertyName.startsWith('customattribute') && unknownOptions.length > 0) {
119
+ return `Unknown options like ${unknownOptions.join(', ')} are only supported with customAttributes`;
120
+ }
121
+ if (propertyName.startsWith('customattribute')) {
122
+ const wronglyFormattedOptions = unknownOptions.filter(key => !key.toLowerCase().startsWith('displayname-'));
123
+ if (wronglyFormattedOptions.length > 0) {
124
+ return `Wrong option format detected for the following option(s): ${wronglyFormattedOptions.join(', ')}'. When adding localizations for customAttributes, use the format displayName-<languageTag>.`;
125
+ }
126
+ }
127
+ return true;
128
+ });
129
+ };
130
+ export default new TenantPeopleProfileCardPropertyAddCommand();
131
+ //# sourceMappingURL=people-profilecardproperty-add.js.map
@@ -0,0 +1,75 @@
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 _TenantPeopleProfileCardPropertyGetCommand_instances, _TenantPeopleProfileCardPropertyGetCommand_initOptions, _TenantPeopleProfileCardPropertyGetCommand_initValidators;
7
+ import GraphCommand from '../../../base/GraphCommand.js';
8
+ import request from '../../../../request.js';
9
+ import { profileCardPropertyNames } from './profileCardProperties.js';
10
+ import commands from '../../commands.js';
11
+ class TenantPeopleProfileCardPropertyGetCommand extends GraphCommand {
12
+ get name() {
13
+ return commands.PEOPLE_PROFILECARDPROPERTY_GET;
14
+ }
15
+ get description() {
16
+ return 'Retrieves information about a specific profile card property';
17
+ }
18
+ constructor() {
19
+ super();
20
+ _TenantPeopleProfileCardPropertyGetCommand_instances.add(this);
21
+ __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertyGetCommand_instances, "m", _TenantPeopleProfileCardPropertyGetCommand_initOptions).call(this);
22
+ __classPrivateFieldGet(this, _TenantPeopleProfileCardPropertyGetCommand_instances, "m", _TenantPeopleProfileCardPropertyGetCommand_initValidators).call(this);
23
+ }
24
+ async commandAction(logger, args) {
25
+ try {
26
+ if (this.verbose) {
27
+ await logger.logToStderr(`Retrieving information about profile card property '${args.options.name}'...`);
28
+ }
29
+ // Get the right casing for the profile card property name
30
+ const profileCardProperty = profileCardPropertyNames.find(p => p.toLowerCase() === args.options.name.toLowerCase());
31
+ const requestOptions = {
32
+ url: `${this.resource}/v1.0/admin/people/profileCardProperties/${profileCardProperty}`,
33
+ headers: {
34
+ accept: 'application/json;odata.metadata=none'
35
+ },
36
+ responseType: 'json'
37
+ };
38
+ const result = await request.get(requestOptions);
39
+ let output = result;
40
+ // Transform the output to make it more readable
41
+ if (args.options.output && args.options.output !== 'json' && result.annotations.length > 0) {
42
+ output = result.annotations[0].localizations.reduce((acc, curr) => ({
43
+ ...acc,
44
+ ['displayName ' + curr.languageTag]: curr.displayName
45
+ }), {
46
+ ...result,
47
+ displayName: result.annotations[0].displayName
48
+ });
49
+ delete output.annotations;
50
+ }
51
+ await logger.log(output);
52
+ }
53
+ catch (err) {
54
+ if (err.response?.status === 404) {
55
+ this.handleError(`Profile card property '${args.options.name}' does not exist.`);
56
+ }
57
+ this.handleRejectedODataJsonPromise(err);
58
+ }
59
+ }
60
+ }
61
+ _TenantPeopleProfileCardPropertyGetCommand_instances = new WeakSet(), _TenantPeopleProfileCardPropertyGetCommand_initOptions = function _TenantPeopleProfileCardPropertyGetCommand_initOptions() {
62
+ this.options.unshift({
63
+ option: '-n, --name <name>',
64
+ autocomplete: profileCardPropertyNames
65
+ });
66
+ }, _TenantPeopleProfileCardPropertyGetCommand_initValidators = function _TenantPeopleProfileCardPropertyGetCommand_initValidators() {
67
+ this.validators.push(async (args) => {
68
+ if (!profileCardPropertyNames.some(p => p.toLowerCase() === args.options.name.toLowerCase())) {
69
+ return `'${args.options.name}' is not a valid value for option name. Allowed values are: ${profileCardPropertyNames.join(', ')}.`;
70
+ }
71
+ return true;
72
+ });
73
+ };
74
+ export default new TenantPeopleProfileCardPropertyGetCommand();
75
+ //# sourceMappingURL=people-profilecardproperty-get.js.map