@pnp/cli-microsoft365 7.0.0-beta.7e7b4f8 → 7.0.0-beta.934602e

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 (71) hide show
  1. package/dist/m365/aad/commands/user/user-list.js +3 -6
  2. package/dist/m365/aad/commands/user/user-set.js +20 -20
  3. package/dist/m365/pa/commands/app/app-consent-set.js +2 -2
  4. package/dist/m365/pa/commands/app/app-export.js +3 -3
  5. package/dist/m365/pa/commands/app/app-list.js +5 -5
  6. package/dist/m365/planner/commands/roster/roster-member-add.js +3 -14
  7. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-get.js +2 -2
  8. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-list.js +2 -2
  9. package/dist/m365/pp/commands/aibuildermodel/aibuildermodel-remove.js +3 -3
  10. package/dist/m365/pp/commands/card/card-clone.js +3 -3
  11. package/dist/m365/pp/commands/card/card-get.js +2 -2
  12. package/dist/m365/pp/commands/card/card-list.js +2 -2
  13. package/dist/m365/pp/commands/card/card-remove.js +3 -3
  14. package/dist/m365/pp/commands/chatbot/chatbot-get.js +2 -2
  15. package/dist/m365/pp/commands/chatbot/chatbot-list.js +3 -3
  16. package/dist/m365/pp/commands/chatbot/chatbot-remove.js +3 -3
  17. package/dist/m365/pp/commands/dataverse/dataverse-table-get.js +2 -2
  18. package/dist/m365/pp/commands/dataverse/dataverse-table-list.js +2 -2
  19. package/dist/m365/pp/commands/dataverse/dataverse-table-remove.js +2 -2
  20. package/dist/m365/pp/commands/dataverse/dataverse-table-row-list.js +2 -2
  21. package/dist/m365/pp/commands/dataverse/dataverse-table-row-remove.js +2 -2
  22. package/dist/m365/pp/commands/solution/solution-get.js +2 -2
  23. package/dist/m365/pp/commands/solution/solution-list.js +2 -2
  24. package/dist/m365/pp/commands/solution/solution-publish.js +3 -3
  25. package/dist/m365/pp/commands/solution/solution-publisher-add.js +2 -2
  26. package/dist/m365/pp/commands/solution/solution-publisher-get.js +2 -2
  27. package/dist/m365/pp/commands/solution/solution-publisher-list.js +2 -2
  28. package/dist/m365/pp/commands/solution/solution-publisher-remove.js +3 -3
  29. package/dist/m365/pp/commands/solution/solution-remove.js +3 -3
  30. package/dist/m365/spo/commands/list/list-add.js +0 -9
  31. package/dist/m365/spo/commands/list/list-set.js +0 -9
  32. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +4 -4
  33. package/dist/m365/spo/commands/tenant/tenant-commandset-set.js +107 -24
  34. package/dist/m365/spo/commands/user/user-get.js +5 -5
  35. package/dist/m365/teams/commands/meeting/meeting-get.js +16 -24
  36. package/dist/m365/teams/commands/meeting/meeting-list.js +2 -15
  37. package/docs/docs/cmd/aad/user/user-list.mdx +0 -9
  38. package/docs/docs/cmd/aad/user/user-set.mdx +11 -11
  39. package/docs/docs/cmd/pa/app/app-consent-set.mdx +3 -3
  40. package/docs/docs/cmd/pa/app/app-export.mdx +3 -3
  41. package/docs/docs/cmd/pa/app/app-list.mdx +2 -2
  42. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-get.mdx +4 -4
  43. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-list.mdx +4 -4
  44. package/docs/docs/cmd/pp/aibuildermodel/aibuildermodel-remove.mdx +4 -4
  45. package/docs/docs/cmd/pp/card/card-clone.mdx +6 -6
  46. package/docs/docs/cmd/pp/card/card-get.mdx +6 -6
  47. package/docs/docs/cmd/pp/card/card-list.mdx +4 -4
  48. package/docs/docs/cmd/pp/card/card-remove.mdx +9 -9
  49. package/docs/docs/cmd/pp/chatbot/chatbot-get.mdx +6 -6
  50. package/docs/docs/cmd/pp/chatbot/chatbot-list.mdx +4 -4
  51. package/docs/docs/cmd/pp/chatbot/chatbot-remove.mdx +4 -4
  52. package/docs/docs/cmd/pp/dataverse/dataverse-table-get.mdx +2 -2
  53. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.mdx +2 -2
  54. package/docs/docs/cmd/pp/dataverse/dataverse-table-remove.mdx +1 -1
  55. package/docs/docs/cmd/pp/dataverse/dataverse-table-row-list.mdx +5 -5
  56. package/docs/docs/cmd/pp/dataverse/dataverse-table-row-remove.mdx +5 -5
  57. package/docs/docs/cmd/pp/solution/solution-get.mdx +6 -6
  58. package/docs/docs/cmd/pp/solution/solution-list.mdx +4 -4
  59. package/docs/docs/cmd/pp/solution/solution-publish.mdx +4 -4
  60. package/docs/docs/cmd/pp/solution/solution-publisher-add.mdx +3 -3
  61. package/docs/docs/cmd/pp/solution/solution-publisher-get.mdx +6 -6
  62. package/docs/docs/cmd/pp/solution/solution-publisher-list.mdx +4 -4
  63. package/docs/docs/cmd/pp/solution/solution-publisher-remove.mdx +5 -5
  64. package/docs/docs/cmd/pp/solution/solution-remove.mdx +9 -9
  65. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
  66. package/docs/docs/cmd/spo/list/list-add.mdx +0 -3
  67. package/docs/docs/cmd/spo/list/list-set.mdx +0 -3
  68. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.mdx +7 -7
  69. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +23 -11
  70. package/docs/docs/cmd/spo/user/user-get.mdx +6 -6
  71. package/package.json +1 -1
@@ -41,7 +41,7 @@ class PpSolutionPublishCommand extends PowerPlatformCommand_1.default {
41
41
  commandAction(logger, args) {
42
42
  return __awaiter(this, void 0, void 0, function* () {
43
43
  try {
44
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
44
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
45
45
  const solutionId = yield this.getSolutionId(args, logger);
46
46
  const solutionComponents = yield this.getSolutionComponents(dynamicsApiUrl, solutionId, logger);
47
47
  const parameterXml = this.buildXmlRequestObject(solutionComponents, logger);
@@ -95,7 +95,7 @@ class PpSolutionPublishCommand extends PowerPlatformCommand_1.default {
95
95
  logger.logToStderr(`Retrieving solutionId`);
96
96
  }
97
97
  const options = {
98
- environment: args.options.environment,
98
+ environmentName: args.options.environmentName,
99
99
  name: args.options.name,
100
100
  output: 'json',
101
101
  debug: this.debug,
@@ -132,7 +132,7 @@ _PpSolutionPublishCommand_instances = new WeakSet(), _PpSolutionPublishCommand_i
132
132
  });
133
133
  }, _PpSolutionPublishCommand_initOptions = function _PpSolutionPublishCommand_initOptions() {
134
134
  this.options.unshift({
135
- option: '-e, --environment <environment>'
135
+ option: '-e, --environmentName <environmentName>'
136
136
  }, {
137
137
  option: '-i, --id [id]'
138
138
  }, {
@@ -39,7 +39,7 @@ class PpSolutionPublisherAddCommand extends PowerPlatformCommand_1.default {
39
39
  logger.logToStderr(`Adding new publisher '${args.options.name}'...`);
40
40
  }
41
41
  try {
42
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
42
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
43
43
  const requestOptions = {
44
44
  url: `${dynamicsApiUrl}/api/data/v9.0/publishers`,
45
45
  headers: {
@@ -69,7 +69,7 @@ _PpSolutionPublisherAddCommand_instances = new WeakSet(), _PpSolutionPublisherAd
69
69
  });
70
70
  }, _PpSolutionPublisherAddCommand_initOptions = function _PpSolutionPublisherAddCommand_initOptions() {
71
71
  this.options.unshift({
72
- option: '-e, --environment <environment>'
72
+ option: '-e, --environmentName <environmentName>'
73
73
  }, {
74
74
  option: '-n, --name <name>'
75
75
  }, {
@@ -56,7 +56,7 @@ class PpSolutionPublisherGetCommand extends PowerPlatformCommand_1.default {
56
56
  responseType: 'json'
57
57
  };
58
58
  try {
59
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
59
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
60
60
  if (args.options.id) {
61
61
  requestOptions.url = `${dynamicsApiUrl}/api/data/v9.0/publishers(${args.options.id})?$select=publisherid,uniquename,friendlyname,versionnumber,isreadonly,description,customizationprefix,customizationoptionvalueprefix&api-version=9.1`;
62
62
  const result = yield request_1.default.get(requestOptions);
@@ -85,7 +85,7 @@ _PpSolutionPublisherGetCommand_instances = new WeakSet(), _PpSolutionPublisherGe
85
85
  });
86
86
  }, _PpSolutionPublisherGetCommand_initOptions = function _PpSolutionPublisherGetCommand_initOptions() {
87
87
  this.options.unshift({
88
- option: '-e, --environment <environment>'
88
+ option: '-e, --environmentName <environmentName>'
89
89
  }, {
90
90
  option: '-i, --id [id]'
91
91
  }, {
@@ -41,7 +41,7 @@ class PpSolutionPublisherListCommand extends PowerPlatformCommand_1.default {
41
41
  logger.logToStderr(`Retrieving list of publishers...`);
42
42
  }
43
43
  try {
44
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
44
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
45
45
  const requestOptions = {
46
46
  url: `${dynamicsApiUrl}/api/data/v9.0/publishers?$select=publisherid,uniquename,friendlyname,versionnumber,isreadonly,description,customizationprefix,customizationoptionvalueprefix${!args.options.includeMicrosoftPublishers ? `&$filter=publisherid ne 'd21aab70-79e7-11dd-8874-00188b01e34f'` : ''}&api-version=9.1`,
47
47
  headers: {
@@ -67,7 +67,7 @@ _PpSolutionPublisherListCommand_instances = new WeakSet(), _PpSolutionPublisherL
67
67
  });
68
68
  }, _PpSolutionPublisherListCommand_initOptions = function _PpSolutionPublisherListCommand_initOptions() {
69
69
  this.options.unshift({
70
- option: '-e, --environment <environment>'
70
+ option: '-e, --environmentName <environmentName>'
71
71
  }, {
72
72
  option: '--includeMicrosoftPublishers'
73
73
  }, {
@@ -64,7 +64,7 @@ class PpSolutionPublisherRemoveCommand extends PowerPlatformCommand_1.default {
64
64
  return args.options.id;
65
65
  }
66
66
  const options = {
67
- environment: args.options.environment,
67
+ environmentName: args.options.environmentName,
68
68
  name: args.options.name,
69
69
  output: 'json',
70
70
  debug: this.debug,
@@ -78,7 +78,7 @@ class PpSolutionPublisherRemoveCommand extends PowerPlatformCommand_1.default {
78
78
  deletePublisher(args) {
79
79
  return __awaiter(this, void 0, void 0, function* () {
80
80
  try {
81
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
81
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
82
82
  const publisherId = yield this.getPublisherId(args);
83
83
  const requestOptions = {
84
84
  url: `${dynamicsApiUrl}/api/data/v9.1/publishers(${publisherId})`,
@@ -106,7 +106,7 @@ _PpSolutionPublisherRemoveCommand_instances = new WeakSet(), _PpSolutionPublishe
106
106
  });
107
107
  }, _PpSolutionPublisherRemoveCommand_initOptions = function _PpSolutionPublisherRemoveCommand_initOptions() {
108
108
  this.options.unshift({
109
- option: '-e, --environment <environment>'
109
+ option: '-e, --environmentName <environmentName>'
110
110
  }, {
111
111
  option: '-i, --id [id]'
112
112
  }, {
@@ -64,7 +64,7 @@ class PpSolutionRemoveCommand extends PowerPlatformCommand_1.default {
64
64
  return args.options.id;
65
65
  }
66
66
  const options = {
67
- environment: args.options.environment,
67
+ environmentName: args.options.environmentName,
68
68
  name: args.options.name,
69
69
  output: 'json',
70
70
  debug: this.debug,
@@ -78,7 +78,7 @@ class PpSolutionRemoveCommand extends PowerPlatformCommand_1.default {
78
78
  deleteSolution(args) {
79
79
  return __awaiter(this, void 0, void 0, function* () {
80
80
  try {
81
- const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environment, args.options.asAdmin);
81
+ const dynamicsApiUrl = yield powerPlatform_1.powerPlatform.getDynamicsInstanceApiUrl(args.options.environmentName, args.options.asAdmin);
82
82
  const solutionId = yield this.getSolutionId(args);
83
83
  const requestOptions = {
84
84
  url: `${dynamicsApiUrl}/api/data/v9.1/solutions(${solutionId})`,
@@ -106,7 +106,7 @@ _PpSolutionRemoveCommand_instances = new WeakSet(), _PpSolutionRemoveCommand_ini
106
106
  });
107
107
  }, _PpSolutionRemoveCommand_initOptions = function _PpSolutionRemoveCommand_initOptions() {
108
108
  this.options.unshift({
109
- option: '-e, --environment <environment>'
109
+ option: '-e, --environmentName <environmentName>'
110
110
  }, {
111
111
  option: '-i, --id [id]'
112
112
  }, {
@@ -78,9 +78,6 @@ class SpoListAddCommand extends SpoCommand_1.default {
78
78
  }
79
79
  commandAction(logger, args) {
80
80
  return __awaiter(this, void 0, void 0, function* () {
81
- if (args.options.schemaXml) {
82
- this.warn(logger, `Option 'schemaXml' is deprecated.`);
83
- }
84
81
  if (this.verbose) {
85
82
  logger.logToStderr(`Creating list in site at ${args.options.webUrl}...`);
86
83
  }
@@ -114,9 +111,6 @@ class SpoListAddCommand extends SpoCommand_1.default {
114
111
  if (options.templateFeatureId) {
115
112
  requestBody.TemplateFeatureId = options.templateFeatureId;
116
113
  }
117
- if (options.schemaXml) {
118
- requestBody.SchemaXml = options.schemaXml.replace('\\', '\\\\').replace('"', '\\"');
119
- }
120
114
  if (options.allowDeletion !== undefined) {
121
115
  requestBody.AllowDeletion = options.allowDeletion;
122
116
  }
@@ -302,7 +296,6 @@ _SpoListAddCommand_instances = new WeakSet(), _SpoListAddCommand_initTelemetry =
302
296
  'baseTemplate',
303
297
  'description',
304
298
  'templateFeatureId',
305
- 'schemaXml',
306
299
  'defaultContentApprovalWorkflowId',
307
300
  'defaultDisplayFormUrl',
308
301
  'defaultEditFormUrl',
@@ -354,8 +347,6 @@ _SpoListAddCommand_instances = new WeakSet(), _SpoListAddCommand_initTelemetry =
354
347
  option: '--description [description]'
355
348
  }, {
356
349
  option: '--templateFeatureId [templateFeatureId]'
357
- }, {
358
- option: '--schemaXml [schemaXml]'
359
350
  }, {
360
351
  option: '--allowDeletion [allowDeletion]',
361
352
  autocomplete: ['true', 'false']
@@ -67,9 +67,6 @@ class SpoListSetCommand extends SpoCommand_1.default {
67
67
  }
68
68
  commandAction(logger, args) {
69
69
  return __awaiter(this, void 0, void 0, function* () {
70
- if (args.options.schemaXml) {
71
- this.warn(logger, `Option 'schemaXml' is deprecated.`);
72
- }
73
70
  if (this.verbose) {
74
71
  logger.logToStderr(`Updating list in site at ${args.options.webUrl}...`);
75
72
  }
@@ -116,9 +113,6 @@ class SpoListSetCommand extends SpoCommand_1.default {
116
113
  if (options.templateFeatureId) {
117
114
  requestBody.TemplateFeatureId = options.templateFeatureId;
118
115
  }
119
- if (options.schemaXml) {
120
- requestBody.SchemaXml = options.schemaXml.replace('\\', '\\\\').replace('"', '\\"');
121
- }
122
116
  if (options.allowDeletion !== undefined) {
123
117
  requestBody.AllowDeletion = options.allowDeletion;
124
118
  }
@@ -307,7 +301,6 @@ _SpoListSetCommand_instances = new WeakSet(), _SpoListSetCommand_initTelemetry =
307
301
  'newTitle',
308
302
  'description',
309
303
  'templateFeatureId',
310
- 'schemaXml',
311
304
  'defaultContentApprovalWorkflowId',
312
305
  'defaultDisplayFormUrl',
313
306
  'defaultEditFormUrl',
@@ -506,8 +499,6 @@ _SpoListSetCommand_instances = new WeakSet(), _SpoListSetCommand_initTelemetry =
506
499
  }, {
507
500
  option: '--restrictUserUpdates [restrictUserUpdates]',
508
501
  autocomplete: ['true', 'false']
509
- }, {
510
- option: '--schemaXml [schemaXml]'
511
502
  }, {
512
503
  option: '--sendToLocationName [sendToLocationName]'
513
504
  }, {
@@ -53,7 +53,7 @@ class SpoListItemAttachmentListCommand extends SpoCommand_1.default {
53
53
  requestUrl += `/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')`;
54
54
  }
55
55
  const requestOptions = {
56
- url: `${requestUrl}/items(${args.options.itemId})?$select=AttachmentFiles&$expand=AttachmentFiles`,
56
+ url: `${requestUrl}/items(${args.options.listItemId})?$select=AttachmentFiles&$expand=AttachmentFiles`,
57
57
  method: 'GET',
58
58
  headers: {
59
59
  'accept': 'application/json;odata=nometadata'
@@ -89,7 +89,7 @@ _SpoListItemAttachmentListCommand_instances = new WeakSet(), _SpoListItemAttachm
89
89
  this.options.unshift({
90
90
  option: '-u, --webUrl <webUrl>'
91
91
  }, {
92
- option: '--itemId <itemId>'
92
+ option: '--listItemId <listItemId>'
93
93
  }, {
94
94
  option: '--listId [listId]'
95
95
  }, {
@@ -106,8 +106,8 @@ _SpoListItemAttachmentListCommand_instances = new WeakSet(), _SpoListItemAttachm
106
106
  if (args.options.listId && !validation_1.validation.isValidGuid(args.options.listId)) {
107
107
  return `${args.options.listId} in option listId is not a valid GUID`;
108
108
  }
109
- if (isNaN(parseInt(args.options.itemId))) {
110
- return `${args.options.itemId} is not a number`;
109
+ if (isNaN(parseInt(args.options.listItemId))) {
110
+ return `${args.options.listItemId} is not a number`;
111
111
  }
112
112
  return true;
113
113
  }));
@@ -13,15 +13,19 @@ 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 _SpoTenantCommandSetSetCommand_instances, _SpoTenantCommandSetSetCommand_initTelemetry, _SpoTenantCommandSetSetCommand_initOptions, _SpoTenantCommandSetSetCommand_initValidators;
16
+ var _SpoTenantCommandSetSetCommand_instances, _SpoTenantCommandSetSetCommand_initTelemetry, _SpoTenantCommandSetSetCommand_initOptions, _SpoTenantCommandSetSetCommand_initValidators, _SpoTenantCommandSetSetCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const validation_1 = require("../../../../utils/validation");
19
19
  const SpoCommand_1 = require("../../../base/SpoCommand");
20
20
  const commands_1 = require("../../commands");
21
+ const os = require("os");
21
22
  const urlUtil_1 = require("../../../../utils/urlUtil");
23
+ const Cli_1 = require("../../../../cli/Cli");
24
+ const spoListItemListCommand = require("../listitem/listitem-list");
22
25
  const request_1 = require("../../../../request");
23
26
  const formatting_1 = require("../../../../utils/formatting");
24
27
  const spo_1 = require("../../../../utils/spo");
28
+ const odata_1 = require("../../../../utils/odata");
25
29
  class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
26
30
  get name() {
27
31
  return commands_1.default.TENANT_COMMANDSET_SET;
@@ -35,6 +39,7 @@ class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
35
39
  __classPrivateFieldGet(this, _SpoTenantCommandSetSetCommand_instances, "m", _SpoTenantCommandSetSetCommand_initTelemetry).call(this);
36
40
  __classPrivateFieldGet(this, _SpoTenantCommandSetSetCommand_instances, "m", _SpoTenantCommandSetSetCommand_initOptions).call(this);
37
41
  __classPrivateFieldGet(this, _SpoTenantCommandSetSetCommand_instances, "m", _SpoTenantCommandSetSetCommand_initValidators).call(this);
42
+ __classPrivateFieldGet(this, _SpoTenantCommandSetSetCommand_instances, "m", _SpoTenantCommandSetSetCommand_initOptionSets).call(this);
38
43
  }
39
44
  commandAction(logger, args) {
40
45
  return __awaiter(this, void 0, void 0, function* () {
@@ -43,34 +48,97 @@ class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
43
48
  if (!appCatalogUrl) {
44
49
  throw 'No app catalog URL found';
45
50
  }
46
- const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
47
- const listItem = yield this.getListItemById(logger, appCatalogUrl, listServerRelativeUrl, args.options.id);
48
- if (listItem.TenantWideExtensionLocation.indexOf("ClientSideExtension.ListViewCommandSet") === -1) {
49
- throw 'The item is not a ListViewCommandSet';
51
+ if (args.options.newClientSideComponentId !== undefined) {
52
+ const componentManifest = yield this.getComponentManifest(appCatalogUrl, args.options.newClientSideComponentId, logger);
53
+ const clientComponentManifest = JSON.parse(componentManifest.ClientComponentManifest);
54
+ if (clientComponentManifest.extensionType !== "ListViewCommandSet") {
55
+ throw `The extension type of this component is not of type 'ListViewCommandSet' but of type '${clientComponentManifest.extensionType}'`;
56
+ }
57
+ const solution = yield this.getSolutionFromAppCatalog(appCatalogUrl, componentManifest.SolutionId, logger);
58
+ if (!solution.ContainsTenantWideExtension) {
59
+ throw `The solution does not contain an extension that can be deployed to all sites. Make sure that you've entered the correct component Id.`;
60
+ }
61
+ else if (!solution.SkipFeatureDeployment) {
62
+ throw 'The solution has not been deployed to all sites. Make sure to deploy this solution to all sites.';
63
+ }
50
64
  }
51
- yield this.updateTenantWideExtension(appCatalogUrl, args.options, listServerRelativeUrl, logger);
65
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(appCatalogUrl, '/lists/TenantWideExtensions');
66
+ const listItemId = yield this.getListItemId(appCatalogUrl, args.options, listServerRelativeUrl, logger);
67
+ yield this.updateTenantWideExtension(logger, appCatalogUrl, args.options, listServerRelativeUrl, listItemId);
52
68
  }
53
69
  catch (err) {
54
70
  this.handleRejectedODataJsonPromise(err);
55
71
  }
56
72
  });
57
73
  }
58
- getListItemById(logger, webUrl, listServerRelativeUrl, id) {
74
+ getComponentManifest(appCatalogUrl, clientSideComponentId, logger) {
59
75
  return __awaiter(this, void 0, void 0, function* () {
60
76
  if (this.verbose) {
61
- logger.logToStderr(`Getting the list item by id ${id}`);
77
+ logger.logToStderr('Retrieving component manifest item from the ComponentManifests list on the app catalog site so that we get the solution id');
62
78
  }
63
- const reqOptions = {
64
- url: `${webUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Items(${id})`,
65
- headers: {
66
- 'accept': 'application/json;odata=nometadata'
67
- },
68
- responseType: 'json'
79
+ const camlQuery = `<View><ViewFields><FieldRef Name='ClientComponentId'></FieldRef><FieldRef Name='SolutionId'></FieldRef><FieldRef Name='ClientComponentManifest'></FieldRef></ViewFields><Query><Where><Eq><FieldRef Name='ClientComponentId' /><Value Type='Guid'>${clientSideComponentId}</Value></Eq></Where></Query></View>`;
80
+ const commandOptions = {
81
+ webUrl: appCatalogUrl,
82
+ listUrl: `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(appCatalogUrl)}/Lists/ComponentManifests`,
83
+ camlQuery: camlQuery,
84
+ verbose: this.verbose,
85
+ debug: this.debug,
86
+ output: 'json'
69
87
  };
70
- return yield request_1.default.get(reqOptions);
88
+ const output = yield Cli_1.Cli.executeCommandWithOutput(spoListItemListCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
89
+ if (this.verbose) {
90
+ logger.logToStderr(output.stderr);
91
+ }
92
+ const outputParsed = JSON.parse(output.stdout);
93
+ if (outputParsed.length === 0) {
94
+ throw 'No component found with the specified clientSideComponentId found in the component manifest list. Make sure that the application is added to the application catalog';
95
+ }
96
+ return outputParsed[0];
71
97
  });
72
98
  }
73
- updateTenantWideExtension(appCatalogUrl, options, listServerRelativeUrl, logger) {
99
+ getSolutionFromAppCatalog(appCatalogUrl, solutionId, logger) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ if (this.verbose) {
102
+ logger.logToStderr(`Retrieving solution with id ${solutionId} from the application catalog`);
103
+ }
104
+ const camlQuery = `<View><ViewFields><FieldRef Name='SkipFeatureDeployment'></FieldRef><FieldRef Name='ContainsTenantWideExtension'></FieldRef></ViewFields><Query><Where><Eq><FieldRef Name='AppProductID' /><Value Type='Guid'>${solutionId}</Value></Eq></Where></Query></View>`;
105
+ const commandOptions = {
106
+ webUrl: appCatalogUrl,
107
+ listUrl: `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(appCatalogUrl)}/AppCatalog`,
108
+ camlQuery: camlQuery,
109
+ verbose: this.verbose,
110
+ debug: this.debug,
111
+ output: 'json'
112
+ };
113
+ const output = yield Cli_1.Cli.executeCommandWithOutput(spoListItemListCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
114
+ if (this.verbose) {
115
+ logger.logToStderr(output.stderr);
116
+ }
117
+ const outputParsed = JSON.parse(output.stdout);
118
+ if (outputParsed.length === 0) {
119
+ throw `No component found with the solution id ${solutionId}. Make sure that the solution is available in the app catalog`;
120
+ }
121
+ return outputParsed[0];
122
+ });
123
+ }
124
+ getListItemId(appCatalogUrl, options, listServerRelativeUrl, logger) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ const { title, id, clientSideComponentId } = options;
127
+ const filter = title ? `Title eq '${title}'` : id ? `Id eq '${id}'` : `TenantWideExtensionComponentId eq '${clientSideComponentId}'`;
128
+ if (this.verbose) {
129
+ logger.logToStderr(`Getting tenant-wide listview commandset: "${title || id || clientSideComponentId}"...`);
130
+ }
131
+ const listItemInstances = yield odata_1.odata.getAllItems(`${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Items?$filter=startswith(TenantWideExtensionLocation, 'ClientSideExtension.ListViewCommandSet') and ${filter}`);
132
+ if (!listItemInstances || listItemInstances.length === 0) {
133
+ throw 'The specified listview commandset was not found';
134
+ }
135
+ if (listItemInstances.length > 1) {
136
+ throw `Multiple listview commandsets with ${title ? `title '${title}'` : `ClientSideComponentId '${clientSideComponentId}'`} found. Please disambiguate using IDs: ${os.EOL}${listItemInstances.map(item => `- ${item.Id}`).join(os.EOL)}`;
137
+ }
138
+ return listItemInstances[0].Id;
139
+ });
140
+ }
141
+ updateTenantWideExtension(logger, appCatalogUrl, options, listServerRelativeUrl, listItemId) {
74
142
  return __awaiter(this, void 0, void 0, function* () {
75
143
  if (this.verbose) {
76
144
  logger.logToStderr('Updating tenant wide extension to the TenantWideExtensions list');
@@ -82,10 +150,10 @@ class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
82
150
  FieldValue: options.newTitle
83
151
  });
84
152
  }
85
- if (options.clientSideComponentId !== undefined) {
153
+ if (options.newClientSideComponentId !== undefined) {
86
154
  formValues.push({
87
155
  FieldName: 'TenantWideExtensionComponentId',
88
- FieldValue: options.clientSideComponentId
156
+ FieldValue: options.newClientSideComponentId
89
157
  });
90
158
  }
91
159
  if (options.location !== undefined) {
@@ -113,7 +181,7 @@ class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
113
181
  });
114
182
  }
115
183
  const requestOptions = {
116
- url: `${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Items(${options.id})/ValidateUpdateListItem()`,
184
+ url: `${appCatalogUrl}/_api/web/GetList('${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}')/Items(${listItemId})/ValidateUpdateListItem()`,
117
185
  headers: {
118
186
  'accept': 'application/json;odata=nometadata'
119
187
  },
@@ -149,9 +217,12 @@ class SpoTenantCommandSetSetCommand extends SpoCommand_1.default {
149
217
  _SpoTenantCommandSetSetCommand_instances = new WeakSet(), _SpoTenantCommandSetSetCommand_initTelemetry = function _SpoTenantCommandSetSetCommand_initTelemetry() {
150
218
  this.telemetry.push((args) => {
151
219
  Object.assign(this.telemetryProperties, {
220
+ title: typeof args.options.title !== 'undefined',
221
+ id: typeof args.options.id !== 'undefined',
222
+ clientSideComponentId: typeof args.options.clientSideComponentId !== 'undefined',
152
223
  newTitle: typeof args.options.newTitle !== 'undefined',
153
224
  listType: args.options.listType,
154
- clientSideComponentId: typeof args.options.clientSideComponentId !== 'undefined',
225
+ newClientSideComponentId: typeof args.options.newClientSideComponentId !== 'undefined',
155
226
  clientSideComponentProperties: typeof args.options.clientSideComponentProperties !== 'undefined',
156
227
  webTemplate: typeof args.options.webTemplate !== 'undefined',
157
228
  location: args.options.location
@@ -159,14 +230,18 @@ _SpoTenantCommandSetSetCommand_instances = new WeakSet(), _SpoTenantCommandSetSe
159
230
  });
160
231
  }, _SpoTenantCommandSetSetCommand_initOptions = function _SpoTenantCommandSetSetCommand_initOptions() {
161
232
  this.options.unshift({
162
- option: '-i, --id <id>'
233
+ option: '-i, --id [id]'
234
+ }, {
235
+ option: '-t, --title [title]'
236
+ }, {
237
+ option: '-c, --clientSideComponentId [clientSideComponentId]'
163
238
  }, {
164
- option: '-t, --newTitle [newTitle]'
239
+ option: '--newTitle [newTitle]'
165
240
  }, {
166
241
  option: '-l, --listType [listType]',
167
242
  autocomplete: SpoTenantCommandSetSetCommand.listTypes
168
243
  }, {
169
- option: '-c, --clientSideComponentId [clientSideComponentId]'
244
+ option: '--newClientSideComponentId [newClientSideComponentId]'
170
245
  }, {
171
246
  option: '-p, --clientSideComponentProperties [clientSideComponentProperties]'
172
247
  }, {
@@ -179,15 +254,21 @@ _SpoTenantCommandSetSetCommand_instances = new WeakSet(), _SpoTenantCommandSetSe
179
254
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
180
255
  if (!args.options.newTitle &&
181
256
  !args.options.listType &&
182
- !args.options.clientSideComponentId &&
257
+ !args.options.newClientSideComponentId &&
183
258
  !args.options.clientSideComponentProperties &&
184
259
  !args.options.webTemplate &&
185
260
  !args.options.location) {
186
261
  return 'Specify at least one property to update';
187
262
  }
263
+ if (args.options.id && isNaN(parseInt(args.options.id))) {
264
+ return `${args.options.id} is not a number`;
265
+ }
188
266
  if (args.options.clientSideComponentId && !validation_1.validation.isValidGuid(args.options.clientSideComponentId)) {
189
267
  return `${args.options.clientSideComponentId} is not a valid GUID`;
190
268
  }
269
+ if (args.options.newClientSideComponentId && !validation_1.validation.isValidGuid(args.options.newClientSideComponentId)) {
270
+ return `${args.options.newClientSideComponentId} is not a valid GUID`;
271
+ }
191
272
  if (args.options.listType && SpoTenantCommandSetSetCommand.listTypes.indexOf(args.options.listType) < 0) {
192
273
  return `${args.options.listType} is not a valid list type. Allowed values are ${SpoTenantCommandSetSetCommand.listTypes.join(', ')}`;
193
274
  }
@@ -196,6 +277,8 @@ _SpoTenantCommandSetSetCommand_instances = new WeakSet(), _SpoTenantCommandSetSe
196
277
  }
197
278
  return true;
198
279
  }));
280
+ }, _SpoTenantCommandSetSetCommand_initOptionSets = function _SpoTenantCommandSetSetCommand_initOptionSets() {
281
+ this.optionSets.push({ options: ['title', 'id', 'clientSideComponentId'] });
199
282
  };
200
283
  SpoTenantCommandSetSetCommand.listTypes = ['List', 'Library', 'SitePages'];
201
284
  SpoTenantCommandSetSetCommand.locations = ['ContextMenu', 'CommandBar', 'Both'];
@@ -47,8 +47,8 @@ class SpoUserGetCommand extends SpoCommand_1.default {
47
47
  else if (args.options.email) {
48
48
  requestUrl = `${args.options.webUrl}/_api/web/siteusers/GetByEmail('${formatting_1.formatting.encodeQueryParameter(args.options.email)}')`;
49
49
  }
50
- else if (args.options.loginName) {
51
- requestUrl = `${args.options.webUrl}/_api/web/siteusers/GetByLoginName('${formatting_1.formatting.encodeQueryParameter(args.options.loginName)}')`;
50
+ else if (args.options.userName) {
51
+ requestUrl = `${args.options.webUrl}/_api/web/siteusers/GetByLoginName('${formatting_1.formatting.encodeQueryParameter(args.options.userName)}')`;
52
52
  }
53
53
  const requestOptions = {
54
54
  url: requestUrl,
@@ -73,7 +73,7 @@ _SpoUserGetCommand_instances = new WeakSet(), _SpoUserGetCommand_initTelemetry =
73
73
  Object.assign(this.telemetryProperties, {
74
74
  id: (!(!args.options.id)).toString(),
75
75
  email: (!(!args.options.email)).toString(),
76
- loginName: (!(!args.options.loginName)).toString()
76
+ userName: (!(!args.options.userName)).toString()
77
77
  });
78
78
  });
79
79
  }, _SpoUserGetCommand_initOptions = function _SpoUserGetCommand_initOptions() {
@@ -84,7 +84,7 @@ _SpoUserGetCommand_instances = new WeakSet(), _SpoUserGetCommand_initTelemetry =
84
84
  }, {
85
85
  option: '--email [email]'
86
86
  }, {
87
- option: '--loginName [loginName]'
87
+ option: '--userName [userName]'
88
88
  });
89
89
  }, _SpoUserGetCommand_initValidators = function _SpoUserGetCommand_initValidators() {
90
90
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
@@ -95,7 +95,7 @@ _SpoUserGetCommand_instances = new WeakSet(), _SpoUserGetCommand_initTelemetry =
95
95
  return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
96
96
  }));
97
97
  }, _SpoUserGetCommand_initOptionSets = function _SpoUserGetCommand_initOptionSets() {
98
- this.optionSets.push({ options: ['id', 'email', 'loginName'] });
98
+ this.optionSets.push({ options: ['id', 'email', 'userName'] });
99
99
  };
100
100
  module.exports = new SpoUserGetCommand();
101
101
  //# sourceMappingURL=user-get.js.map
@@ -16,13 +16,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
16
16
  var _TeamsMeetingGetCommand_instances, _TeamsMeetingGetCommand_initTelemetry, _TeamsMeetingGetCommand_initOptions, _TeamsMeetingGetCommand_initValidators;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const Auth_1 = require("../../../../Auth");
19
- const Cli_1 = require("../../../../cli/Cli");
20
19
  const request_1 = require("../../../../request");
21
20
  const GraphCommand_1 = require("../../../base/GraphCommand");
22
21
  const commands_1 = require("../../commands");
23
22
  const validation_1 = require("../../../../utils/validation");
24
23
  const accessToken_1 = require("../../../../utils/accessToken");
25
- const AadUserGetCommand = require("../../../aad/commands/user/user-get");
24
+ const aadUser_1 = require("../../../../utils/aadUser");
25
+ const formatting_1 = require("../../../../utils/formatting");
26
26
  class TeamsMeetingGetCommand extends GraphCommand_1.default {
27
27
  get name() {
28
28
  return commands_1.default.MEETING_GET;
@@ -37,20 +37,6 @@ class TeamsMeetingGetCommand extends GraphCommand_1.default {
37
37
  __classPrivateFieldGet(this, _TeamsMeetingGetCommand_instances, "m", _TeamsMeetingGetCommand_initOptions).call(this);
38
38
  __classPrivateFieldGet(this, _TeamsMeetingGetCommand_instances, "m", _TeamsMeetingGetCommand_initValidators).call(this);
39
39
  }
40
- getUserId(options) {
41
- return __awaiter(this, void 0, void 0, function* () {
42
- const commandOptions = {
43
- email: options.email,
44
- userName: options.userName,
45
- output: 'json',
46
- debug: this.debug,
47
- verbose: this.verbose
48
- };
49
- const output = yield Cli_1.Cli.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, commandOptions), { _: [] }) });
50
- const getUserOutput = JSON.parse(output.stdout);
51
- return getUserOutput.id;
52
- });
53
- }
54
40
  commandAction(logger, args) {
55
41
  return __awaiter(this, void 0, void 0, function* () {
56
42
  const isAppOnlyAccessToken = accessToken_1.accessToken.isAppOnlyAccessToken(Auth_1.default.service.accessTokens[this.resource].accessToken);
@@ -71,18 +57,13 @@ class TeamsMeetingGetCommand extends GraphCommand_1.default {
71
57
  let requestUrl = `${this.resource}/v1.0/`;
72
58
  if (isAppOnlyAccessToken) {
73
59
  requestUrl += 'users/';
74
- if (args.options.userId) {
75
- requestUrl += args.options.userId;
76
- }
77
- else {
78
- const userId = yield this.getUserId(args.options);
79
- requestUrl += userId;
80
- }
60
+ const userId = yield this.getUserId(args.options);
61
+ requestUrl += userId;
81
62
  }
82
63
  else {
83
64
  requestUrl += `me`;
84
65
  }
85
- requestUrl += `/onlineMeetings?$filter=JoinWebUrl eq '${encodeURIComponent(args.options.joinUrl)}'`;
66
+ requestUrl += `/onlineMeetings?$filter=JoinWebUrl eq '${formatting_1.formatting.encodeQueryParameter(args.options.joinUrl)}'`;
86
67
  const requestOptions = {
87
68
  url: requestUrl,
88
69
  headers: {
@@ -103,6 +84,17 @@ class TeamsMeetingGetCommand extends GraphCommand_1.default {
103
84
  }
104
85
  });
105
86
  }
87
+ getUserId(options) {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ if (options.userId) {
90
+ return options.userId;
91
+ }
92
+ if (options.userName) {
93
+ return aadUser_1.aadUser.getUserIdByUpn(options.userName);
94
+ }
95
+ return aadUser_1.aadUser.getUserIdByEmail(options.email);
96
+ });
97
+ }
106
98
  }
107
99
  _TeamsMeetingGetCommand_instances = new WeakSet(), _TeamsMeetingGetCommand_initTelemetry = function _TeamsMeetingGetCommand_initTelemetry() {
108
100
  this.telemetry.push((args) => {
@@ -21,8 +21,8 @@ const GraphCommand_1 = require("../../../base/GraphCommand");
21
21
  const commands_1 = require("../../commands");
22
22
  const odata_1 = require("../../../../utils/odata");
23
23
  const validation_1 = require("../../../../utils/validation");
24
- const AadUserGetCommand = require("../../../aad/commands/user/user-get");
25
24
  const accessToken_1 = require("../../../../utils/accessToken");
25
+ const aadUser_1 = require("../../../../utils/aadUser");
26
26
  class TeamsMeetingListCommand extends GraphCommand_1.default {
27
27
  get name() {
28
28
  return commands_1.default.MEETING_LIST;
@@ -60,7 +60,7 @@ class TeamsMeetingListCommand extends GraphCommand_1.default {
60
60
  requestUrl += args.options.userName;
61
61
  }
62
62
  else if (args.options.email) {
63
- const userId = yield this.getUserId(args.options.email);
63
+ const userId = yield aadUser_1.aadUser.getUserIdByEmail(args.options.email);
64
64
  requestUrl += userId;
65
65
  }
66
66
  }
@@ -98,19 +98,6 @@ class TeamsMeetingListCommand extends GraphCommand_1.default {
98
98
  }
99
99
  });
100
100
  }
101
- getUserId(email) {
102
- return __awaiter(this, void 0, void 0, function* () {
103
- const options = {
104
- email: email,
105
- output: 'json',
106
- debug: this.debug,
107
- verbose: this.verbose
108
- };
109
- const output = yield Cli_1.Cli.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
110
- const getUserOutput = JSON.parse(output.stdout);
111
- return getUserOutput.id;
112
- });
113
- }
114
101
  }
115
102
  _TeamsMeetingListCommand_instances = new WeakSet(), _TeamsMeetingListCommand_initTelemetry = function _TeamsMeetingListCommand_initTelemetry() {
116
103
  this.telemetry.push((args) => {