@pnp/cli-microsoft365 6.4.0-beta.f8f3553 → 6.5.0-beta.33bab12

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 (38) hide show
  1. package/.devcontainer/Dockerfile +5 -2
  2. package/Dockerfile +6 -3
  3. package/README.md +3 -3
  4. package/dist/Auth.js +1 -3
  5. package/dist/Command.js +1 -1
  6. package/dist/m365/file/commands/file-list.js +5 -1
  7. package/dist/m365/flow/commands/flow-export.js +6 -6
  8. package/dist/m365/flow/commands/owner/{owner-add.js → owner-ensure.js} +19 -19
  9. package/dist/m365/flow/commands.js +1 -1
  10. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN014009_CODE_launch_hostedWorkbench_url.js +62 -0
  11. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.0.js +67 -0
  12. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  13. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-add.js +27 -13
  14. package/dist/m365/spo/commands/applicationcustomizer/applicationcustomizer-list.js +72 -0
  15. package/dist/m365/spo/commands/commandset/commandset-add.js +2 -1
  16. package/dist/m365/spo/commands/commandset/commandset-remove.js +12 -9
  17. package/dist/m365/spo/commands/commandset/commandset-set.js +12 -9
  18. package/dist/m365/spo/commands/homesite/homesite-set.js +33 -15
  19. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-remove.js +2 -2
  20. package/dist/m365/spo/commands.js +1 -0
  21. package/dist/m365/teams/commands/team/team-list.js +4 -6
  22. package/dist/m365/todo/commands/task/task-add.js +35 -3
  23. package/dist/m365/todo/commands/task/task-set.js +25 -1
  24. package/dist/utils/md.js +4 -3
  25. package/dist/utils/validation.js +3 -2
  26. package/docs/docs/cmd/aad/app/app-add.md +3 -3
  27. package/docs/docs/cmd/flow/owner/{owner-add.md → owner-ensure.md} +6 -6
  28. package/docs/docs/cmd/spfx/project/project-upgrade.md +2 -2
  29. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-add.md +4 -1
  30. package/docs/docs/cmd/spo/applicationcustomizer/applicationcustomizer-list.md +109 -0
  31. package/docs/docs/cmd/spo/homesite/homesite-set.md +47 -2
  32. package/docs/docs/cmd/spo/list/list-view-remove.md +1 -1
  33. package/docs/docs/cmd/spo/list/list-view-set.md +2 -2
  34. package/docs/docs/cmd/teams/team/team-list.md +44 -4
  35. package/docs/docs/cmd/todo/task/task-add.md +47 -2
  36. package/docs/docs/cmd/todo/task/task-set.md +50 -0
  37. package/npm-shrinkwrap.json +2 -2
  38. package/package.json +3 -1
@@ -4,12 +4,15 @@ LABEL name="CLI for Microsoft 365 Development" \
4
4
  description="Development container for contributing to CLI for Microsoft 365" \
5
5
  homepage="https://pnp.github.io/cli-microsoft365" \
6
6
  maintainers="Waldek Mastykarz <waldek@mastykarz.nl>, \
7
- Velin Georgiev <velin.georgiev@gmail.com>, \
8
7
  Garry Trinder <garry.trinder@live.com>, \
9
8
  Albert-Jan Schot <appie@digiwijs.nl>, \
10
9
  Rabia Williams <rabiawilliams@gmail.com>, \
11
10
  Patrick Lamber <patrick@nubo.eu>, \
12
- Arjun Menon <arjun.umenon@gmail.com>"
11
+ Arjun Menon <arjun.umenon@gmail.com>, \
12
+ Adam Wojcik <adam.wojcik.it@gmail.com>, \
13
+ Martin Lingstuyl <mlingstuyl@live.com>, \
14
+ Jasey Waegebaert <jaseyw@gmigroup.be>, \
15
+ Milan Holemans <Milan.Holemans@vanroey.be>"
13
16
 
14
17
  ENV NPM_CONFIG_PREFIX=/home/cli-microsoft365-dev/.npm-global \
15
18
  PATH=$PATH:/home/cli-microsoft365-dev/.npm-global/bin
package/Dockerfile CHANGED
@@ -6,12 +6,15 @@ LABEL name="m365pnp/cli-microsoft365:${CLI_VERSION}" \
6
6
  description="Manage Microsoft 365 and SharePoint Framework projects on any platform" \
7
7
  homepage="https://pnp.github.io/cli-microsoft365" \
8
8
  maintainers="Waldek Mastykarz <waldek@mastykarz.nl>, \
9
- Velin Georgiev <velin.georgiev@gmail.com>, \
10
9
  Garry Trinder <garry.trinder@live.com>, \
11
10
  Albert-Jan Schot <appie@digiwijs.nl>, \
12
11
  Rabia Williams <rabiawilliams@gmail.com>, \
13
- Patrick Lamber <patrick@nubo.eu> \
14
- Arjun Menon <arjun.umenon@gmail.com>" \
12
+ Patrick Lamber <patrick@nubo.eu>, \
13
+ Arjun Menon <arjun.umenon@gmail.com>, \
14
+ Adam Wojcik <adam.wojcik.it@gmail.com>, \
15
+ Martin Lingstuyl <mlingstuyl@live.com>, \
16
+ Jasey Waegebaert <jaseyw@gmigroup.be>, \
17
+ Milan Holemans <Milan.Holemans@vanroey.be>" \
15
18
  com.azure.dev.pipelines.agent.handler.node.path="/usr/bin/node"
16
19
 
17
20
  RUN apk add --no-cache \
package/README.md CHANGED
@@ -15,8 +15,8 @@
15
15
  alt="GitHub" />
16
16
  </a>
17
17
 
18
- <a href="https://discord.gg/35HTFJ544b">
19
- <img src="https://img.shields.io/badge/Discord-Join-7289da?style=flat-square"
18
+ <a href="https://aka.ms/cli-m365/discord">
19
+ <img src="https://img.shields.io/badge/Discord-aka.ms/cli--m365/discord-7289da?style=flat-square"
20
20
  alt="Discord" />
21
21
  </a>
22
22
 
@@ -219,7 +219,7 @@ Checkout our [Wiki](https://github.com/pnp/cli-microsoft365/wiki) for guides on
219
219
  Join our community
220
220
  </h4>
221
221
  <p align="center">
222
- <a href="https://discord.gg/35HTFJ544b">
222
+ <a href="https://aka.ms/cli-m365/discord">
223
223
  <img alt="Discord" src="./docs/docs/images/discord-logo.png" width="100"/>
224
224
  </a>
225
225
  </p>
package/dist/Auth.js CHANGED
@@ -535,9 +535,7 @@ class Auth {
535
535
  resource = resource.substr(0, pos);
536
536
  }
537
537
  if (resource === 'https://api.bap.microsoft.com' || resource === 'https://api.powerapps.com') {
538
- // api.bap.microsoft.com and api.powerapps.com are not valid resources
539
- // we need to use https://management.azure.com/ instead
540
- resource = 'https://management.azure.com/';
538
+ resource = 'https://service.powerapps.com/';
541
539
  }
542
540
  if (resource === 'https://api.powerbi.com') {
543
541
  // api.powerbi.com is not a valid resource
package/dist/Command.js CHANGED
@@ -370,7 +370,7 @@ class Command {
370
370
  if (!value || typeof value !== 'string') {
371
371
  return;
372
372
  }
373
- const lowerCaseValue = value.toLowerCase();
373
+ const lowerCaseValue = value.toLowerCase().trim();
374
374
  if (lowerCaseValue === '@meid') {
375
375
  args.options[option] = accessToken_1.accessToken.getUserIdFromAccessToken(token);
376
376
  }
@@ -45,7 +45,11 @@ class FileListCommand extends GraphCommand_1.default {
45
45
  if (!webUrl.endsWith('/')) {
46
46
  webUrl += '/';
47
47
  }
48
- const folderUrl = new URL(args.options.folderUrl, webUrl);
48
+ let folderUrlValue = args.options.folderUrl;
49
+ if (folderUrlValue.endsWith('/')) {
50
+ folderUrlValue = folderUrlValue.slice(0, -1);
51
+ }
52
+ const folderUrl = new URL(folderUrlValue, webUrl);
49
53
  let driveId = '';
50
54
  try {
51
55
  const siteId = yield this.getSiteId(args.options.webUrl, logger);
@@ -20,9 +20,9 @@ const path = require("path");
20
20
  const request_1 = require("../../../request");
21
21
  const formatting_1 = require("../../../utils/formatting");
22
22
  const validation_1 = require("../../../utils/validation");
23
- const AzmgmtCommand_1 = require("../../base/AzmgmtCommand");
23
+ const PowerPlatformCommand_1 = require("../../base/PowerPlatformCommand");
24
24
  const commands_1 = require("../commands");
25
- class FlowExportCommand extends AzmgmtCommand_1.default {
25
+ class FlowExportCommand extends PowerPlatformCommand_1.default {
26
26
  get name() {
27
27
  return commands_1.default.EXPORT;
28
28
  }
@@ -52,7 +52,7 @@ class FlowExportCommand extends AzmgmtCommand_1.default {
52
52
  }
53
53
  else {
54
54
  const requestOptions = {
55
- url: `https://api.bap.microsoft.com/providers/Microsoft.BusinessAppPlatform/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/listPackageResources?api-version=2016-11-01`,
55
+ url: `${this.resource}/providers/Microsoft.BusinessAppPlatform/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/listPackageResources?api-version=2016-11-01`,
56
56
  headers: {
57
57
  accept: 'application/json'
58
58
  },
@@ -73,8 +73,8 @@ class FlowExportCommand extends AzmgmtCommand_1.default {
73
73
  }
74
74
  let requestOptions = {
75
75
  url: formatArgument === 'json' ?
76
- `${this.resource}providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting_1.formatting.encodeQueryParameter(args.options.id)}?api-version=2016-11-01`
77
- : `https://api.bap.microsoft.com/providers/Microsoft.BusinessAppPlatform/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/exportPackage?api-version=2016-11-01`,
76
+ `https://management.azure.com/providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting_1.formatting.encodeQueryParameter(args.options.id)}?api-version=2016-11-01`
77
+ : `${this.resource}/providers/Microsoft.BusinessAppPlatform/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/exportPackage?api-version=2016-11-01`,
78
78
  headers: {
79
79
  accept: 'application/json'
80
80
  },
@@ -117,7 +117,7 @@ class FlowExportCommand extends AzmgmtCommand_1.default {
117
117
  }
118
118
  requestOptions = {
119
119
  url: formatArgument === 'json' ?
120
- `${this.resource}providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting_1.formatting.encodeQueryParameter(args.options.id)}/exportToARMTemplate?api-version=2016-11-01`
120
+ `https://management.azure.com/providers/Microsoft.ProcessSimple/environments/${formatting_1.formatting.encodeQueryParameter(args.options.environmentName)}/flows/${formatting_1.formatting.encodeQueryParameter(args.options.id)}/exportToARMTemplate?api-version=2016-11-01`
121
121
  : downloadFileUrl,
122
122
  // Set responseType to arraybuffer, otherwise binary data will be encoded
123
123
  // to utf8 and binary data is corrupt
@@ -13,7 +13,7 @@ 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 _FlowOwnerAddCommand_instances, _FlowOwnerAddCommand_initTelemetry, _FlowOwnerAddCommand_initOptions, _FlowOwnerAddCommand_initOptionSets, _FlowOwnerAddCommand_initValidators;
16
+ var _FlowOwnerEnsureCommand_instances, _FlowOwnerEnsureCommand_initTelemetry, _FlowOwnerEnsureCommand_initOptions, _FlowOwnerEnsureCommand_initOptionSets, _FlowOwnerEnsureCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
19
  const aadGroup_1 = require("../../../../utils/aadGroup");
@@ -22,20 +22,20 @@ const formatting_1 = require("../../../../utils/formatting");
22
22
  const validation_1 = require("../../../../utils/validation");
23
23
  const AzmgmtCommand_1 = require("../../../base/AzmgmtCommand");
24
24
  const commands_1 = require("../../commands");
25
- class FlowOwnerAddCommand extends AzmgmtCommand_1.default {
25
+ class FlowOwnerEnsureCommand extends AzmgmtCommand_1.default {
26
26
  get name() {
27
- return commands_1.default.OWNER_ADD;
27
+ return commands_1.default.OWNER_ENSURE;
28
28
  }
29
29
  get description() {
30
- return 'Assigns permissions to a Power Automate flow';
30
+ return 'Assigns/updates permissions to a Power Automate flow';
31
31
  }
32
32
  constructor() {
33
33
  super();
34
- _FlowOwnerAddCommand_instances.add(this);
35
- __classPrivateFieldGet(this, _FlowOwnerAddCommand_instances, "m", _FlowOwnerAddCommand_initTelemetry).call(this);
36
- __classPrivateFieldGet(this, _FlowOwnerAddCommand_instances, "m", _FlowOwnerAddCommand_initOptions).call(this);
37
- __classPrivateFieldGet(this, _FlowOwnerAddCommand_instances, "m", _FlowOwnerAddCommand_initValidators).call(this);
38
- __classPrivateFieldGet(this, _FlowOwnerAddCommand_instances, "m", _FlowOwnerAddCommand_initOptionSets).call(this);
34
+ _FlowOwnerEnsureCommand_instances.add(this);
35
+ __classPrivateFieldGet(this, _FlowOwnerEnsureCommand_instances, "m", _FlowOwnerEnsureCommand_initTelemetry).call(this);
36
+ __classPrivateFieldGet(this, _FlowOwnerEnsureCommand_instances, "m", _FlowOwnerEnsureCommand_initOptions).call(this);
37
+ __classPrivateFieldGet(this, _FlowOwnerEnsureCommand_instances, "m", _FlowOwnerEnsureCommand_initValidators).call(this);
38
+ __classPrivateFieldGet(this, _FlowOwnerEnsureCommand_instances, "m", _FlowOwnerEnsureCommand_initOptionSets).call(this);
39
39
  }
40
40
  commandAction(logger, args) {
41
41
  return __awaiter(this, void 0, void 0, function* () {
@@ -91,7 +91,7 @@ class FlowOwnerAddCommand extends AzmgmtCommand_1.default {
91
91
  });
92
92
  }
93
93
  }
94
- _FlowOwnerAddCommand_instances = new WeakSet(), _FlowOwnerAddCommand_initTelemetry = function _FlowOwnerAddCommand_initTelemetry() {
94
+ _FlowOwnerEnsureCommand_instances = new WeakSet(), _FlowOwnerEnsureCommand_initTelemetry = function _FlowOwnerEnsureCommand_initTelemetry() {
95
95
  this.telemetry.push((args) => {
96
96
  Object.assign(this.telemetryProperties, {
97
97
  asAdmin: !!args.options.asAdmin,
@@ -101,7 +101,7 @@ _FlowOwnerAddCommand_instances = new WeakSet(), _FlowOwnerAddCommand_initTelemet
101
101
  groupName: typeof args.options.groupName !== 'undefined'
102
102
  });
103
103
  });
104
- }, _FlowOwnerAddCommand_initOptions = function _FlowOwnerAddCommand_initOptions() {
104
+ }, _FlowOwnerEnsureCommand_initOptions = function _FlowOwnerEnsureCommand_initOptions() {
105
105
  this.options.unshift({
106
106
  option: '-e, --environmentName <environmentName>'
107
107
  }, {
@@ -116,13 +116,13 @@ _FlowOwnerAddCommand_instances = new WeakSet(), _FlowOwnerAddCommand_initTelemet
116
116
  option: '--groupName [groupName]'
117
117
  }, {
118
118
  option: '--roleName <roleName>',
119
- autocomplete: FlowOwnerAddCommand.allowedRoleNames
119
+ autocomplete: FlowOwnerEnsureCommand.allowedRoleNames
120
120
  }, {
121
121
  option: '--asAdmin'
122
122
  });
123
- }, _FlowOwnerAddCommand_initOptionSets = function _FlowOwnerAddCommand_initOptionSets() {
123
+ }, _FlowOwnerEnsureCommand_initOptionSets = function _FlowOwnerEnsureCommand_initOptionSets() {
124
124
  this.optionSets.push({ options: ['userId', 'userName', 'groupId', 'groupName'] });
125
- }, _FlowOwnerAddCommand_initValidators = function _FlowOwnerAddCommand_initValidators() {
125
+ }, _FlowOwnerEnsureCommand_initValidators = function _FlowOwnerEnsureCommand_initValidators() {
126
126
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
127
127
  if (!validation_1.validation.isValidGuid(args.options.flowName)) {
128
128
  return `${args.options.flowName} is not a valid GUID.`;
@@ -136,12 +136,12 @@ _FlowOwnerAddCommand_instances = new WeakSet(), _FlowOwnerAddCommand_initTelemet
136
136
  if (args.options.groupId && !validation_1.validation.isValidGuid(args.options.groupId)) {
137
137
  return `${args.options.groupId} is not a valid GUID.`;
138
138
  }
139
- if (FlowOwnerAddCommand.allowedRoleNames.indexOf(args.options.roleName) === -1) {
140
- return `${args.options.roleName} is not a valid roleName. Valid values are: ${FlowOwnerAddCommand.allowedRoleNames.join(', ')}`;
139
+ if (FlowOwnerEnsureCommand.allowedRoleNames.indexOf(args.options.roleName) === -1) {
140
+ return `${args.options.roleName} is not a valid roleName. Valid values are: ${FlowOwnerEnsureCommand.allowedRoleNames.join(', ')}`;
141
141
  }
142
142
  return true;
143
143
  }));
144
144
  };
145
- FlowOwnerAddCommand.allowedRoleNames = ['CanView', 'CanEdit'];
146
- module.exports = new FlowOwnerAddCommand();
147
- //# sourceMappingURL=owner-add.js.map
145
+ FlowOwnerEnsureCommand.allowedRoleNames = ['CanView', 'CanEdit'];
146
+ module.exports = new FlowOwnerEnsureCommand();
147
+ //# sourceMappingURL=owner-ensure.js.map
@@ -11,7 +11,7 @@ exports.default = {
11
11
  EXPORT: `${prefix} export`,
12
12
  GET: `${prefix} get`,
13
13
  LIST: `${prefix} list`,
14
- OWNER_ADD: `${prefix} owner add`,
14
+ OWNER_ENSURE: `${prefix} owner ensure`,
15
15
  OWNER_LIST: `${prefix} owner list`,
16
16
  OWNER_REMOVE: `${prefix} owner remove`,
17
17
  REMOVE: `${prefix} remove`,
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FN014009_CODE_launch_hostedWorkbench_url = void 0;
4
+ const path = require("path");
5
+ const JsonRule_1 = require("../../JsonRule");
6
+ class FN014009_CODE_launch_hostedWorkbench_url extends JsonRule_1.JsonRule {
7
+ constructor(url) {
8
+ super();
9
+ this.url = url;
10
+ }
11
+ get id() {
12
+ return 'FN014009';
13
+ }
14
+ get title() {
15
+ return 'Hosted workbench URL in .vscode/launch.json';
16
+ }
17
+ get description() {
18
+ return `In the .vscode/launch.json file, update the url property for the hosted workbench launch configuration`;
19
+ }
20
+ get resolution() {
21
+ return `{
22
+ "configurations": [
23
+ {
24
+ "url": "${this.url}"
25
+ }
26
+ ]
27
+ }`;
28
+ }
29
+ get resolutionType() {
30
+ return 'json';
31
+ }
32
+ get severity() {
33
+ return 'Recommended';
34
+ }
35
+ get file() {
36
+ return '.vscode/launch.json';
37
+ }
38
+ visit(project, findings) {
39
+ if (!project.vsCode ||
40
+ !project.vsCode.launchJson ||
41
+ !project.vsCode.launchJson.configurations) {
42
+ return;
43
+ }
44
+ const occurrences = [];
45
+ project.vsCode.launchJson.configurations.forEach((configuration, i) => {
46
+ if (configuration.name === 'Hosted workbench' &&
47
+ configuration.url !== this.url) {
48
+ const node = this.getAstNodeFromFile(project.vsCode.launchJson, `configurations[${i}].url`);
49
+ occurrences.push({
50
+ file: path.relative(project.path, this.file),
51
+ resolution: this.resolution,
52
+ position: this.getPositionFromNode(node)
53
+ });
54
+ }
55
+ });
56
+ if (occurrences.length > 0) {
57
+ this.addFindingWithOccurrences(occurrences, findings);
58
+ }
59
+ }
60
+ }
61
+ exports.FN014009_CODE_launch_hostedWorkbench_url = FN014009_CODE_launch_hostedWorkbench_url;
62
+ //# sourceMappingURL=FN014009_CODE_launch_hostedWorkbench_url.js.map
@@ -0,0 +1,67 @@
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 FN002020_DEVDEP_microsoft_rush_stack_compiler_4_5_1 = require("./rules/FN002020_DEVDEP_microsoft_rush_stack_compiler_4_5");
26
+ const FN002022_DEVDEP_microsoft_eslint_plugin_spfx_1 = require("./rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx");
27
+ const FN002023_DEVDEP_microsoft_eslint_config_spfx_1 = require("./rules/FN002023_DEVDEP_microsoft_eslint_config_spfx");
28
+ const FN002024_DEVDEP_eslint_1 = require("./rules/FN002024_DEVDEP_eslint");
29
+ const FN007002_CFG_S_initialPage_1 = require("./rules/FN007002_CFG_S_initialPage");
30
+ const FN010001_YORC_version_1 = require("./rules/FN010001_YORC_version");
31
+ const FN010010_YORC_sdkVersions_teams_js_1 = require("./rules/FN010010_YORC_sdkVersions_teams_js");
32
+ const FN014008_CODE_launch_hostedWorkbench_type_1 = require("./rules/FN014008_CODE_launch_hostedWorkbench_type");
33
+ const FN014009_CODE_launch_hostedWorkbench_url_1 = require("./rules/FN014009_CODE_launch_hostedWorkbench_url");
34
+ module.exports = [
35
+ new FN001001_DEP_microsoft_sp_core_library_1.FN001001_DEP_microsoft_sp_core_library('1.17.0'),
36
+ new FN001002_DEP_microsoft_sp_lodash_subset_1.FN001002_DEP_microsoft_sp_lodash_subset('1.17.0'),
37
+ new FN001003_DEP_microsoft_sp_office_ui_fabric_core_1.FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.17.0'),
38
+ new FN001004_DEP_microsoft_sp_webpart_base_1.FN001004_DEP_microsoft_sp_webpart_base('1.17.0'),
39
+ new FN001011_DEP_microsoft_sp_dialog_1.FN001011_DEP_microsoft_sp_dialog('1.17.0'),
40
+ new FN001012_DEP_microsoft_sp_application_base_1.FN001012_DEP_microsoft_sp_application_base('1.17.0'),
41
+ new FN001014_DEP_microsoft_sp_listview_extensibility_1.FN001014_DEP_microsoft_sp_listview_extensibility('1.17.0'),
42
+ new FN001021_DEP_microsoft_sp_property_pane_1.FN001021_DEP_microsoft_sp_property_pane('1.17.0'),
43
+ new FN001023_DEP_microsoft_sp_component_base_1.FN001023_DEP_microsoft_sp_component_base('1.17.0'),
44
+ new FN001024_DEP_microsoft_sp_diagnostics_1.FN001024_DEP_microsoft_sp_diagnostics('1.17.0'),
45
+ new FN001025_DEP_microsoft_sp_dynamic_data_1.FN001025_DEP_microsoft_sp_dynamic_data('1.17.0'),
46
+ new FN001026_DEP_microsoft_sp_extension_base_1.FN001026_DEP_microsoft_sp_extension_base('1.17.0'),
47
+ new FN001027_DEP_microsoft_sp_http_1.FN001027_DEP_microsoft_sp_http('1.17.0'),
48
+ new FN001028_DEP_microsoft_sp_list_subscription_1.FN001028_DEP_microsoft_sp_list_subscription('1.17.0'),
49
+ new FN001029_DEP_microsoft_sp_loader_1.FN001029_DEP_microsoft_sp_loader('1.17.0'),
50
+ new FN001030_DEP_microsoft_sp_module_interfaces_1.FN001030_DEP_microsoft_sp_module_interfaces('1.17.0'),
51
+ new FN001031_DEP_microsoft_sp_odata_types_1.FN001031_DEP_microsoft_sp_odata_types('1.17.0'),
52
+ new FN001032_DEP_microsoft_sp_page_context_1.FN001032_DEP_microsoft_sp_page_context('1.17.0'),
53
+ new FN001013_DEP_microsoft_decorators_1.FN001013_DEP_microsoft_decorators('1.17.0'),
54
+ new FN001034_DEP_microsoft_sp_adaptive_card_extension_base_1.FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.17.0'),
55
+ new FN002022_DEVDEP_microsoft_eslint_plugin_spfx_1.FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.17.0'),
56
+ new FN002023_DEVDEP_microsoft_eslint_config_spfx_1.FN002023_DEVDEP_microsoft_eslint_config_spfx('1.17.0'),
57
+ new FN002001_DEVDEP_microsoft_sp_build_web_1.FN002001_DEVDEP_microsoft_sp_build_web('1.17.0'),
58
+ new FN002002_DEVDEP_microsoft_sp_module_interfaces_1.FN002002_DEVDEP_microsoft_sp_module_interfaces('1.17.0'),
59
+ new FN002020_DEVDEP_microsoft_rush_stack_compiler_4_5_1.FN002020_DEVDEP_microsoft_rush_stack_compiler_4_5('0.4.0'),
60
+ new FN002024_DEVDEP_eslint_1.FN002024_DEVDEP_eslint('8.7.0'),
61
+ new FN007002_CFG_S_initialPage_1.FN007002_CFG_S_initialPage('https://{tenantDomain}/_layouts/workbench.aspx'),
62
+ new FN010001_YORC_version_1.FN010001_YORC_version('1.17.0'),
63
+ new FN010010_YORC_sdkVersions_teams_js_1.FN010010_YORC_sdkVersions_teams_js('2.9.1'),
64
+ new FN014008_CODE_launch_hostedWorkbench_type_1.FN014008_CODE_launch_hostedWorkbench_type('edge'),
65
+ new FN014009_CODE_launch_hostedWorkbench_url_1.FN014009_CODE_launch_hostedWorkbench_url('https://{tenantDomain}/_layouts/workbench.aspx')
66
+ ];
67
+ //# sourceMappingURL=upgrade-1.17.0.js.map
@@ -74,7 +74,8 @@ class SpfxProjectUpgradeCommand extends base_project_command_1.BaseProjectComman
74
74
  '1.15.0',
75
75
  '1.15.2',
76
76
  '1.16.0',
77
- '1.16.1'
77
+ '1.16.1',
78
+ '1.17.0'
78
79
  ];
79
80
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
80
81
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
@@ -15,11 +15,10 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
15
15
  };
16
16
  var _SpoApplicationCustomizerAddCommand_instances, _SpoApplicationCustomizerAddCommand_initOptions, _SpoApplicationCustomizerAddCommand_initTelemetry, _SpoApplicationCustomizerAddCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const Cli_1 = require("../../../../cli/Cli");
18
+ const request_1 = require("../../../../request");
19
19
  const validation_1 = require("../../../../utils/validation");
20
20
  const SpoCommand_1 = require("../../../base/SpoCommand");
21
21
  const commands_1 = require("../../commands");
22
- const spoCustomActionAddCommand = require("../customaction/customaction-add");
23
22
  class SpoApplicationCustomizerAddCommand extends SpoCommand_1.default {
24
23
  get name() {
25
24
  return commands_1.default.APPLICATIONCUSTOMIZER_ADD;
@@ -39,17 +38,25 @@ class SpoApplicationCustomizerAddCommand extends SpoCommand_1.default {
39
38
  if (this.verbose) {
40
39
  logger.logToStderr(`Adding application customizer with title '${args.options.title}' and clientSideComponentId '${args.options.clientSideComponentId}' to the site`);
41
40
  }
42
- const options = {
43
- webUrl: args.options.webUrl,
44
- name: args.options.title,
45
- title: args.options.title,
46
- clientSideComponentId: args.options.clientSideComponentId,
47
- clientSideComponentProperties: args.options.clientSideComponentProperties || '',
48
- location: 'ClientSideExtension.ApplicationCustomizer',
49
- debug: this.debug,
50
- verbose: this.verbose
41
+ const requestBody = {
42
+ Title: args.options.title,
43
+ Name: args.options.title,
44
+ Location: 'ClientSideExtension.ApplicationCustomizer',
45
+ ClientSideComponentId: args.options.clientSideComponentId
51
46
  };
52
- yield Cli_1.Cli.executeCommand(spoCustomActionAddCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
47
+ if (args.options.clientSideComponentProperties) {
48
+ requestBody.ClientSideComponentProperties = args.options.clientSideComponentProperties;
49
+ }
50
+ const scope = args.options.scope || 'Site';
51
+ const requestOptions = {
52
+ url: `${args.options.webUrl}/_api/${scope}/UserCustomActions`,
53
+ headers: {
54
+ accept: 'application/json;odata=nometadata'
55
+ },
56
+ data: requestBody,
57
+ responseType: 'json'
58
+ };
59
+ yield request_1.default.post(requestOptions);
53
60
  });
54
61
  }
55
62
  }
@@ -62,11 +69,14 @@ _SpoApplicationCustomizerAddCommand_instances = new WeakSet(), _SpoApplicationCu
62
69
  option: '-i, --clientSideComponentId <clientSideComponentId>'
63
70
  }, {
64
71
  option: '--clientSideComponentProperties [clientSideComponentProperties]'
72
+ }, {
73
+ option: '-s, --scope [scope]', autocomplete: SpoApplicationCustomizerAddCommand.scopes
65
74
  });
66
75
  }, _SpoApplicationCustomizerAddCommand_initTelemetry = function _SpoApplicationCustomizerAddCommand_initTelemetry() {
67
76
  this.telemetry.push((args) => {
68
77
  Object.assign(this.telemetryProperties, {
69
- clientSideComponentProperties: typeof args.options.clientSideComponentProperties !== 'undefined'
78
+ clientSideComponentProperties: typeof args.options.clientSideComponentProperties !== 'undefined',
79
+ scope: typeof args.options.scope !== 'undefined'
70
80
  });
71
81
  });
72
82
  }, _SpoApplicationCustomizerAddCommand_initValidators = function _SpoApplicationCustomizerAddCommand_initValidators() {
@@ -88,8 +98,12 @@ _SpoApplicationCustomizerAddCommand_instances = new WeakSet(), _SpoApplicationCu
88
98
  return `An error has occurred while parsing clientSideComponentProperties: ${e}`;
89
99
  }
90
100
  }
101
+ if (args.options.scope && SpoApplicationCustomizerAddCommand.scopes.indexOf(args.options.scope) < 0) {
102
+ return `${args.options.scope} is not a valid value for allowedMembers. Valid values are ${SpoApplicationCustomizerAddCommand.scopes.join(', ')}`;
103
+ }
91
104
  return true;
92
105
  }));
93
106
  };
107
+ SpoApplicationCustomizerAddCommand.scopes = ['Site', 'Web'];
94
108
  module.exports = new SpoApplicationCustomizerAddCommand();
95
109
  //# sourceMappingURL=applicationcustomizer-add.js.map
@@ -0,0 +1,72 @@
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 _SpoApplicationCustomizerListCommand_instances, _SpoApplicationCustomizerListCommand_initOptions, _SpoApplicationCustomizerListCommand_initTelemetry, _SpoApplicationCustomizerListCommand_initValidators;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const spo_1 = require("../../../../utils/spo");
19
+ const validation_1 = require("../../../../utils/validation");
20
+ const SpoCommand_1 = require("../../../base/SpoCommand");
21
+ const commands_1 = require("../../commands");
22
+ class SpoApplicationCustomizerListCommand extends SpoCommand_1.default {
23
+ get name() {
24
+ return commands_1.default.APPLICATIONCUSTOMIZER_LIST;
25
+ }
26
+ get description() {
27
+ return 'Get a list of application customizers that are added to a site.';
28
+ }
29
+ defaultProperties() {
30
+ return ['Name', 'Location', 'Scope', 'Id'];
31
+ }
32
+ constructor() {
33
+ super();
34
+ _SpoApplicationCustomizerListCommand_instances.add(this);
35
+ __classPrivateFieldGet(this, _SpoApplicationCustomizerListCommand_instances, "m", _SpoApplicationCustomizerListCommand_initTelemetry).call(this);
36
+ __classPrivateFieldGet(this, _SpoApplicationCustomizerListCommand_instances, "m", _SpoApplicationCustomizerListCommand_initOptions).call(this);
37
+ __classPrivateFieldGet(this, _SpoApplicationCustomizerListCommand_instances, "m", _SpoApplicationCustomizerListCommand_initValidators).call(this);
38
+ }
39
+ commandAction(logger, args) {
40
+ return __awaiter(this, void 0, void 0, function* () {
41
+ if (this.verbose) {
42
+ logger.logToStderr(`Retrieving application customizers...`);
43
+ }
44
+ const applicationCustomizers = yield spo_1.spo.getCustomActions(args.options.webUrl, args.options.scope, `Location eq 'ClientSideExtension.ApplicationCustomizer'`);
45
+ logger.log(applicationCustomizers);
46
+ });
47
+ }
48
+ }
49
+ _SpoApplicationCustomizerListCommand_instances = new WeakSet(), _SpoApplicationCustomizerListCommand_initOptions = function _SpoApplicationCustomizerListCommand_initOptions() {
50
+ this.options.unshift({
51
+ option: '-u, --webUrl <webUrl>'
52
+ }, {
53
+ option: '-s, --scope [scope]',
54
+ autocomplete: SpoApplicationCustomizerListCommand.scopes
55
+ });
56
+ }, _SpoApplicationCustomizerListCommand_initTelemetry = function _SpoApplicationCustomizerListCommand_initTelemetry() {
57
+ this.telemetry.push((args) => {
58
+ Object.assign(this.telemetryProperties, {
59
+ scope: typeof args.options.scope !== 'undefined'
60
+ });
61
+ });
62
+ }, _SpoApplicationCustomizerListCommand_initValidators = function _SpoApplicationCustomizerListCommand_initValidators() {
63
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
64
+ if (args.options.scope && SpoApplicationCustomizerListCommand.scopes.indexOf(args.options.scope) < 0) {
65
+ return `${args.options.scope} is not a valid scope. Allowed values are ${SpoApplicationCustomizerListCommand.scopes.join(', ')}`;
66
+ }
67
+ return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
68
+ }));
69
+ };
70
+ SpoApplicationCustomizerListCommand.scopes = ['All', 'Site', 'Web'];
71
+ module.exports = new SpoApplicationCustomizerListCommand();
72
+ //# sourceMappingURL=applicationcustomizer-list.js.map
@@ -48,7 +48,8 @@ class SpoCommandSetAddCommand extends SpoCommand_1.default {
48
48
  Title: args.options.title,
49
49
  Location: location,
50
50
  ClientSideComponentId: args.options.clientSideComponentId,
51
- RegistrationId: listType
51
+ RegistrationId: listType,
52
+ RegistrationType: 1
52
53
  };
53
54
  if (args.options.clientSideComponentProperties) {
54
55
  requestBody.ClientSideComponentProperties = args.options.clientSideComponentProperties;
@@ -58,36 +58,39 @@ class SpoCommandSetRemoveCommand extends SpoCommand_1.default {
58
58
  }
59
59
  });
60
60
  }
61
- getCommandSetId(options) {
61
+ getCustomAction(options) {
62
62
  return __awaiter(this, void 0, void 0, function* () {
63
+ let commandSets = [];
63
64
  if (options.id) {
64
- return options.id;
65
+ const commandSet = yield spo_1.spo.getCustomActionById(options.webUrl, options.id, options.scope);
66
+ if (commandSet) {
67
+ commandSets.push(commandSet);
68
+ }
65
69
  }
66
- let commandSets = [];
67
- if (options.title) {
70
+ else if (options.title) {
68
71
  commandSets = yield spo_1.spo.getCustomActions(options.webUrl, options.scope, `(Title eq '${formatting_1.formatting.encodeQueryParameter(options.title)}') and (startswith(Location,'ClientSideExtension.ListViewCommandSet'))`);
69
72
  }
70
73
  else {
71
74
  commandSets = yield spo_1.spo.getCustomActions(options.webUrl, options.scope, `(ClientSideComponentId eq guid'${options.clientSideComponentId}') and (startswith(Location,'ClientSideExtension.ListViewCommandSet'))`);
72
75
  }
73
76
  if (commandSets.length === 0) {
74
- throw `No user commandsets with ${options.title ? `title '${options.title}'` : `ClientSideComponentId '${options.clientSideComponentId}'`} found`;
77
+ throw `No user commandsets with ${options.title && `title '${options.title}'` || options.clientSideComponentId && `ClientSideComponentId '${options.clientSideComponentId}'` || options.id && `id '${options.id}'`} found`;
75
78
  }
76
79
  if (commandSets.length > 1) {
77
80
  throw `Multiple user commandsets with ${options.title ? `title '${options.title}'` : `ClientSideComponentId '${options.clientSideComponentId}'`} found. Please disambiguate using IDs: ${commandSets.map((commandSet) => commandSet.Id).join(', ')}`;
78
81
  }
79
- return commandSets[0].Id;
82
+ return commandSets[0];
80
83
  });
81
84
  }
82
85
  deleteCommandset(args) {
83
86
  return __awaiter(this, void 0, void 0, function* () {
84
87
  if (!args.options.scope) {
85
- args.options.scope = 'Site';
88
+ args.options.scope = 'All';
86
89
  }
87
90
  try {
88
- const id = yield this.getCommandSetId(args.options);
91
+ const customAction = yield this.getCustomAction(args.options);
89
92
  const requestOptions = {
90
- url: `${args.options.webUrl}/_api/${args.options.scope}/UserCustomActions('${formatting_1.formatting.encodeQueryParameter(id)}')`,
93
+ url: `${args.options.webUrl}/_api/${customAction.Scope === 3 ? "Web" : "Site"}/UserCustomActions('${formatting_1.formatting.encodeQueryParameter(customAction.Id)}')`,
91
94
  headers: {
92
95
  accept: 'application/json;odata=nometadata'
93
96
  },