@pnp/cli-microsoft365 5.3.0-beta.ebb13d0 → 5.4.0-beta.3879fc9

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 (83) hide show
  1. package/.devcontainer/Dockerfile +1 -1
  2. package/dist/m365/planner/commands/bucket/bucket-get.js +1 -1
  3. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
  4. package/dist/m365/planner/commands/bucket/bucket-set.js +1 -1
  5. package/dist/m365/planner/commands/task/task-get.js +22 -6
  6. package/dist/m365/planner/commands/task/task-remove.js +201 -0
  7. package/dist/m365/planner/commands.js +2 -1
  8. package/dist/m365/search/commands/externalconnection/externalconnection-list.js +26 -0
  9. package/dist/m365/search/commands.js +2 -1
  10. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002009_DEVDEP_microsoft_sp_tslint_rules.js +2 -2
  11. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002018_DEVDEP_microsoft_rush_stack_compiler_3_9.js +2 -2
  12. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002020_DEVDEP_microsoft_rush_stack_compiler_4_5.js +17 -0
  13. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002021_DEVDEP_rushstack_eslint_config.js +14 -0
  14. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002022_DEVDEP_microsoft_eslint_plugin_spfx.js +14 -0
  15. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002023_DEVDEP_microsoft_eslint_config_spfx.js +14 -0
  16. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002024_DEVDEP_eslint.js +14 -0
  17. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN002025_DEVDEP_eslint_plugin_react_hooks.js +18 -0
  18. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN015008_FILE_eslintrc_js.js +14 -0
  19. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.15.0-beta.6.js → upgrade-1.15.0-rc.0.js} +49 -25
  20. package/dist/m365/spfx/commands/project/project-upgrade.js +1 -1
  21. package/dist/m365/spo/commands/contenttype/contenttype-add.js +1 -1
  22. package/dist/m365/spo/commands/contenttype/contenttype-field-remove.js +1 -1
  23. package/dist/m365/spo/commands/contenttype/contenttype-get.js +1 -1
  24. package/dist/m365/spo/commands/eventreceiver/eventreceiver-get.js +119 -0
  25. package/dist/m365/spo/commands/field/field-add.js +1 -1
  26. package/dist/m365/spo/commands/field/field-get.js +5 -5
  27. package/dist/m365/spo/commands/field/field-list.js +3 -3
  28. package/dist/m365/spo/commands/field/field-remove.js +5 -5
  29. package/dist/m365/spo/commands/file/file-sharinginfo-get.js +1 -1
  30. package/dist/m365/spo/commands/list/list-contenttype-add.js +3 -3
  31. package/dist/m365/spo/commands/list/list-contenttype-default-set.js +2 -2
  32. package/dist/m365/spo/commands/list/list-contenttype-list.js +3 -3
  33. package/dist/m365/spo/commands/list/list-contenttype-remove.js +3 -3
  34. package/dist/m365/spo/commands/list/list-get.js +2 -2
  35. package/dist/m365/spo/commands/list/list-label-get.js +3 -3
  36. package/dist/m365/spo/commands/list/list-label-set.js +2 -2
  37. package/dist/m365/spo/commands/list/list-remove.js +2 -2
  38. package/dist/m365/spo/commands/list/list-roleinheritance-break.js +2 -2
  39. package/dist/m365/spo/commands/list/list-roleinheritance-reset.js +2 -2
  40. package/dist/m365/spo/commands/list/list-sitescript-get.js +3 -3
  41. package/dist/m365/spo/commands/list/list-view-add.js +116 -0
  42. package/dist/m365/spo/commands/list/list-view-field-add.js +2 -2
  43. package/dist/m365/spo/commands/list/list-view-field-remove.js +2 -2
  44. package/dist/m365/spo/commands/list/list-view-field-set.js +2 -2
  45. package/dist/m365/spo/commands/list/list-view-get.js +4 -4
  46. package/dist/m365/spo/commands/list/list-view-list.js +3 -3
  47. package/dist/m365/spo/commands/list/list-view-remove.js +3 -3
  48. package/dist/m365/spo/commands/list/list-view-set.js +3 -3
  49. package/dist/m365/spo/commands/list/list-webhook-add.js +3 -3
  50. package/dist/m365/spo/commands/list/list-webhook-get.js +3 -3
  51. package/dist/m365/spo/commands/list/list-webhook-list.js +5 -5
  52. package/dist/m365/spo/commands/list/list-webhook-remove.js +4 -4
  53. package/dist/m365/spo/commands/list/list-webhook-set.js +3 -3
  54. package/dist/m365/spo/commands/listitem/listitem-add.js +2 -2
  55. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +2 -2
  56. package/dist/m365/spo/commands/listitem/listitem-get.js +2 -2
  57. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +2 -2
  58. package/dist/m365/spo/commands/listitem/listitem-list.js +2 -2
  59. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +2 -2
  60. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +2 -2
  61. package/dist/m365/spo/commands/listitem/listitem-remove.js +2 -2
  62. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +2 -2
  63. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +2 -2
  64. package/dist/m365/spo/commands/listitem/listitem-set.js +2 -2
  65. package/dist/m365/spo/commands.js +2 -0
  66. package/dist/utils/validation.js +12 -2
  67. package/docs/docs/cmd/planner/bucket/bucket-get.md +1 -1
  68. package/docs/docs/cmd/planner/bucket/bucket-remove.md +2 -2
  69. package/docs/docs/cmd/planner/bucket/bucket-set.md +5 -5
  70. package/docs/docs/cmd/planner/plan/plan-details-get.md +2 -2
  71. package/docs/docs/cmd/planner/plan/plan-get.md +4 -4
  72. package/docs/docs/cmd/planner/task/task-get.md +4 -9
  73. package/docs/docs/cmd/planner/task/task-list.md +2 -2
  74. package/docs/docs/cmd/planner/task/task-remove.md +78 -0
  75. package/docs/docs/cmd/planner/task/task-set.md +2 -2
  76. package/docs/docs/cmd/search/externalconnection/externalconnection-list.md +21 -0
  77. package/docs/docs/cmd/spfx/project/project-upgrade.md +1 -1
  78. package/docs/docs/cmd/spo/eventreceiver/eventreceiver-get.md +70 -0
  79. package/docs/docs/cmd/spo/file/file-checkout.md +1 -1
  80. package/docs/docs/cmd/spo/list/list-view-add.md +76 -0
  81. package/docs/docs/cmd/spo/listitem/listitem-roleinheritance-break.md +2 -2
  82. package/npm-shrinkwrap.json +257 -1104
  83. package/package.json +25 -20
@@ -24,12 +24,12 @@ class SpoListViewRemoveCommand extends SpoCommand_1.default {
24
24
  commandAction(logger, args, cb) {
25
25
  const removeViewFromList = () => {
26
26
  if (this.verbose) {
27
- const list = args.options.listId ? encodeURIComponent(args.options.listId) : encodeURIComponent(args.options.listTitle);
27
+ const list = (args.options.listId ? args.options.listId : args.options.listTitle);
28
28
  logger.logToStderr(`Removing view ${args.options.viewId || args.options.viewTitle} from list ${list} in site at ${args.options.webUrl}...`);
29
29
  }
30
30
  let requestUrl = '';
31
- const listSelector = args.options.listId ? `(guid'${encodeURIComponent(args.options.listId)}')` : `/GetByTitle('${encodeURIComponent(args.options.listTitle)}')`;
32
- const viewSelector = args.options.viewId ? `(guid'${encodeURIComponent(args.options.viewId)}')` : `/GetByTitle('${encodeURIComponent(args.options.viewTitle)}')`;
31
+ const listSelector = args.options.listId ? `(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')` : `/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
32
+ const viewSelector = args.options.viewId ? `(guid'${utils_1.formatting.encodeQueryParameter(args.options.viewId)}')` : `/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.viewTitle)}')`;
33
33
  requestUrl = `${args.options.webUrl}/_api/web/lists${listSelector}/views${viewSelector}`;
34
34
  const requestOptions = {
35
35
  url: requestUrl,
@@ -25,9 +25,9 @@ class SpoListViewSetCommand extends SpoCommand_1.default {
25
25
  commandAction(logger, args, cb) {
26
26
  const baseRestUrl = `${args.options.webUrl}/_api/web/lists`;
27
27
  const listRestUrl = args.options.listId ?
28
- `(guid'${encodeURIComponent(args.options.listId)}')`
29
- : `/getByTitle('${encodeURIComponent(args.options.listTitle)}')`;
30
- const viewRestUrl = `/views/${(args.options.viewId ? `getById('${encodeURIComponent(args.options.viewId)}')` : `getByTitle('${encodeURIComponent(args.options.viewTitle)}')`)}`;
28
+ `(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')`
29
+ : `/getByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
30
+ const viewRestUrl = `/views/${(args.options.viewId ? `getById('${utils_1.formatting.encodeQueryParameter(args.options.viewId)}')` : `getByTitle('${utils_1.formatting.encodeQueryParameter(args.options.viewTitle)}')`)}`;
31
31
  utils_1.spo
32
32
  .getRequestDigest(args.options.webUrl)
33
33
  .then((res) => {
@@ -25,14 +25,14 @@ class SpoListWebhookAddCommand extends SpoCommand_1.default {
25
25
  }
26
26
  commandAction(logger, args, cb) {
27
27
  if (this.verbose) {
28
- logger.logToStderr(`Adding webhook to list ${args.options.listId ? encodeURIComponent(args.options.listId) : encodeURIComponent(args.options.listTitle)} located at site ${args.options.webUrl}...`);
28
+ logger.logToStderr(`Adding webhook to list ${args.options.listId ? args.options.listId : args.options.listTitle} located at site ${args.options.webUrl}...`);
29
29
  }
30
30
  let requestUrl = '';
31
31
  if (args.options.listId) {
32
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')/Subscriptions')`;
32
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions')`;
33
33
  }
34
34
  else {
35
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')/Subscriptions')`;
35
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions')`;
36
36
  }
37
37
  const requestBody = {};
38
38
  requestBody.resource = args.options.listId ? args.options.listId : args.options.listTitle;
@@ -20,15 +20,15 @@ class SpoListWebhookGetCommand extends SpoCommand_1.default {
20
20
  }
21
21
  commandAction(logger, args, cb) {
22
22
  if (this.verbose) {
23
- const list = args.options.listId ? encodeURIComponent(args.options.listId) : encodeURIComponent(args.options.listTitle);
23
+ const list = (args.options.listId ? args.options.listId : args.options.listTitle);
24
24
  logger.logToStderr(`Retrieving information for webhook ${args.options.id} belonging to list ${list} in site at ${args.options.webUrl}...`);
25
25
  }
26
26
  let requestUrl = '';
27
27
  if (args.options.listId) {
28
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
28
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
29
29
  }
30
30
  else {
31
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
31
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
32
32
  }
33
33
  const requestOptions = {
34
34
  url: requestUrl,
@@ -31,21 +31,21 @@ class SpoListWebhookListCommand extends SpoCommand_1.default {
31
31
  logger.logToStderr(chalk.yellow(`Option 'id' is deprecated. Please use 'listId' instead`));
32
32
  }
33
33
  if (this.verbose) {
34
- const list = args.options.id ? encodeURIComponent(args.options.id) : (args.options.listId ? encodeURIComponent(args.options.listId) : (args.options.title ? encodeURIComponent(args.options.title) : encodeURIComponent(args.options.listTitle)));
34
+ const list = args.options.id ? utils_1.formatting.encodeQueryParameter(args.options.id) : (args.options.listId ? utils_1.formatting.encodeQueryParameter(args.options.listId) : (args.options.title ? utils_1.formatting.encodeQueryParameter(args.options.title) : utils_1.formatting.encodeQueryParameter(args.options.listTitle)));
35
35
  logger.logToStderr(`Retrieving webhook information for list ${list} in site at ${args.options.webUrl}...`);
36
36
  }
37
37
  let requestUrl = '';
38
38
  if (args.options.id) {
39
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.id)}')/Subscriptions`;
39
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.id)}')/Subscriptions`;
40
40
  }
41
41
  else if (args.options.listId) {
42
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')/Subscriptions`;
42
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions`;
43
43
  }
44
44
  else if (args.options.listTitle) {
45
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')/Subscriptions`;
45
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions`;
46
46
  }
47
47
  else {
48
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.title)}')/Subscriptions`;
48
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.title)}')/Subscriptions`;
49
49
  }
50
50
  const requestOptions = {
51
51
  url: requestUrl,
@@ -21,17 +21,17 @@ class SpoListWebhookRemoveCommand extends SpoCommand_1.default {
21
21
  return telemetryProps;
22
22
  }
23
23
  commandAction(logger, args, cb) {
24
- const list = args.options.listId ? encodeURIComponent(args.options.listId) : encodeURIComponent(args.options.listTitle);
25
24
  const removeWebhook = () => {
26
25
  if (this.verbose) {
26
+ const list = (args.options.listId ? args.options.listId : args.options.listTitle);
27
27
  logger.logToStderr(`Webhook ${args.options.id} is about to be removed from list ${list} located at site ${args.options.webUrl}...`);
28
28
  }
29
29
  let requestUrl = '';
30
30
  if (args.options.listId) {
31
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
31
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
32
32
  }
33
33
  else {
34
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
34
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
35
35
  }
36
36
  const requestOptions = {
37
37
  url: requestUrl,
@@ -58,7 +58,7 @@ class SpoListWebhookRemoveCommand extends SpoCommand_1.default {
58
58
  type: 'confirm',
59
59
  name: 'continue',
60
60
  default: false,
61
- message: `Are you sure you want to remove webhook ${args.options.id} from list ${list} located at site ${args.options.webUrl}?`
61
+ message: `Are you sure you want to remove webhook ${args.options.id} from list ${args.options.listTitle || args.options.listId} located at site ${args.options.webUrl}?`
62
62
  }, (result) => {
63
63
  if (!result.continue) {
64
64
  cb();
@@ -22,14 +22,14 @@ class SpoListWebhookSetCommand extends SpoCommand_1.default {
22
22
  }
23
23
  commandAction(logger, args, cb) {
24
24
  if (this.verbose) {
25
- logger.logToStderr(`Updating webhook ${args.options.id} belonging to list ${args.options.listId ? encodeURIComponent(args.options.listId) : encodeURIComponent(args.options.listTitle)} located at site ${args.options.webUrl}...`);
25
+ logger.logToStderr(`Updating webhook ${args.options.id} belonging to list ${args.options.listId ? args.options.listId : args.options.listTitle} located at site ${args.options.webUrl}...`);
26
26
  }
27
27
  let requestUrl = '';
28
28
  if (args.options.listId) {
29
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
29
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
30
30
  }
31
31
  else {
32
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')/Subscriptions('${encodeURIComponent(args.options.id)}')`;
32
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')/Subscriptions('${utils_1.formatting.encodeQueryParameter(args.options.id)}')`;
33
33
  }
34
34
  const requestBody = {};
35
35
  if (args.options.notificationUrl) {
@@ -26,8 +26,8 @@ class SpoListItemAddCommand extends SpoCommand_1.default {
26
26
  const listIdArgument = args.options.listId || '';
27
27
  const listTitleArgument = args.options.listTitle || '';
28
28
  const listRestUrl = (args.options.listId ?
29
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
30
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
29
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
30
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
31
31
  let contentTypeName = '';
32
32
  let targetFolderServerRelativeUrl = '';
33
33
  if (this.verbose) {
@@ -24,8 +24,8 @@ class SpoListItemAttachmentListCommand extends SpoCommand_1.default {
24
24
  const listIdArgument = args.options.listId || '';
25
25
  const listTitleArgument = args.options.listTitle || '';
26
26
  const listRestUrl = (args.options.listId ?
27
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
28
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
27
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
28
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
29
29
  const requestOptions = {
30
30
  url: `${listRestUrl}/items(${args.options.itemId})?$select=AttachmentFiles&$expand=AttachmentFiles`,
31
31
  method: 'GET',
@@ -24,8 +24,8 @@ class SpoListItemGetCommand extends SpoCommand_1.default {
24
24
  const listIdArgument = args.options.listId || '';
25
25
  const listTitleArgument = args.options.listTitle || '';
26
26
  const listRestUrl = (args.options.listId ?
27
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
28
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
27
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
28
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
29
29
  const propertiesSelect = args.options.properties ?
30
30
  `?$select=${encodeURIComponent(args.options.properties)}` :
31
31
  ((!args.options.output || args.options.output === 'text') ?
@@ -25,8 +25,8 @@ class SpoListItemIsRecordCommand extends SpoCommand_1.default {
25
25
  const listIdArgument = args.options.listId || '';
26
26
  const listTitleArgument = args.options.listTitle || '';
27
27
  const listRestUrl = (args.options.listId ?
28
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
29
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
28
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
29
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
30
30
  let formDigestValue = '';
31
31
  let listId = '';
32
32
  if (this.debug) {
@@ -29,8 +29,8 @@ class SpoListItemListCommand extends SpoCommand_1.default {
29
29
  const fieldsArray = args.options.fields ? args.options.fields.split(",")
30
30
  : (!args.options.output || args.options.output === "text") ? ["Title", "Id"] : [];
31
31
  const listRestUrl = (args.options.id ?
32
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
33
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
32
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
33
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
34
34
  (() => {
35
35
  if (args.options.camlQuery) {
36
36
  if (this.debug) {
@@ -25,8 +25,8 @@ class SpoListItemRecordDeclareCommand extends SpoCommand_1.default {
25
25
  let webIdentity = '';
26
26
  let listId = '';
27
27
  const listRestUrl = args.options.listId
28
- ? `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')`
29
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(args.options.listTitle)}')`;
28
+ ? `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')`
29
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
30
30
  utils_1.spo
31
31
  .getRequestDigest(args.options.webUrl)
32
32
  .then((contextResponse) => {
@@ -22,8 +22,8 @@ class SpoListItemRecordUndeclareCommand extends SpoCommand_1.default {
22
22
  const listIdArgument = args.options.listId || '';
23
23
  const listTitleArgument = args.options.listTitle || '';
24
24
  const listRestUrl = (args.options.listId ?
25
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
26
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
25
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
26
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
27
27
  let formDigestValue = '';
28
28
  let environmentListId = '';
29
29
  (() => {
@@ -27,10 +27,10 @@ class SpoListItemRemoveCommand extends SpoCommand_1.default {
27
27
  }
28
28
  let requestUrl = '';
29
29
  if (args.options.listId) {
30
- requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(args.options.listId)}')`;
30
+ requestUrl = `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')`;
31
31
  }
32
32
  else {
33
- requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${encodeURIComponent(args.options.listTitle)}')`;
33
+ requestUrl = `${args.options.webUrl}/_api/web/lists/GetByTitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
34
34
  }
35
35
  requestUrl += `/items(${args.options.id})`;
36
36
  if (args.options.recycle) {
@@ -22,10 +22,10 @@ class SpoListItemRoleInheritanceBreakCommand extends SpoCommand_1.default {
22
22
  }
23
23
  let requestUrl = `${args.options.webUrl}/_api/web/lists`;
24
24
  if (args.options.listId) {
25
- requestUrl += `(guid'${encodeURIComponent(args.options.listId)}')`;
25
+ requestUrl += `(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')`;
26
26
  }
27
27
  else {
28
- requestUrl += `/getbytitle('${encodeURIComponent(args.options.listTitle)}')`;
28
+ requestUrl += `/getbytitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
29
29
  }
30
30
  let keepExistingPermissions = true;
31
31
  if (args.options.clearExistingPermissions) {
@@ -20,10 +20,10 @@ class SpoListItemRoleInheritanceResetCommand extends SpoCommand_1.default {
20
20
  commandAction(logger, args, cb) {
21
21
  let requestUrl = `${args.options.webUrl}/_api/web/lists`;
22
22
  if (args.options.listId) {
23
- requestUrl += `(guid'${encodeURIComponent(args.options.listId)}')`;
23
+ requestUrl += `(guid'${utils_1.formatting.encodeQueryParameter(args.options.listId)}')`;
24
24
  }
25
25
  else {
26
- requestUrl += `/getbytitle('${encodeURIComponent(args.options.listTitle)}')`;
26
+ requestUrl += `/getbytitle('${utils_1.formatting.encodeQueryParameter(args.options.listTitle)}')`;
27
27
  }
28
28
  const requestOptions = {
29
29
  url: `${requestUrl}/items(${args.options.listItemId})/resetroleinheritance`,
@@ -27,8 +27,8 @@ class SpoListItemSetCommand extends SpoCommand_1.default {
27
27
  const listIdArgument = args.options.listId || '';
28
28
  const listTitleArgument = args.options.listTitle || '';
29
29
  const listRestUrl = (args.options.listId ?
30
- `${args.options.webUrl}/_api/web/lists(guid'${encodeURIComponent(listIdArgument)}')`
31
- : `${args.options.webUrl}/_api/web/lists/getByTitle('${encodeURIComponent(listTitleArgument)}')`);
30
+ `${args.options.webUrl}/_api/web/lists(guid'${utils_1.formatting.encodeQueryParameter(listIdArgument)}')`
31
+ : `${args.options.webUrl}/_api/web/lists/getByTitle('${utils_1.formatting.encodeQueryParameter(listTitleArgument)}')`);
32
32
  let contentTypeName = '';
33
33
  let formDigestValue = '';
34
34
  let environmentListId = '';
@@ -35,6 +35,7 @@ exports.default = {
35
35
  CUSTOMACTION_SET: `${prefix} customaction set`,
36
36
  CUSTOMACTION_LIST: `${prefix} customaction list`,
37
37
  CUSTOMACTION_REMOVE: `${prefix} customaction remove`,
38
+ EVENTRECEIVER_GET: `${prefix} eventreceiver get`,
38
39
  EXTERNALUSER_LIST: `${prefix} externaluser list`,
39
40
  FEATURE_DISABLE: `${prefix} feature disable`,
40
41
  FEATURE_ENABLE: `${prefix} feature enable`,
@@ -100,6 +101,7 @@ exports.default = {
100
101
  LIST_ROLEINHERITANCE_RESET: `${prefix} list roleinheritance reset`,
101
102
  LIST_SET: `${prefix} list set`,
102
103
  LIST_SITESCRIPT_GET: `${prefix} list sitescript get`,
104
+ LIST_VIEW_ADD: `${prefix} list view add`,
103
105
  LIST_VIEW_GET: `${prefix} list view get`,
104
106
  LIST_VIEW_LIST: `${prefix} list view list`,
105
107
  LIST_VIEW_REMOVE: `${prefix} list view remove`,
@@ -37,22 +37,32 @@ exports.validation = {
37
37
  return dateTimeRegEx.test(date) ? true : dateOnlyRegEx.test(date);
38
38
  },
39
39
  isValidISODateTime(dateTime) {
40
- const withMilliSecsPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])\.[0-9]{3}Z$/);
41
- if (withMilliSecsPattern.test(dateTime)) {
40
+ // Format: 2000-01-01T00:00:00.0000000Z
41
+ const withMilliSecsLongPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])\.[0-9]{7}Z$/);
42
+ if (withMilliSecsLongPattern.test(dateTime)) {
42
43
  return true;
43
44
  }
45
+ // Format: 2000-01-01T00:00:00.000Z
46
+ const withMilliSecsShortPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])\.[0-9]{3}Z$/);
47
+ if (withMilliSecsShortPattern.test(dateTime)) {
48
+ return true;
49
+ }
50
+ // Format: 2000-01-01T00:00:00Z
44
51
  const withSecsPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9]):(0[0-9]|[1-5][0-9])Z$/);
45
52
  if (withSecsPattern.test(dateTime)) {
46
53
  return true;
47
54
  }
55
+ // Format: 2000-01-01T00:00Z
48
56
  const withMinutesPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3]):(0[0-9]|[1-5][0-9])Z$/);
49
57
  if (withMinutesPattern.test(dateTime)) {
50
58
  return true;
51
59
  }
60
+ // Format: 2000-01-01T00Z
52
61
  const withHoursPattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))T(0[0-9]|1[0-9]|2[0-3])Z$/);
53
62
  if (withHoursPattern.test(dateTime)) {
54
63
  return true;
55
64
  }
65
+ // Format: 2000-01-01
56
66
  const withoutTimePattern = new RegExp(/^[0-9]{4}-((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01])|(0[469]|11)-(0[1-9]|[12][0-9]|30)|(02)-(0[1-9]|[12][0-9]))$/);
57
67
  if (withoutTimePattern.test(dateTime)) {
58
68
  return true;
@@ -13,7 +13,7 @@ m365 planner bucket get [options]
13
13
  `-i, --id [id]`
14
14
  : ID of the bucket to retrieve details. Specify either `id` or `name` but not both.
15
15
 
16
- `-name, --name [name]`
16
+ `-n, --name [name]`
17
17
  : Name of the bucket to retrieve details. Specify either `id` or `name` but not both.
18
18
 
19
19
  `--planId [planId]`
@@ -10,10 +10,10 @@ m365 planner bucket remove [options]
10
10
 
11
11
  ## Options
12
12
 
13
- `--id [id]`
13
+ `-i, --id [id]`
14
14
  : ID of the bucket to remove. Specify either `id` or `name` but not both.
15
15
 
16
- `--name [name]`
16
+ `-n, --name [name]`
17
17
  : Name of the bucket to remove. Specify either `id` or `name` but not both.
18
18
 
19
19
  `--planId [planId]`
@@ -13,20 +13,20 @@ m365 planner bucket set [options]
13
13
  `-i, --id [id]`
14
14
  : ID of the bucket. Specify either `id` or `name` but not both.
15
15
 
16
- `--name [name]`
16
+ `-n, --name [name]`
17
17
  : Name of the bucket. Specify either `id` or `name` but not both.
18
18
 
19
19
  `--planId [planId]`
20
- : ID of the plan to update the bucket of. Use when referring to bucket using `name`. Specify either `planId` or `planName` but not both.
20
+ : ID of the plan to update the bucket of. Specify either `planId` or `planName` when using `name`.
21
21
 
22
22
  `--planName [planName]`
23
- : Name of the plan to update the bucket of. Use when referring to bucket using `name`. Specify either `planId` or `planName` but not both.
23
+ : Name of the plan to update the bucket of. Specify either `planId` or `planName` when using `name`. Always use in combination with either `ownerGroupId` or `ownerGroupName`.
24
24
 
25
25
  `--ownerGroupId [ownerGroupId]`
26
- : ID of the group to which the plan belongs. Use when referring to plan using `planName`. Specify `ownerGroupId` or `ownerGroupName`.
26
+ : ID of the group to which the plan belongs. Specify `ownerGroupId` or `ownerGroupName` when using `planName`.
27
27
 
28
28
  `--ownerGroupName [ownerGroupName]`
29
- : Name of the group to which the plan belongs. Use when referring to plan using `planName`. Specify `ownerGroupId` or `ownerGroupName`.
29
+ : Name of the group to which the plan belongs. Specify `ownerGroupId` or `ownerGroupName` when using `planName`.
30
30
 
31
31
  `--newName [newName]`
32
32
  : New name of the bucket.
@@ -17,10 +17,10 @@ m365 planner plan details get [options]
17
17
  : Title of the plan. Specify either `planId` or `planTitle` but not both.
18
18
 
19
19
  `--ownerGroupId [ownerGroupId]`
20
- : ID of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` but not both.
20
+ : ID of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` when using `planTitle`.
21
21
 
22
22
  `--ownerGroupName [ownerGroupName]`
23
- : Name of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` but not both.
23
+ : Name of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` when using `planTitle`.
24
24
 
25
25
  --8<-- "docs/cmd/_global.md"
26
26
 
@@ -10,17 +10,17 @@ m365 planner plan get [options]
10
10
 
11
11
  ## Options
12
12
 
13
- `-i,--id [id]`
13
+ `-i, --id [id]`
14
14
  : ID of the plan. Specify either `id` or `title` but not both.
15
15
 
16
- `-t,--title [title]`
16
+ `-t, --title [title]`
17
17
  : Title of the plan. Specify either `id` or `title` but not both.
18
18
 
19
19
  `--ownerGroupId [ownerGroupId]`
20
- : ID of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` but not both.
20
+ : ID of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` when using `title`.
21
21
 
22
22
  `--ownerGroupName [ownerGroupName]`
23
- : Name of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` but not both.
23
+ : Name of the Group that owns the plan. Specify either `ownerGroupId` or `ownerGroupName` when using `title`.
24
24
 
25
25
  --8<-- "docs/cmd/_global.md"
26
26
 
@@ -1,6 +1,6 @@
1
1
  # planner task get
2
2
 
3
- Retrieve the the specified planner task
3
+ Retrieve the specified planner task
4
4
 
5
5
  ## Usage
6
6
 
@@ -36,20 +36,15 @@ m365 planner task get [options]
36
36
 
37
37
  --8<-- "docs/cmd/_global.md"
38
38
 
39
- ## Remarks
40
-
41
- !!! attention
42
- This command uses an API that is currently in preview to enrich the results with the `priority` field. Keep in mind that this preview API is subject to change once the API reached general availability.
43
-
44
39
  ## Examples
45
40
 
46
- Retrieve the the specified planner task by id.
41
+ Retrieve the specified planner task by id
47
42
 
48
43
  ```sh
49
- m365 planner task get --id 'vzCcZoOv-U27PwydxHB8opcADJo-'
44
+ m365 planner task get --id "vzCcZoOv-U27PwydxHB8opcADJo-"
50
45
  ```
51
46
 
52
- Retrieve the the specified planner task with the title _My Planner Task_ from the bucket named _My Planner Bucket_. Based on the plan with the name _My Planner Plan_ owned by the group _My Planner Group_.
47
+ Retrieve the specified planner task with the title _My Planner Task_ from the bucket named _My Planner Bucket_ based on the plan with the name _My Planner Plan_ owned by the group _My Planner Group_
53
48
 
54
49
  ```sh
55
50
  m365 planner task get --title "My Planner Task" --bucketName "My Planner Bucket" --planName "My Planner Plan" --ownerGroupName "My Planner Group"
@@ -17,10 +17,10 @@ m365 planner task list [options]
17
17
  : Name of the bucket to list the tasks of. To retrieve tasks from a bucket, specify `bucketId` or `bucketName`, but not both.
18
18
 
19
19
  `--planId [planId]`
20
- : ID of the plan to list the tasks of. Specify `planId` or `planName` when using `bucketName`.
20
+ : ID of a plan to list the tasks of. To retrieve all tasks from a plan, specify either `planId` or `planName` but not both. Use in combination with `bucketName` to retrieve tasks from a specific bucket.
21
21
 
22
22
  `--planName [planName]`
23
- : Name of the plan to list the tasks of. Specify `planId` or `planName` when using `bucketName`.
23
+ : Name of a plan to list the tasks of. To retrieve all tasks from a plan, specify either `planId` or `planName` but not both. Always use in combination with either `ownerGroupId` or `ownerGroupName`. Use in combination with `bucketName` to retrieve tasks from a specific bucket.
24
24
 
25
25
  `--ownerGroupId [ownerGroupId]`
26
26
  : ID of the group to which the plan belongs. Specify `ownerGroupId` or `ownerGroupName` when using `planName`.
@@ -0,0 +1,78 @@
1
+ # planner task remove
2
+
3
+ Removes the Microsoft Planner task from a plan
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 planner task remove [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ `--id [id]`
14
+ : ID of the task to remove. Specify either `id` or `title` but not both.
15
+
16
+ `--title [title]`
17
+ : Title of the task to remove. Specify either `id` or `title` but not both.
18
+
19
+ `--bucketId [bucketId]`
20
+ : ID of the bucket to which the task to remove belongs. Specify either `bucketId` or `bucketName` but not both.
21
+
22
+ `--bucketName [bucketName]`
23
+ : Name of the bucket to which the task to remove belongs. Specify either `bucketId` or `bucketName` but not both.
24
+
25
+ `--planId [planId]`
26
+ : ID of the plan to which the task to remove belongs. Specify either `planId` or `planTitle` when using `title`.
27
+
28
+ `--planTitle [planTitle]`
29
+ : Title of the plan to which the task to remove belongs. Specify either `planId` or `planTitle` when using `title`.
30
+
31
+ `--ownerGroupId [ownerGroupId]`
32
+ : ID of the group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `planTitle`.
33
+
34
+ `--ownerGroupName [ownerGroupName]`
35
+ : Name of the group to which the plan belongs. Specify either `ownerGroupId` or `ownerGroupName` when using `planTitle`.
36
+
37
+ `--confirm`
38
+ : Don't prompt for confirmation
39
+
40
+ --8<-- "docs/cmd/_global.md"
41
+
42
+ ## Examples
43
+
44
+ Removes the Microsoft Planner task by ID
45
+
46
+ ```sh
47
+ m365 planner task remove --id "2Vf8JHgsBUiIf-nuvBtv-ZgAAYw2"
48
+ ```
49
+
50
+ Removes the Microsoft Planner task by ID without confirmation
51
+
52
+ ```sh
53
+ m365 planner task remove --id "2Vf8JHgsBUiIf-nuvBtv-ZgAAYw2" --confirm
54
+ ```
55
+
56
+ Removes the Microsoft Planner task with title _My Task_ in the bucket with ID _vncYUXCRBke28qMLB-d4xJcACtNz_
57
+
58
+ ```sh
59
+ m365 planner task remove --title "My Task" --bucketId "vncYUXCRBke28qMLB-d4xJcACtNz"
60
+ ```
61
+
62
+ Removes the Microsoft Planner task with title _My Task_ in the bucket with name _My Bucket_ in the Plan with ID _oUHpnKBFekqfGE_PS6GGUZcAFY7b_
63
+
64
+ ```sh
65
+ m365 planner task remove --title "My Task" --bucketName "My Bucket" --planId "oUHpnKBFekqfGE_PS6GGUZcAFY7b"
66
+ ```
67
+
68
+ Removes the Microsoft Planner task with title _My Task_ in the bucket with name _My Bucket_ in the Plan _My Plan_ owned by group _My Group_
69
+
70
+ ```sh
71
+ m365 planner task remove --title "My Task" --bucketName "My Bucket" --planTitle "My Plan" --ownerGroupName "My Group"
72
+ ```
73
+
74
+ Removes the Microsoft Planner task with title _My Task_ in the bucket with name _My Bucket_ in the Plan _My Plan_ owned by group with ID _00000000-0000-0000-0000-000000000000_
75
+
76
+ ```sh
77
+ m365 planner task remove --title "My Task" --bucketName "My Bucket" --planTitle "My Plan" --ownerGroupId "00000000-0000-0000-0000-000000000000"
78
+ ```
@@ -17,10 +17,10 @@ m365 planner task set [options]
17
17
  : New title of the task.
18
18
 
19
19
  `--bucketId [bucketId]`
20
- : ID of the bucket to move the task to. Specify either `bucketId` or `bucketName` but not both.
20
+ : ID of the bucket to move the task to. Specify either `bucketId` or `bucketName` when using `title`.
21
21
 
22
22
  `--bucketName [bucketName]`
23
- : Name of the bucket to move the task to. The bucket needs to exist in the selected plan. Specify either `bucketId` or `bucketName` but not both.
23
+ : Name of the bucket to move the task to. The bucket needs to exist in the selected plan. Specify either `bucketId` or `bucketName` when using `title`.
24
24
 
25
25
  `--planId [planId]`
26
26
  : ID of the plan to which the bucket belongs to. Specify either `planId` or `planName` when using `bucketName`.
@@ -0,0 +1,21 @@
1
+ # search externalconnection list
2
+
3
+ Lists external connections defined in Microsoft Search
4
+
5
+ ## Usage
6
+
7
+ ```sh
8
+ m365 search externalconnection list [options]
9
+ ```
10
+
11
+ ## Options
12
+
13
+ --8<-- "docs/cmd/_global.md"
14
+
15
+ ## Examples
16
+
17
+ List external connections defined in Microsoft Search
18
+
19
+ ```sh
20
+ m365 search externalconnection list
21
+ ```
@@ -32,7 +32,7 @@ m365 spfx project upgrade [options]
32
32
 
33
33
  ## Remarks
34
34
 
35
- The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.14.0). If you specify the `preview` option without a specific version, the command will upgrade your project to the latest preview version v1.15.0-beta.6.
35
+ The `spfx project upgrade` command helps you upgrade your SharePoint Framework project to the specified version. If no version is specified, the command will upgrade to the latest version of the SharePoint Framework it supports (v1.14.0). If you specify the `preview` option without a specific version, the command will upgrade your project to the latest preview version v1.15.0-rc.0.
36
36
 
37
37
  This command doesn't change your project files. Instead, it gives you a report with all steps necessary to upgrade your project to the specified version of the SharePoint Framework. Changing project files is error-prone, especially when it comes to updating your solution's code. This is why at this moment, this command produces a report that you can use yourself to perform the necessary updates and verify that everything is working as expected.
38
38