@pnp/cli-microsoft365 7.2.0-beta.c7e1c03 → 7.2.0-beta.d29d172

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 (126) hide show
  1. package/allCommands.json +1 -0
  2. package/allCommandsFull.json +1 -0
  3. package/dist/Auth.js +1 -1
  4. package/dist/api.js +5 -7
  5. package/dist/cli/Cli.js +96 -118
  6. package/dist/cli/timings.js +9 -0
  7. package/dist/index.js +8 -14
  8. package/dist/m365/cli/commands/config/config-set.js +5 -0
  9. package/dist/m365/commands/login.js +12 -8
  10. package/dist/m365/flow/commands/environment/environment-list.js +6 -4
  11. package/dist/m365/spfx/commands/project/DeployWorkflow.js +4 -4
  12. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.18.1-rc.0.js → doctor-1.18.1.js} +1 -1
  13. package/dist/m365/spfx/commands/project/project-doctor.js +1 -1
  14. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +17 -0
  15. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.18.1-rc.0.js → upgrade-1.18.1.js} +26 -26
  16. package/dist/m365/spfx/commands/project/project-upgrade.js +13 -15
  17. package/dist/m365/spfx/commands/spfx-doctor.js +1 -1
  18. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +14 -23
  19. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +19 -27
  20. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +9 -29
  21. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +9 -28
  22. package/dist/m365/spo/commands/list/list-retentionlabel-ensure.js +27 -37
  23. package/dist/m365/spo/commands/list/list-retentionlabel-remove.js +6 -19
  24. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +36 -37
  25. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-remove.js +36 -32
  26. package/dist/m365/spo/commands/site/site-add.js +45 -12
  27. package/dist/m365/spo/commands/sitescript/sitescript-get.js +8 -2
  28. package/dist/m365/spo/commands/tenant/tenant-recyclebinitem-restore.js +19 -2
  29. package/dist/request.js +6 -0
  30. package/dist/settingsNames.js +1 -0
  31. package/dist/utils/spo.js +109 -0
  32. package/docs/docs/_clisettings.mdx +1 -0
  33. package/docs/docs/cmd/aad/approleassignment/approleassignment-add.mdx +1 -1
  34. package/docs/docs/cmd/aad/approleassignment/approleassignment-list.mdx +2 -2
  35. package/docs/docs/cmd/aad/approleassignment/approleassignment-remove.mdx +1 -1
  36. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-add.mdx +1 -1
  37. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-list.mdx +2 -2
  38. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-remove.mdx +2 -2
  39. package/docs/docs/cmd/aad/oauth2grant/oauth2grant-set.mdx +2 -2
  40. package/docs/docs/cmd/aad/policy/policy-list.mdx +1 -1
  41. package/docs/docs/cmd/aad/siteclassification/siteclassification-disable.mdx +1 -1
  42. package/docs/docs/cmd/aad/siteclassification/siteclassification-enable.mdx +1 -1
  43. package/docs/docs/cmd/aad/siteclassification/siteclassification-get.mdx +1 -1
  44. package/docs/docs/cmd/aad/siteclassification/siteclassification-set.mdx +1 -1
  45. package/docs/docs/cmd/aad/sp/sp-add.mdx +2 -2
  46. package/docs/docs/cmd/aad/sp/sp-get.mdx +2 -2
  47. package/docs/docs/cmd/aad/user/user-add.mdx +3 -3
  48. package/docs/docs/cmd/aad/user/user-guest-add.mdx +1 -1
  49. package/docs/docs/cmd/aad/user/user-set.mdx +3 -3
  50. package/docs/docs/cmd/graph/changelog/changelog-list.mdx +5 -5
  51. package/docs/docs/cmd/login.mdx +1 -1
  52. package/docs/docs/cmd/onenote/notebook/notebook-list.mdx +1 -1
  53. package/docs/docs/cmd/outlook/message/message-list.mdx +1 -1
  54. package/docs/docs/cmd/outlook/message/message-move.mdx +1 -1
  55. package/docs/docs/cmd/planner/bucket/bucket-add.mdx +1 -1
  56. package/docs/docs/cmd/planner/bucket/bucket-set.mdx +1 -1
  57. package/docs/docs/cmd/planner/plan/plan-set.mdx +3 -3
  58. package/docs/docs/cmd/planner/task/task-set.mdx +1 -1
  59. package/docs/docs/cmd/purview/auditlog/auditlog-list.mdx +3 -3
  60. package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +1 -1
  61. package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +1 -1
  62. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +1 -1
  63. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +1 -1
  64. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +1 -1
  65. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +1 -1
  66. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +1 -1
  67. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.mdx +4 -4
  68. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  69. package/docs/docs/cmd/spo/app/app-add.mdx +1 -1
  70. package/docs/docs/cmd/spo/app/app-deploy.mdx +1 -1
  71. package/docs/docs/cmd/spo/app/app-get.mdx +1 -1
  72. package/docs/docs/cmd/spo/app/app-install.mdx +1 -1
  73. package/docs/docs/cmd/spo/app/app-list.mdx +1 -1
  74. package/docs/docs/cmd/spo/app/app-remove.mdx +1 -1
  75. package/docs/docs/cmd/spo/app/app-retract.mdx +1 -1
  76. package/docs/docs/cmd/spo/app/app-uninstall.mdx +1 -1
  77. package/docs/docs/cmd/spo/app/app-upgrade.mdx +1 -1
  78. package/docs/docs/cmd/spo/contenttype/contenttype-add.mdx +1 -1
  79. package/docs/docs/cmd/spo/contenttype/contenttype-set.mdx +1 -1
  80. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-get.mdx +1 -1
  81. package/docs/docs/cmd/spo/hidedefaultthemes/hidedefaultthemes-set.mdx +1 -1
  82. package/docs/docs/cmd/spo/site/site-add.mdx +25 -4
  83. package/docs/docs/cmd/spo/site/site-appcatalog-add.mdx +1 -1
  84. package/docs/docs/cmd/spo/site/site-appcatalog-remove.mdx +1 -1
  85. package/docs/docs/cmd/spo/site/site-groupify.mdx +1 -1
  86. package/docs/docs/cmd/spo/sitedesign/sitedesign-add.mdx +3 -3
  87. package/docs/docs/cmd/spo/sitedesign/sitedesign-apply.mdx +1 -1
  88. package/docs/docs/cmd/spo/sitedesign/sitedesign-get.mdx +1 -1
  89. package/docs/docs/cmd/spo/sitedesign/sitedesign-list.mdx +1 -1
  90. package/docs/docs/cmd/spo/sitedesign/sitedesign-remove.mdx +1 -1
  91. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-grant.mdx +1 -1
  92. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-list.mdx +1 -1
  93. package/docs/docs/cmd/spo/sitedesign/sitedesign-rights-revoke.mdx +1 -1
  94. package/docs/docs/cmd/spo/sitedesign/sitedesign-run-list.mdx +1 -1
  95. package/docs/docs/cmd/spo/sitedesign/sitedesign-run-status-get.mdx +1 -1
  96. package/docs/docs/cmd/spo/sitedesign/sitedesign-set.mdx +3 -3
  97. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-get.mdx +1 -1
  98. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-list.mdx +1 -1
  99. package/docs/docs/cmd/spo/sitedesign/sitedesign-task-remove.mdx +1 -1
  100. package/docs/docs/cmd/spo/sitescript/sitescript-add.mdx +1 -1
  101. package/docs/docs/cmd/spo/sitescript/sitescript-get.mdx +73 -3
  102. package/docs/docs/cmd/spo/sitescript/sitescript-list.mdx +1 -1
  103. package/docs/docs/cmd/spo/sitescript/sitescript-remove.mdx +1 -1
  104. package/docs/docs/cmd/spo/sitescript/sitescript-set.mdx +1 -1
  105. package/docs/docs/cmd/spo/storageentity/storageentity-get.mdx +1 -1
  106. package/docs/docs/cmd/spo/storageentity/storageentity-list.mdx +1 -1
  107. package/docs/docs/cmd/spo/storageentity/storageentity-remove.mdx +1 -1
  108. package/docs/docs/cmd/spo/storageentity/storageentity-set.mdx +1 -1
  109. package/docs/docs/cmd/spo/theme/theme-apply.mdx +1 -1
  110. package/docs/docs/cmd/spo/theme/theme-get.mdx +1 -1
  111. package/docs/docs/cmd/spo/theme/theme-list.mdx +1 -1
  112. package/docs/docs/cmd/spo/theme/theme-remove.mdx +1 -1
  113. package/docs/docs/cmd/spo/user/user-remove.mdx +1 -1
  114. package/docs/docs/cmd/spo/web/web-set.mdx +1 -1
  115. package/docs/docs/cmd/teams/channel/channel-remove.mdx +1 -1
  116. package/docs/docs/cmd/teams/meeting/meeting-get.mdx +1 -1
  117. package/docs/docs/cmd/teams/meeting/meeting-transcript-list.mdx +1 -1
  118. package/docs/docs/cmd/teams/report/report-pstncalls.mdx +1 -1
  119. package/docs/docs/cmd/teams/tab/tab-remove.mdx +1 -1
  120. package/docs/docs/cmd/teams/team/team-remove.mdx +1 -1
  121. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-healthissue-list.mdx +1 -1
  122. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-get.mdx +1 -1
  123. package/docs/docs/cmd/tenant/serviceannouncement/serviceannouncement-message-list.mdx +1 -1
  124. package/docs/docs/cmd/todo/task/task-set.mdx +1 -1
  125. package/npm-shrinkwrap.json +480 -516
  126. package/package.json +28 -28
@@ -26,32 +26,32 @@ import { FN002023_DEVDEP_microsoft_eslint_config_spfx } from './rules/FN002023_D
26
26
  import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
27
27
  import { FN014010_CODE_settings_filesexclude_jest } from './rules/FN014010_CODE_settings_filesexclude_jest.js';
28
28
  export default [
29
- new FN001001_DEP_microsoft_sp_core_library('1.18.1-rc.0'),
30
- new FN001002_DEP_microsoft_sp_lodash_subset('1.18.1-rc.0'),
31
- new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.18.1-rc.0'),
32
- new FN001004_DEP_microsoft_sp_webpart_base('1.18.1-rc.0'),
33
- new FN001011_DEP_microsoft_sp_dialog('1.18.1-rc.0'),
34
- new FN001012_DEP_microsoft_sp_application_base('1.18.1-rc.0'),
35
- new FN001014_DEP_microsoft_sp_listview_extensibility('1.18.1-rc.0'),
36
- new FN001021_DEP_microsoft_sp_property_pane('1.18.1-rc.0'),
29
+ new FN001001_DEP_microsoft_sp_core_library('1.18.1'),
30
+ new FN001002_DEP_microsoft_sp_lodash_subset('1.18.1'),
31
+ new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.18.1'),
32
+ new FN001004_DEP_microsoft_sp_webpart_base('1.18.1'),
33
+ new FN001011_DEP_microsoft_sp_dialog('1.18.1'),
34
+ new FN001012_DEP_microsoft_sp_application_base('1.18.1'),
35
+ new FN001014_DEP_microsoft_sp_listview_extensibility('1.18.1'),
36
+ new FN001021_DEP_microsoft_sp_property_pane('1.18.1'),
37
37
  new FN001022_DEP_office_ui_fabric_react('', false),
38
- new FN001023_DEP_microsoft_sp_component_base('1.18.1-rc.0'),
39
- new FN001024_DEP_microsoft_sp_diagnostics('1.18.1-rc.0'),
40
- new FN001025_DEP_microsoft_sp_dynamic_data('1.18.1-rc.0'),
41
- new FN001026_DEP_microsoft_sp_extension_base('1.18.1-rc.0'),
42
- new FN001027_DEP_microsoft_sp_http('1.18.1-rc.0'),
43
- new FN001028_DEP_microsoft_sp_list_subscription('1.18.1-rc.0'),
44
- new FN001029_DEP_microsoft_sp_loader('1.18.1-rc.0'),
45
- new FN001030_DEP_microsoft_sp_module_interfaces('1.18.1-rc.0'),
46
- new FN001031_DEP_microsoft_sp_odata_types('1.18.1-rc.0'),
47
- new FN001032_DEP_microsoft_sp_page_context('1.18.1-rc.0'),
48
- new FN001013_DEP_microsoft_decorators('1.18.1-rc.0'),
49
- new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.18.1-rc.0'),
50
- new FN002001_DEVDEP_microsoft_sp_build_web('1.18.1-rc.0'),
51
- new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.18.1-rc.0'),
52
- new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.18.1-rc.0'),
53
- new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.18.1-rc.0'),
54
- new FN010001_YORC_version('1.18.1-rc.0'),
38
+ new FN001023_DEP_microsoft_sp_component_base('1.18.1'),
39
+ new FN001024_DEP_microsoft_sp_diagnostics('1.18.1'),
40
+ new FN001025_DEP_microsoft_sp_dynamic_data('1.18.1'),
41
+ new FN001026_DEP_microsoft_sp_extension_base('1.18.1'),
42
+ new FN001027_DEP_microsoft_sp_http('1.18.1'),
43
+ new FN001028_DEP_microsoft_sp_list_subscription('1.18.1'),
44
+ new FN001029_DEP_microsoft_sp_loader('1.18.1'),
45
+ new FN001030_DEP_microsoft_sp_module_interfaces('1.18.1'),
46
+ new FN001031_DEP_microsoft_sp_odata_types('1.18.1'),
47
+ new FN001032_DEP_microsoft_sp_page_context('1.18.1'),
48
+ new FN001013_DEP_microsoft_decorators('1.18.1'),
49
+ new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.18.1'),
50
+ new FN002001_DEVDEP_microsoft_sp_build_web('1.18.1'),
51
+ new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.18.1'),
52
+ new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.18.1'),
53
+ new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.18.1'),
54
+ new FN010001_YORC_version('1.18.1'),
55
55
  new FN014010_CODE_settings_filesexclude_jest()
56
56
  ];
57
- //# sourceMappingURL=upgrade-1.18.1-rc.0.js.map
57
+ //# sourceMappingURL=upgrade-1.18.1.js.map
@@ -7,8 +7,6 @@ var _SpfxProjectUpgradeCommand_instances, _a, _SpfxProjectUpgradeCommand_initTel
7
7
  import fs from 'fs';
8
8
  import os from 'os';
9
9
  import path from 'path';
10
- // uncomment to support upgrading to preview releases
11
- import { prerelease } from 'semver';
12
10
  import { CommandError } from '../../../../Command.js';
13
11
  import { fsUtil } from '../../../../utils/fsUtil.js';
14
12
  import { packageManager } from '../../../../utils/packageManager.js';
@@ -72,7 +70,7 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
72
70
  '1.17.3',
73
71
  '1.17.4',
74
72
  '1.18.0',
75
- '1.18.1-rc.0'
73
+ '1.18.1'
76
74
  ];
77
75
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
78
76
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
@@ -85,15 +83,15 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
85
83
  }
86
84
  this.toVersion = args.options.toVersion ? args.options.toVersion : this.supportedVersions[this.supportedVersions.length - 1];
87
85
  // uncomment to support upgrading to preview releases
88
- if (!args.options.toVersion &&
89
- !args.options.preview &&
90
- prerelease(this.toVersion)) {
91
- // no version and no preview specified while the current version to
92
- // upgrade to is a prerelease so let's grab the first non-preview version
93
- // since we're supporting only one preview version, it's sufficient for
94
- // us to take second to last version
95
- this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
96
- }
86
+ // if (!args.options.toVersion &&
87
+ // !args.options.preview &&
88
+ // prerelease(this.toVersion)) {
89
+ // // no version and no preview specified while the current version to
90
+ // // upgrade to is a prerelease so let's grab the first non-preview version
91
+ // // since we're supporting only one preview version, it's sufficient for
92
+ // // us to take second to last version
93
+ // this.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
94
+ // }
97
95
  this.packageManager = args.options.packageManager || 'npm';
98
96
  this.shell = args.options.shell || 'bash';
99
97
  if (this.supportedVersions.indexOf(this.toVersion) < 0) {
@@ -480,9 +478,9 @@ _a = SpfxProjectUpgradeCommand, _SpfxProjectUpgradeCommand_instances = new WeakS
480
478
  preview: args.options.preview
481
479
  });
482
480
  // uncomment to support upgrading to preview releases
483
- if (prerelease(this.telemetryProperties.toVersion) && !args.options.preview) {
484
- this.telemetryProperties.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
485
- }
481
+ // if (prerelease(this.telemetryProperties.toVersion) && !args.options.preview) {
482
+ // this.telemetryProperties.toVersion = this.supportedVersions[this.supportedVersions.length - 2];
483
+ // }
486
484
  });
487
485
  }, _SpfxProjectUpgradeCommand_initOptions = function _SpfxProjectUpgradeCommand_initOptions() {
488
486
  this.options.unshift({
@@ -539,7 +539,7 @@ class SpfxDoctorCommand extends BaseProjectCommand {
539
539
  fix: 'npm i -g yo@4'
540
540
  }
541
541
  },
542
- '1.18.1-rc.0': {
542
+ '1.18.1': {
543
543
  gulpCli: {
544
544
  range: '^1 || ^2',
545
545
  fix: 'npm i -g gulp-cli@2'
@@ -4,14 +4,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoFileRetentionLabelEnsureCommand_instances, _SpoFileRetentionLabelEnsureCommand_initTelemetry, _SpoFileRetentionLabelEnsureCommand_initOptions, _SpoFileRetentionLabelEnsureCommand_initValidators, _SpoFileRetentionLabelEnsureCommand_initOptionSets;
7
- import { Cli } from '../../../../cli/Cli.js';
7
+ import * as url from 'url';
8
8
  import request from '../../../../request.js';
9
- import { formatting } from '../../../../utils/formatting.js';
10
- import { urlUtil } from '../../../../utils/urlUtil.js';
11
9
  import { validation } from '../../../../utils/validation.js';
12
10
  import SpoCommand from '../../../base/SpoCommand.js';
13
11
  import commands from '../../commands.js';
14
- import spoListItemRetentionLabelEnsureCommand from '../listitem/listitem-retentionlabel-ensure.js';
12
+ import { formatting } from '../../../../utils/formatting.js';
13
+ import { urlUtil } from '../../../../utils/urlUtil.js';
14
+ import { spo } from '../../../../utils/spo.js';
15
15
  class SpoFileRetentionLabelEnsureCommand extends SpoCommand {
16
16
  get name() {
17
17
  return commands.FILE_RETENTIONLABEL_ENSURE;
@@ -30,22 +30,13 @@ class SpoFileRetentionLabelEnsureCommand extends SpoCommand {
30
30
  async commandAction(logger, args) {
31
31
  try {
32
32
  const fileProperties = await this.getFileProperties(logger, args);
33
+ const parsedUrl = url.parse(args.options.webUrl);
34
+ const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
35
+ const listAbsoluteUrl = urlUtil.urlCombine(tenantUrl, fileProperties.listServerRelativeUrl);
33
36
  if (args.options.assetId) {
34
- await this.applyAssetId(args.options.webUrl, fileProperties.ListItemAllFields.ParentList.Id, fileProperties.ListItemAllFields.Id, args.options.assetId);
35
- }
36
- const options = {
37
- webUrl: args.options.webUrl,
38
- listId: fileProperties.ListItemAllFields.ParentList.Id,
39
- listItemId: fileProperties.ListItemAllFields.Id,
40
- name: args.options.name,
41
- output: 'json',
42
- debug: this.debug,
43
- verbose: this.verbose
44
- };
45
- const spoListItemRetentionLabelEnsureCommandOutput = await Cli.executeCommandWithOutput(spoListItemRetentionLabelEnsureCommand, { options: { ...options, _: [] } });
46
- if (this.verbose) {
47
- await logger.logToStderr(spoListItemRetentionLabelEnsureCommandOutput.stderr);
37
+ await this.applyAssetId(args.options.webUrl, fileProperties.listServerRelativeUrl, fileProperties.listItemId, args.options.assetId);
48
38
  }
39
+ await spo.applyRetentionLabelToListItems(args.options.webUrl, args.options.name, listAbsoluteUrl, [parseInt(fileProperties.listItemId)], logger, args.options.verbose);
49
40
  }
50
41
  catch (err) {
51
42
  this.handleRejectedODataJsonPromise(err);
@@ -64,19 +55,19 @@ class SpoFileRetentionLabelEnsureCommand extends SpoCommand {
64
55
  requestUrl += `GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
65
56
  }
66
57
  const requestOptions = {
67
- url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ServerRelativeUrl,ListItemAllFields/ParentList/Id,ListItemAllFields/Id`,
58
+ url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList/RootFolder&$select=ServerRelativeUrl,ListItemAllFields/ParentList/RootFolder/ServerRelativeUrl,ListItemAllFields/Id`,
68
59
  headers: {
69
60
  'accept': 'application/json;odata=nometadata'
70
61
  },
71
62
  responseType: 'json'
72
63
  };
73
- return request.get(requestOptions);
64
+ const response = await request.get(requestOptions);
65
+ return { listItemId: response.ListItemAllFields.Id, listServerRelativeUrl: response.ListItemAllFields.ParentList.RootFolder.ServerRelativeUrl };
74
66
  }
75
- async applyAssetId(webUrl, listId, listItemId, assetId) {
76
- const requestUrl = `${webUrl}/_api/web/lists(guid'${formatting.encodeQueryParameter(listId)}')`;
67
+ async applyAssetId(webUrl, listServerRelativeUrl, listItemId, assetId) {
77
68
  const requestBody = { "formValues": [{ "FieldName": "ComplianceAssetId", "FieldValue": assetId }] };
78
69
  const requestOptions = {
79
- url: `${requestUrl}/items(${listItemId})/ValidateUpdateListItem()`,
70
+ url: `${webUrl}/_api/web/GetList(@listUrl)/items(${listItemId})/ValidateUpdateListItem()?@listUrl='${formatting.encodeQueryParameter(listServerRelativeUrl)}'`,
80
71
  headers: {
81
72
  'accept': 'application/json;odata=nometadata'
82
73
  },
@@ -4,14 +4,15 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoFileRetentionLabelRemoveCommand_instances, _SpoFileRetentionLabelRemoveCommand_initTelemetry, _SpoFileRetentionLabelRemoveCommand_initOptions, _SpoFileRetentionLabelRemoveCommand_initValidators, _SpoFileRetentionLabelRemoveCommand_initOptionSets;
7
+ import * as url from 'url';
7
8
  import { Cli } from '../../../../cli/Cli.js';
8
9
  import request from '../../../../request.js';
9
10
  import { formatting } from '../../../../utils/formatting.js';
11
+ import { spo } from '../../../../utils/spo.js';
10
12
  import { urlUtil } from '../../../../utils/urlUtil.js';
11
13
  import { validation } from '../../../../utils/validation.js';
12
14
  import SpoCommand from '../../../base/SpoCommand.js';
13
15
  import commands from '../../commands.js';
14
- import spoListItemRetentionLabelRemoveCommand from '../listitem/listitem-retentionlabel-remove.js';
15
16
  class SpoFileRetentionLabelRemoveCommand extends SpoCommand {
16
17
  get name() {
17
18
  return commands.FILE_RETENTIONLABEL_REMOVE;
@@ -39,36 +40,21 @@ class SpoFileRetentionLabelRemoveCommand extends SpoCommand {
39
40
  }
40
41
  }
41
42
  async removeFileRetentionLabel(logger, args) {
42
- if (this.verbose) {
43
- await logger.logToStderr(`Removing retention label from file ${args.options.fileId || args.options.fileUrl} in site at ${args.options.webUrl}...`);
44
- }
45
43
  try {
46
- const fileProperties = await this.getFileProperties(args);
47
- const options = {
48
- webUrl: args.options.webUrl,
49
- listId: fileProperties.listId,
50
- listItemId: fileProperties.id,
51
- force: true,
52
- output: 'json',
53
- debug: this.debug,
54
- verbose: this.verbose
55
- };
56
- const spoListItemRetentionLabelRemoveCommandOutput = await Cli.executeCommandWithOutput(spoListItemRetentionLabelRemoveCommand, { options: { ...options, _: [] } });
57
- if (this.verbose) {
58
- await logger.logToStderr(spoListItemRetentionLabelRemoveCommandOutput.stderr);
59
- }
44
+ const fileProperties = await this.getFileProperties(logger, args);
45
+ const parsedUrl = url.parse(args.options.webUrl);
46
+ const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
47
+ const listAbsoluteUrl = urlUtil.urlCombine(tenantUrl, fileProperties.listServerRelativeUrl);
48
+ await spo.removeRetentionLabelFromListItems(args.options.webUrl, listAbsoluteUrl, [parseInt(fileProperties.listItemId)], logger, args.options.verbose);
60
49
  }
61
50
  catch (err) {
62
51
  this.handleRejectedODataJsonPromise(err);
63
52
  }
64
53
  }
65
- async getFileProperties(args) {
66
- const requestOptions = {
67
- headers: {
68
- 'accept': 'application/json;odata=nometadata'
69
- },
70
- responseType: 'json'
71
- };
54
+ async getFileProperties(logger, args) {
55
+ if (this.verbose) {
56
+ logger.logToStderr(`Retrieving list and item information for file '${args.options.fileId || args.options.fileUrl}' in site at ${args.options.webUrl}...`);
57
+ }
72
58
  let requestUrl = `${args.options.webUrl}/_api/web/`;
73
59
  if (args.options.fileId) {
74
60
  requestUrl += `GetFileById('${args.options.fileId}')`;
@@ -77,9 +63,15 @@ class SpoFileRetentionLabelRemoveCommand extends SpoCommand {
77
63
  const serverRelativeUrl = urlUtil.getServerRelativePath(args.options.webUrl, args.options.fileUrl);
78
64
  requestUrl += `GetFileByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
79
65
  }
80
- requestOptions.url = `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ListItemAllFields/ParentList/Id,ListItemAllFields/Id`;
66
+ const requestOptions = {
67
+ url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList/RootFolder&$select=ServerRelativeUrl,ListItemAllFields/ParentList/RootFolder/ServerRelativeUrl,ListItemAllFields/Id`,
68
+ headers: {
69
+ 'accept': 'application/json;odata=nometadata'
70
+ },
71
+ responseType: 'json'
72
+ };
81
73
  const response = await request.get(requestOptions);
82
- return { id: response.ListItemAllFields.Id, listId: response.ListItemAllFields.ParentList.Id };
74
+ return { listItemId: response.ListItemAllFields.Id, listServerRelativeUrl: response.ListItemAllFields.ParentList.RootFolder.ServerRelativeUrl };
83
75
  }
84
76
  }
85
77
  _SpoFileRetentionLabelRemoveCommand_instances = new WeakSet(), _SpoFileRetentionLabelRemoveCommand_initTelemetry = function _SpoFileRetentionLabelRemoveCommand_initTelemetry() {
@@ -4,15 +4,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoFolderRetentionLabelEnsureCommand_instances, _SpoFolderRetentionLabelEnsureCommand_initTelemetry, _SpoFolderRetentionLabelEnsureCommand_initOptions, _SpoFolderRetentionLabelEnsureCommand_initValidators, _SpoFolderRetentionLabelEnsureCommand_initOptionSets;
7
- import { Cli } from '../../../../cli/Cli.js';
7
+ import * as url from 'url';
8
8
  import request from '../../../../request.js';
9
9
  import { formatting } from '../../../../utils/formatting.js';
10
+ import { spo } from '../../../../utils/spo.js';
10
11
  import { urlUtil } from '../../../../utils/urlUtil.js';
11
12
  import { validation } from '../../../../utils/validation.js';
12
13
  import SpoCommand from '../../../base/SpoCommand.js';
13
14
  import commands from '../../commands.js';
14
- import spoListRetentionLabelEnsureCommand from '../list/list-retentionlabel-ensure.js';
15
- import spoListItemRetentionLabelEnsureCommand from '../listitem/listitem-retentionlabel-ensure.js';
16
15
  class SpoFolderRetentionLabelEnsureCommand extends SpoCommand {
17
16
  get name() {
18
17
  return commands.FOLDER_RETENTIONLABEL_ENSURE;
@@ -32,33 +31,14 @@ class SpoFolderRetentionLabelEnsureCommand extends SpoCommand {
32
31
  try {
33
32
  const folderProperties = await this.getFolderProperties(logger, args);
34
33
  if (folderProperties.ListItemAllFields) {
35
- const options = {
36
- webUrl: args.options.webUrl,
37
- listId: folderProperties.ListItemAllFields.ParentList.Id,
38
- listItemId: folderProperties.ListItemAllFields.Id,
39
- name: args.options.name,
40
- output: 'json',
41
- debug: this.debug,
42
- verbose: this.verbose
43
- };
44
- const spoListItemRetentionLabelEnsureCommandOutput = await Cli.executeCommandWithOutput(spoListItemRetentionLabelEnsureCommand, { options: { ...options, _: [] } });
45
- if (this.verbose) {
46
- await logger.logToStderr(spoListItemRetentionLabelEnsureCommandOutput.stderr);
47
- }
34
+ const parsedUrl = url.parse(args.options.webUrl);
35
+ const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
36
+ const listAbsoluteUrl = urlUtil.urlCombine(tenantUrl, folderProperties.ListItemAllFields.ParentList.RootFolder.ServerRelativeUrl);
37
+ await spo.applyRetentionLabelToListItems(args.options.webUrl, args.options.name, listAbsoluteUrl, [parseInt(folderProperties.ListItemAllFields.Id)], logger, args.options.verbose);
48
38
  }
49
39
  else {
50
- const options = {
51
- webUrl: args.options.webUrl,
52
- listUrl: folderProperties.ServerRelativeUrl,
53
- name: args.options.name,
54
- output: 'json',
55
- debug: this.debug,
56
- verbose: this.verbose
57
- };
58
- const spoListRetentionLabelEnsureCommandOutput = await Cli.executeCommandWithOutput(spoListRetentionLabelEnsureCommand, { options: { ...options, _: [] } });
59
- if (this.verbose) {
60
- await logger.logToStderr(spoListRetentionLabelEnsureCommandOutput.stderr);
61
- }
40
+ const listAbsoluteUrl = urlUtil.getAbsoluteUrl(args.options.webUrl, folderProperties.ServerRelativeUrl);
41
+ await spo.applyDefaultRetentionLabelToList(args.options.webUrl, args.options.name, listAbsoluteUrl, false, logger, args.options.verbose);
62
42
  }
63
43
  }
64
44
  catch (err) {
@@ -78,7 +58,7 @@ class SpoFolderRetentionLabelEnsureCommand extends SpoCommand {
78
58
  requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
79
59
  }
80
60
  const requestOptions = {
81
- url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ServerRelativeUrl,ListItemAllFields/ParentList/Id,ListItemAllFields/Id`,
61
+ url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList/RootFolder&$select=ServerRelativeUrl,ListItemAllFields/ParentList/RootFolder/ServerRelativeUrl,ListItemAllFields/Id`,
82
62
  headers: {
83
63
  'accept': 'application/json;odata=nometadata'
84
64
  },
@@ -4,15 +4,15 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
6
  var _SpoFolderRetentionLabelRemoveCommand_instances, _SpoFolderRetentionLabelRemoveCommand_initTelemetry, _SpoFolderRetentionLabelRemoveCommand_initOptions, _SpoFolderRetentionLabelRemoveCommand_initValidators, _SpoFolderRetentionLabelRemoveCommand_initOptionSets;
7
+ import * as url from 'url';
7
8
  import { Cli } from '../../../../cli/Cli.js';
8
9
  import request from '../../../../request.js';
9
10
  import { formatting } from '../../../../utils/formatting.js';
11
+ import { spo } from '../../../../utils/spo.js';
10
12
  import { urlUtil } from '../../../../utils/urlUtil.js';
11
13
  import { validation } from '../../../../utils/validation.js';
12
14
  import SpoCommand from '../../../base/SpoCommand.js';
13
15
  import commands from '../../commands.js';
14
- import spoListRetentionLabelRemoveCommand from '../list/list-retentionlabel-remove.js';
15
- import spoListItemRetentionLabelRemoveCommand from '../listitem/listitem-retentionlabel-remove.js';
16
16
  class SpoFolderRetentionLabelRemoveCommand extends SpoCommand {
17
17
  get name() {
18
18
  return commands.FOLDER_RETENTIONLABEL_REMOVE;
@@ -43,33 +43,14 @@ class SpoFolderRetentionLabelRemoveCommand extends SpoCommand {
43
43
  try {
44
44
  const folderProperties = await this.getFolderProperties(logger, args);
45
45
  if (folderProperties.ListItemAllFields) {
46
- const options = {
47
- webUrl: args.options.webUrl,
48
- listId: folderProperties.ListItemAllFields.ParentList.Id,
49
- listItemId: folderProperties.ListItemAllFields.Id,
50
- force: true,
51
- output: 'json',
52
- debug: this.debug,
53
- verbose: this.verbose
54
- };
55
- const spoListItemRetentionLabelRemoveCommandOutput = await Cli.executeCommandWithOutput(spoListItemRetentionLabelRemoveCommand, { options: { ...options, _: [] } });
56
- if (this.verbose) {
57
- await logger.logToStderr(spoListItemRetentionLabelRemoveCommandOutput.stderr);
58
- }
46
+ const parsedUrl = url.parse(args.options.webUrl);
47
+ const tenantUrl = `${parsedUrl.protocol}//${parsedUrl.hostname}`;
48
+ const listAbsoluteUrl = urlUtil.urlCombine(tenantUrl, folderProperties.ListItemAllFields.ParentList.RootFolder.ServerRelativeUrl);
49
+ await spo.removeRetentionLabelFromListItems(args.options.webUrl, listAbsoluteUrl, [parseInt(folderProperties.ListItemAllFields.Id)], logger, args.options.verbose);
59
50
  }
60
51
  else {
61
- const options = {
62
- webUrl: args.options.webUrl,
63
- listUrl: folderProperties.ServerRelativeUrl,
64
- force: true,
65
- output: 'json',
66
- debug: this.debug,
67
- verbose: this.verbose
68
- };
69
- const spoListRetentionLabelEnsureCommandOutput = await Cli.executeCommandWithOutput(spoListRetentionLabelRemoveCommand, { options: { ...options, _: [] } });
70
- if (this.verbose) {
71
- await logger.logToStderr(spoListRetentionLabelEnsureCommandOutput.stderr);
72
- }
52
+ const listAbsoluteUrl = urlUtil.getAbsoluteUrl(args.options.webUrl, folderProperties.ServerRelativeUrl);
53
+ await spo.removeDefaultRetentionLabelFromList(args.options.webUrl, listAbsoluteUrl, logger, args.options.verbose);
73
54
  }
74
55
  }
75
56
  catch (err) {
@@ -89,7 +70,7 @@ class SpoFolderRetentionLabelRemoveCommand extends SpoCommand {
89
70
  requestUrl += `GetFolderByServerRelativePath(DecodedUrl='${formatting.encodeQueryParameter(serverRelativeUrl)}')`;
90
71
  }
91
72
  const requestOptions = {
92
- url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList&$select=ServerRelativeUrl,ListItemAllFields/ParentList/Id,ListItemAllFields/Id`,
73
+ url: `${requestUrl}?$expand=ListItemAllFields,ListItemAllFields/ParentList/RootFolder&$select=ServerRelativeUrl,ListItemAllFields/ParentList/RootFolder/ServerRelativeUrl,ListItemAllFields/Id`,
93
74
  headers: {
94
75
  'accept': 'application/json;odata=nometadata'
95
76
  },
@@ -6,6 +6,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
6
6
  var _SpoListRetentionLabelEnsureCommand_instances, _SpoListRetentionLabelEnsureCommand_initTelemetry, _SpoListRetentionLabelEnsureCommand_initOptions, _SpoListRetentionLabelEnsureCommand_initValidators, _SpoListRetentionLabelEnsureCommand_initOptionSets;
7
7
  import request from '../../../../request.js';
8
8
  import { formatting } from '../../../../utils/formatting.js';
9
+ import { spo } from '../../../../utils/spo.js';
9
10
  import { urlUtil } from '../../../../utils/urlUtil.js';
10
11
  import { validation } from '../../../../utils/validation.js';
11
12
  import SpoCommand from '../../../base/SpoCommand.js';
@@ -27,49 +28,38 @@ class SpoListRetentionLabelEnsureCommand extends SpoCommand {
27
28
  }
28
29
  async commandAction(logger, args) {
29
30
  try {
30
- let listRestUrl = '';
31
- let listServerRelativeUrl = '';
32
- if (args.options.listUrl) {
33
- const listServerRelativeUrlFromPath = urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
34
- listServerRelativeUrl = listServerRelativeUrlFromPath;
35
- }
36
- else {
37
- if (args.options.listId) {
38
- listRestUrl = `lists(guid'${formatting.encodeQueryParameter(args.options.listId)}')/`;
39
- }
40
- else {
41
- listRestUrl = `lists/getByTitle('${formatting.encodeQueryParameter(args.options.listTitle)}')/`;
42
- }
43
- const requestOptions = {
44
- url: `${args.options.webUrl}/_api/web/${listRestUrl}?$expand=RootFolder&$select=RootFolder`,
45
- headers: {
46
- 'accept': 'application/json;odata=nometadata'
47
- },
48
- responseType: 'json'
49
- };
50
- const listInstance = await request.get(requestOptions);
51
- listServerRelativeUrl = listInstance.RootFolder.ServerRelativeUrl;
52
- }
31
+ const listServerRelativeUrl = await this.getListServerRelativeUrl(args, logger);
53
32
  const listAbsoluteUrl = urlUtil.getAbsoluteUrl(args.options.webUrl, listServerRelativeUrl);
54
- const requestUrl = `${args.options.webUrl}/_api/SP_CompliancePolicy_SPPolicyStoreProxy_SetListComplianceTag`;
55
- const requestOptions = {
56
- url: requestUrl,
57
- headers: {
58
- 'accept': 'application/json;odata=nometadata'
59
- },
60
- data: {
61
- listUrl: listAbsoluteUrl,
62
- complianceTagValue: args.options.name,
63
- syncToItems: args.options.syncToItems || false
64
- },
65
- responseType: 'json'
66
- };
67
- await request.post(requestOptions);
33
+ await spo.applyDefaultRetentionLabelToList(args.options.webUrl, args.options.name, listAbsoluteUrl, args.options.syncToItems, logger, args.options.verbose);
68
34
  }
69
35
  catch (err) {
70
36
  this.handleRejectedODataJsonPromise(err);
71
37
  }
72
38
  }
39
+ async getListServerRelativeUrl(args, logger) {
40
+ if (this.verbose) {
41
+ logger.logToStderr('Getting the list server relative URL');
42
+ }
43
+ if (args.options.listUrl) {
44
+ return urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
45
+ }
46
+ let requestUrl = `${args.options.webUrl}/_api/web/`;
47
+ if (args.options.listId) {
48
+ requestUrl += `lists(guid'${formatting.encodeQueryParameter(args.options.listId)}')/`;
49
+ }
50
+ else {
51
+ requestUrl += `lists/getByTitle('${formatting.encodeQueryParameter(args.options.listTitle)}')/`;
52
+ }
53
+ const requestOptions = {
54
+ url: `${requestUrl}?$expand=RootFolder&$select=RootFolder/ServerRelativeUrl`,
55
+ headers: {
56
+ 'accept': 'application/json;odata=nometadata'
57
+ },
58
+ responseType: 'json'
59
+ };
60
+ const listInstance = await request.get(requestOptions);
61
+ return listInstance.RootFolder.ServerRelativeUrl;
62
+ }
73
63
  }
74
64
  _SpoListRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoListRetentionLabelEnsureCommand_initTelemetry = function _SpoListRetentionLabelEnsureCommand_initTelemetry() {
75
65
  this.telemetry.push((args) => {
@@ -11,6 +11,7 @@ import { urlUtil } from '../../../../utils/urlUtil.js';
11
11
  import { validation } from '../../../../utils/validation.js';
12
12
  import SpoCommand from '../../../base/SpoCommand.js';
13
13
  import commands from '../../commands.js';
14
+ import { spo } from '../../../../utils/spo.js';
14
15
  class SpoListRetentionLabelRemoveCommand extends SpoCommand {
15
16
  get name() {
16
17
  return commands.LIST_RETENTIONLABEL_REMOVE;
@@ -44,21 +45,7 @@ class SpoListRetentionLabelRemoveCommand extends SpoCommand {
44
45
  try {
45
46
  const listServerRelativeUrl = await this.getListServerRelativeUrl(args, logger);
46
47
  const listAbsoluteUrl = urlUtil.getAbsoluteUrl(args.options.webUrl, listServerRelativeUrl);
47
- const requestOptions = {
48
- url: `${args.options.webUrl}/_api/SP_CompliancePolicy_SPPolicyStoreProxy_SetListComplianceTag`,
49
- headers: {
50
- 'accept': 'application/json;odata=nometadata'
51
- },
52
- data: {
53
- listUrl: listAbsoluteUrl,
54
- complianceTagValue: '',
55
- blockDelete: false,
56
- blockEdit: false,
57
- syncToItems: false
58
- },
59
- responseType: 'json'
60
- };
61
- await request.post(requestOptions);
48
+ await spo.removeDefaultRetentionLabelFromList(args.options.webUrl, listAbsoluteUrl, logger, args.options.verbose);
62
49
  }
63
50
  catch (err) {
64
51
  this.handleRejectedODataJsonPromise(err);
@@ -71,15 +58,15 @@ class SpoListRetentionLabelRemoveCommand extends SpoCommand {
71
58
  if (args.options.listUrl) {
72
59
  return urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
73
60
  }
74
- let listRestUrl = '';
61
+ let requestUrl = `${args.options.webUrl}/_api/web/`;
75
62
  if (args.options.listId) {
76
- listRestUrl = `lists(guid'${formatting.encodeQueryParameter(args.options.listId)}')/`;
63
+ requestUrl += `lists(guid'${formatting.encodeQueryParameter(args.options.listId)}')/`;
77
64
  }
78
65
  else {
79
- listRestUrl = `lists/getByTitle('${formatting.encodeQueryParameter(args.options.listTitle)}')/`;
66
+ requestUrl += `lists/getByTitle('${formatting.encodeQueryParameter(args.options.listTitle)}')/`;
80
67
  }
81
68
  const requestOptions = {
82
- url: `${args.options.webUrl}/_api/web/${listRestUrl}?$expand=RootFolder&$select=RootFolder/ServerRelativeUrl`,
69
+ url: `${requestUrl}?$expand=RootFolder&$select=RootFolder/ServerRelativeUrl`,
83
70
  headers: {
84
71
  'accept': 'application/json;odata=nometadata'
85
72
  },