@pnp/cli-microsoft365 6.1.0-beta.c68d208 → 6.1.0-beta.d3a109a

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 (32) hide show
  1. package/dist/m365/aad/commands/group/group-get.js +79 -0
  2. package/dist/m365/aad/commands.js +1 -0
  3. package/dist/m365/context/commands/context-remove.js +103 -0
  4. package/dist/m365/context/commands.js +2 -1
  5. package/dist/m365/pp/commands/environment/environment-get.js +5 -13
  6. package/dist/m365/purview/commands/retentionlabel/retentionlabel-set.js +142 -0
  7. package/dist/m365/purview/commands.js +2 -1
  8. package/dist/m365/search/commands/externalconnection/externalconnection-schema-add.js +86 -0
  9. package/dist/m365/search/commands.js +2 -1
  10. package/dist/m365/spo/commands/group/group-member-add.js +68 -30
  11. package/dist/m365/spo/commands/group/group-member-remove.js +50 -7
  12. package/dist/m365/spo/commands/list/{list-retentionlabel-set.js → list-retentionlabel-ensure.js} +21 -15
  13. package/dist/m365/spo/commands/listitem/listitem-remove.js +1 -1
  14. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-remove.js +143 -0
  15. package/dist/m365/spo/commands/page/page-add.js +60 -63
  16. package/dist/m365/spo/commands/page/page-set.js +59 -70
  17. package/dist/m365/spo/commands/site/site-appcatalog-list.js +43 -0
  18. package/dist/m365/spo/commands.js +3 -1
  19. package/dist/request.js +2 -1
  20. package/docs/docs/cmd/aad/group/group-get.md +127 -0
  21. package/docs/docs/cmd/context/context-remove.md +34 -0
  22. package/docs/docs/cmd/pp/environment/environment-get.md +9 -3
  23. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.md +63 -0
  24. package/docs/docs/cmd/search/externalconnection/externalconnection-schema-add.md +31 -0
  25. package/docs/docs/cmd/spo/group/group-member-add.md +58 -6
  26. package/docs/docs/cmd/spo/group/group-member-remove.md +24 -8
  27. package/docs/docs/cmd/spo/list/list-retentionlabel-ensure.md +65 -0
  28. package/docs/docs/cmd/spo/listitem/listitem-remove.md +6 -6
  29. package/docs/docs/cmd/spo/listitem/listitem-retentionlabel-remove.md +55 -0
  30. package/docs/docs/cmd/spo/site/site-appcatalog-list.md +55 -0
  31. package/package.json +1 -1
  32. package/docs/docs/cmd/spo/list/list-retentionlabel-set.md +0 -65
@@ -19,6 +19,7 @@ const Cli_1 = require("../../../../cli/Cli");
19
19
  const request_1 = require("../../../../request");
20
20
  const formatting_1 = require("../../../../utils/formatting");
21
21
  const validation_1 = require("../../../../utils/validation");
22
+ const AadUserGetCommand = require("../../../aad/commands/user/user-get");
22
23
  const SpoCommand_1 = require("../../../base/SpoCommand");
23
24
  const commands_1 = require("../../commands");
24
25
  class SpoGroupMemberRemoveCommand extends SpoCommand_1.default {
@@ -36,16 +37,42 @@ class SpoGroupMemberRemoveCommand extends SpoCommand_1.default {
36
37
  __classPrivateFieldGet(this, _SpoGroupMemberRemoveCommand_instances, "m", _SpoGroupMemberRemoveCommand_initValidators).call(this);
37
38
  __classPrivateFieldGet(this, _SpoGroupMemberRemoveCommand_instances, "m", _SpoGroupMemberRemoveCommand_initOptionSets).call(this);
38
39
  }
40
+ getUserName(logger, args) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (args.options.userName) {
43
+ return args.options.userName;
44
+ }
45
+ if (this.verbose) {
46
+ logger.logToStderr(`Retrieving information about the user ${args.options.email}`);
47
+ }
48
+ const options = {
49
+ email: args.options.email,
50
+ output: 'json',
51
+ debug: args.options.debug,
52
+ verbose: args.options.verbose
53
+ };
54
+ const userGetOutput = yield Cli_1.Cli.executeCommandWithOutput(AadUserGetCommand, { options: Object.assign(Object.assign({}, options), { _: [] }) });
55
+ const userOutput = JSON.parse(userGetOutput.stdout);
56
+ return userOutput.userPrincipalName;
57
+ });
58
+ }
39
59
  commandAction(logger, args) {
40
60
  return __awaiter(this, void 0, void 0, function* () {
41
61
  const removeUserfromSPGroup = () => __awaiter(this, void 0, void 0, function* () {
42
62
  if (this.verbose) {
43
- logger.logToStderr(`Removing User with Username ${args.options.userName} from Group: ${args.options.groupId ? args.options.groupId : args.options.groupName}`);
63
+ logger.logToStderr(`Removing User ${args.options.userName || args.options.email || args.options.userId} from Group: ${args.options.groupId ? args.options.groupId : args.options.groupName}`);
44
64
  }
45
- const loginName = `i:0#.f|membership|${args.options.userName}`;
46
- const requestUrl = `${args.options.webUrl}/_api/web/sitegroups/${args.options.groupId
65
+ let requestUrl = `${args.options.webUrl}/_api/web/sitegroups/${args.options.groupId
47
66
  ? `GetById('${args.options.groupId}')`
48
- : `GetByName('${formatting_1.formatting.encodeQueryParameter(args.options.groupName)}')`}/users/removeByLoginName(@LoginName)?@LoginName='${formatting_1.formatting.encodeQueryParameter(loginName)}'`;
67
+ : `GetByName('${formatting_1.formatting.encodeQueryParameter(args.options.groupName)}')`}`;
68
+ if (args.options.userId) {
69
+ requestUrl += `/users/removeById(${args.options.userId})`;
70
+ }
71
+ else {
72
+ const userName = yield this.getUserName(logger, args);
73
+ const loginName = `i:0#.f|membership|${userName}`;
74
+ requestUrl += `/users/removeByLoginName(@LoginName)?@LoginName='${formatting_1.formatting.encodeQueryParameter(loginName)}'`;
75
+ }
49
76
  const requestOptions = {
50
77
  url: requestUrl,
51
78
  headers: {
@@ -71,7 +98,7 @@ class SpoGroupMemberRemoveCommand extends SpoCommand_1.default {
71
98
  type: 'confirm',
72
99
  name: 'continue',
73
100
  default: false,
74
- message: `Are you sure you want to remove user User ${args.options.userName} from SharePoint group?`
101
+ message: `Are you sure you want to remove user ${args.options.userName || args.options.userId || args.options.email} from the SharePoint group?`
75
102
  });
76
103
  if (result.continue) {
77
104
  yield removeUserfromSPGroup();
@@ -85,6 +112,9 @@ _SpoGroupMemberRemoveCommand_instances = new WeakSet(), _SpoGroupMemberRemoveCom
85
112
  Object.assign(this.telemetryProperties, {
86
113
  groupId: (!(!args.options.groupId)).toString(),
87
114
  groupName: (!(!args.options.groupName)).toString(),
115
+ userName: (!(!args.options.userName)).toString(),
116
+ email: (!(!args.options.email)).toString(),
117
+ userId: (!(!args.options.userId)).toString(),
88
118
  confirm: (!(!args.options.confirm)).toString()
89
119
  });
90
120
  });
@@ -96,7 +126,11 @@ _SpoGroupMemberRemoveCommand_instances = new WeakSet(), _SpoGroupMemberRemoveCom
96
126
  }, {
97
127
  option: '--groupName [groupName]'
98
128
  }, {
99
- option: '--userName <userName>'
129
+ option: '--userName [userName]'
130
+ }, {
131
+ option: '--email [email]'
132
+ }, {
133
+ option: '--userId [userId]'
100
134
  }, {
101
135
  option: '--confirm'
102
136
  });
@@ -105,10 +139,19 @@ _SpoGroupMemberRemoveCommand_instances = new WeakSet(), _SpoGroupMemberRemoveCom
105
139
  if (args.options.groupId && isNaN(args.options.groupId)) {
106
140
  return `Specified "groupId" ${args.options.groupId} is not valid`;
107
141
  }
142
+ if (args.options.userId && isNaN(args.options.userId)) {
143
+ return `Specified "userId" ${args.options.userId} is not valid`;
144
+ }
145
+ if (args.options.userName && !validation_1.validation.isValidUserPrincipalName(args.options.userName)) {
146
+ return `${args.options.userName} is not a valid userName`;
147
+ }
148
+ if (args.options.email && !validation_1.validation.isValidUserPrincipalName(args.options.email)) {
149
+ return `${args.options.email} is not a valid email`;
150
+ }
108
151
  return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
109
152
  }));
110
153
  }, _SpoGroupMemberRemoveCommand_initOptionSets = function _SpoGroupMemberRemoveCommand_initOptionSets() {
111
- this.optionSets.push({ options: ['groupName', 'groupId'] });
154
+ this.optionSets.push({ options: ['groupName', 'groupId'] }, { options: ['userName', 'email', 'userId'] });
112
155
  };
113
156
  module.exports = new SpoGroupMemberRemoveCommand();
114
157
  //# sourceMappingURL=group-member-remove.js.map
@@ -13,7 +13,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
13
13
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
14
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
15
  };
16
- var _SpoListRetentionLabelSetCommand_instances, _SpoListRetentionLabelSetCommand_initTelemetry, _SpoListRetentionLabelSetCommand_initOptions, _SpoListRetentionLabelSetCommand_initValidators, _SpoListRetentionLabelSetCommand_initOptionSets;
16
+ var _SpoListRetentionLabelEnsureCommand_instances, _SpoListRetentionLabelEnsureCommand_initTelemetry, _SpoListRetentionLabelEnsureCommand_initOptions, _SpoListRetentionLabelEnsureCommand_initValidators, _SpoListRetentionLabelEnsureCommand_initOptionSets;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const request_1 = require("../../../../request");
19
19
  const formatting_1 = require("../../../../utils/formatting");
@@ -21,9 +21,9 @@ const urlUtil_1 = require("../../../../utils/urlUtil");
21
21
  const validation_1 = require("../../../../utils/validation");
22
22
  const SpoCommand_1 = require("../../../base/SpoCommand");
23
23
  const commands_1 = require("../../commands");
24
- class SpoListRetentionLabelSetCommand extends SpoCommand_1.default {
24
+ class SpoListRetentionLabelEnsureCommand extends SpoCommand_1.default {
25
25
  get name() {
26
- return commands_1.default.LIST_RETENTIONLABEL_SET;
26
+ return commands_1.default.LIST_RETENTIONLABEL_ENSURE;
27
27
  }
28
28
  alias() {
29
29
  return [commands_1.default.LIST_LABEL_SET];
@@ -33,15 +33,21 @@ class SpoListRetentionLabelSetCommand extends SpoCommand_1.default {
33
33
  }
34
34
  constructor() {
35
35
  super();
36
- _SpoListRetentionLabelSetCommand_instances.add(this);
37
- __classPrivateFieldGet(this, _SpoListRetentionLabelSetCommand_instances, "m", _SpoListRetentionLabelSetCommand_initTelemetry).call(this);
38
- __classPrivateFieldGet(this, _SpoListRetentionLabelSetCommand_instances, "m", _SpoListRetentionLabelSetCommand_initOptions).call(this);
39
- __classPrivateFieldGet(this, _SpoListRetentionLabelSetCommand_instances, "m", _SpoListRetentionLabelSetCommand_initValidators).call(this);
40
- __classPrivateFieldGet(this, _SpoListRetentionLabelSetCommand_instances, "m", _SpoListRetentionLabelSetCommand_initOptionSets).call(this);
36
+ _SpoListRetentionLabelEnsureCommand_instances.add(this);
37
+ __classPrivateFieldGet(this, _SpoListRetentionLabelEnsureCommand_instances, "m", _SpoListRetentionLabelEnsureCommand_initTelemetry).call(this);
38
+ __classPrivateFieldGet(this, _SpoListRetentionLabelEnsureCommand_instances, "m", _SpoListRetentionLabelEnsureCommand_initOptions).call(this);
39
+ __classPrivateFieldGet(this, _SpoListRetentionLabelEnsureCommand_instances, "m", _SpoListRetentionLabelEnsureCommand_initValidators).call(this);
40
+ __classPrivateFieldGet(this, _SpoListRetentionLabelEnsureCommand_instances, "m", _SpoListRetentionLabelEnsureCommand_initOptionSets).call(this);
41
41
  }
42
42
  commandAction(logger, args) {
43
43
  return __awaiter(this, void 0, void 0, function* () {
44
- this.showDeprecationWarning(logger, commands_1.default.LIST_LABEL_SET, commands_1.default.LIST_RETENTIONLABEL_SET);
44
+ this.showDeprecationWarning(logger, commands_1.default.LIST_LABEL_SET, commands_1.default.LIST_RETENTIONLABEL_ENSURE);
45
+ if (args.options.blockDelete) {
46
+ this.warn(logger, `Option 'blockDelete' is deprecated.`);
47
+ }
48
+ if (args.options.blockEdit) {
49
+ this.warn(logger, `Option 'blockEdit' is deprecated.`);
50
+ }
45
51
  try {
46
52
  let listRestUrl = '';
47
53
  let listServerRelativeUrl = '';
@@ -90,7 +96,7 @@ class SpoListRetentionLabelSetCommand extends SpoCommand_1.default {
90
96
  });
91
97
  }
92
98
  }
93
- _SpoListRetentionLabelSetCommand_instances = new WeakSet(), _SpoListRetentionLabelSetCommand_initTelemetry = function _SpoListRetentionLabelSetCommand_initTelemetry() {
99
+ _SpoListRetentionLabelEnsureCommand_instances = new WeakSet(), _SpoListRetentionLabelEnsureCommand_initTelemetry = function _SpoListRetentionLabelEnsureCommand_initTelemetry() {
94
100
  this.telemetry.push((args) => {
95
101
  Object.assign(this.telemetryProperties, {
96
102
  listId: (!(!args.options.listId)).toString(),
@@ -101,7 +107,7 @@ _SpoListRetentionLabelSetCommand_instances = new WeakSet(), _SpoListRetentionLab
101
107
  blockEdit: args.options.blockEdit || false
102
108
  });
103
109
  });
104
- }, _SpoListRetentionLabelSetCommand_initOptions = function _SpoListRetentionLabelSetCommand_initOptions() {
110
+ }, _SpoListRetentionLabelEnsureCommand_initOptions = function _SpoListRetentionLabelEnsureCommand_initOptions() {
105
111
  this.options.unshift({
106
112
  option: '-u, --webUrl <webUrl>'
107
113
  }, {
@@ -119,15 +125,15 @@ _SpoListRetentionLabelSetCommand_instances = new WeakSet(), _SpoListRetentionLab
119
125
  }, {
120
126
  option: '--blockEdit'
121
127
  });
122
- }, _SpoListRetentionLabelSetCommand_initValidators = function _SpoListRetentionLabelSetCommand_initValidators() {
128
+ }, _SpoListRetentionLabelEnsureCommand_initValidators = function _SpoListRetentionLabelEnsureCommand_initValidators() {
123
129
  this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
124
130
  if (args.options.listId && !validation_1.validation.isValidGuid(args.options.listId)) {
125
131
  return `${args.options.listId} is not a valid GUID`;
126
132
  }
127
133
  return validation_1.validation.isValidSharePointUrl(args.options.webUrl);
128
134
  }));
129
- }, _SpoListRetentionLabelSetCommand_initOptionSets = function _SpoListRetentionLabelSetCommand_initOptionSets() {
135
+ }, _SpoListRetentionLabelEnsureCommand_initOptionSets = function _SpoListRetentionLabelEnsureCommand_initOptionSets() {
130
136
  this.optionSets.push({ options: ['listId', 'listTitle', 'listUrl'] });
131
137
  };
132
- module.exports = new SpoListRetentionLabelSetCommand();
133
- //# sourceMappingURL=list-retentionlabel-set.js.map
138
+ module.exports = new SpoListRetentionLabelEnsureCommand();
139
+ //# sourceMappingURL=list-retentionlabel-ensure.js.map
@@ -41,7 +41,7 @@ class SpoListItemRemoveCommand extends SpoCommand_1.default {
41
41
  return __awaiter(this, void 0, void 0, function* () {
42
42
  const removeListItem = () => __awaiter(this, void 0, void 0, function* () {
43
43
  if (this.verbose) {
44
- logger.logToStderr(`Removing list from list ${args.options.listId || args.options.listTitle || args.options.listUrl} item in site at ${args.options.webUrl}...`);
44
+ logger.logToStderr(`Removing list item ${args.options.id} from list ${args.options.listId || args.options.listTitle || args.options.listUrl} in site at ${args.options.webUrl}...`);
45
45
  }
46
46
  let requestUrl = `${args.options.webUrl}/_api/web`;
47
47
  if (args.options.listId) {
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
14
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
15
+ };
16
+ var _SpoListItemRetentionLabelRemoveCommand_instances, _SpoListItemRetentionLabelRemoveCommand_initTelemetry, _SpoListItemRetentionLabelRemoveCommand_initOptions, _SpoListItemRetentionLabelRemoveCommand_initValidators, _SpoListItemRetentionLabelRemoveCommand_initOptionSets;
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const Cli_1 = require("../../../../cli/Cli");
19
+ const request_1 = require("../../../../request");
20
+ const formatting_1 = require("../../../../utils/formatting");
21
+ const urlUtil_1 = require("../../../../utils/urlUtil");
22
+ const validation_1 = require("../../../../utils/validation");
23
+ const SpoCommand_1 = require("../../../base/SpoCommand");
24
+ const commands_1 = require("../../commands");
25
+ class SpoListItemRetentionLabelRemoveCommand extends SpoCommand_1.default {
26
+ get name() {
27
+ return commands_1.default.LISTITEM_RETENTIONLABEL_REMOVE;
28
+ }
29
+ get description() {
30
+ return 'Clear the retention label from a list item';
31
+ }
32
+ constructor() {
33
+ super();
34
+ _SpoListItemRetentionLabelRemoveCommand_instances.add(this);
35
+ __classPrivateFieldGet(this, _SpoListItemRetentionLabelRemoveCommand_instances, "m", _SpoListItemRetentionLabelRemoveCommand_initTelemetry).call(this);
36
+ __classPrivateFieldGet(this, _SpoListItemRetentionLabelRemoveCommand_instances, "m", _SpoListItemRetentionLabelRemoveCommand_initOptions).call(this);
37
+ __classPrivateFieldGet(this, _SpoListItemRetentionLabelRemoveCommand_instances, "m", _SpoListItemRetentionLabelRemoveCommand_initValidators).call(this);
38
+ __classPrivateFieldGet(this, _SpoListItemRetentionLabelRemoveCommand_instances, "m", _SpoListItemRetentionLabelRemoveCommand_initOptionSets).call(this);
39
+ }
40
+ commandAction(logger, args) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ if (args.options.confirm) {
43
+ yield this.removeListItemRetentionLabel(logger, args);
44
+ }
45
+ else {
46
+ const result = yield Cli_1.Cli.prompt({
47
+ type: 'confirm',
48
+ name: 'continue',
49
+ default: false,
50
+ message: `Are you sure you want to remove the retentionlabel from list item ${args.options.listItemId} from list ${args.options.listId || args.options.listTitle || args.options.listUrl} located in site ${args.options.webUrl}?`
51
+ });
52
+ if (result.continue) {
53
+ yield this.removeListItemRetentionLabel(logger, args);
54
+ }
55
+ }
56
+ });
57
+ }
58
+ removeListItemRetentionLabel(logger, args) {
59
+ return __awaiter(this, void 0, void 0, function* () {
60
+ if (this.verbose) {
61
+ logger.logToStderr(`Removing retention label from list ${args.options.listId || args.options.listTitle || args.options.listUrl} in site at ${args.options.webUrl}...`);
62
+ }
63
+ try {
64
+ let url = `${args.options.webUrl}/_api/web`;
65
+ if (args.options.listId) {
66
+ url += `/lists(guid'${formatting_1.formatting.encodeQueryParameter(args.options.listId)}')/items(${args.options.listItemId})/SetComplianceTag()`;
67
+ }
68
+ else if (args.options.listTitle) {
69
+ url += `/lists/getByTitle('${formatting_1.formatting.encodeQueryParameter(args.options.listTitle)}')/items(${args.options.listItemId})/SetComplianceTag()`;
70
+ }
71
+ else {
72
+ const listServerRelativeUrl = urlUtil_1.urlUtil.getServerRelativePath(args.options.webUrl, args.options.listUrl);
73
+ url += `/GetList(@a1)/items(@a2)/SetComplianceTag()?@a1='${formatting_1.formatting.encodeQueryParameter(listServerRelativeUrl)}'&@a2='${args.options.listItemId}'`;
74
+ }
75
+ const requestBody = {
76
+ "complianceTag": "",
77
+ "isTagPolicyHold": false,
78
+ "isTagPolicyRecord": false,
79
+ "isEventBasedTag": false,
80
+ "isTagSuperLock": false,
81
+ "isUnlockedAsDefault": false
82
+ };
83
+ const requestOptions = {
84
+ url: url,
85
+ method: 'POST',
86
+ headers: {
87
+ 'accept': 'application/json;odata=nometadata'
88
+ },
89
+ data: requestBody,
90
+ responseType: 'json'
91
+ };
92
+ yield request_1.default.post(requestOptions);
93
+ }
94
+ catch (err) {
95
+ this.handleRejectedODataJsonPromise(err);
96
+ }
97
+ });
98
+ }
99
+ }
100
+ _SpoListItemRetentionLabelRemoveCommand_instances = new WeakSet(), _SpoListItemRetentionLabelRemoveCommand_initTelemetry = function _SpoListItemRetentionLabelRemoveCommand_initTelemetry() {
101
+ this.telemetry.push((args) => {
102
+ Object.assign(this.telemetryProperties, {
103
+ listId: typeof args.options.listId !== 'undefined',
104
+ listTitle: typeof args.options.listTitle !== 'undefined',
105
+ listUrl: typeof args.options.listUrl !== 'undefined',
106
+ confirm: !!args.options.confirm
107
+ });
108
+ });
109
+ }, _SpoListItemRetentionLabelRemoveCommand_initOptions = function _SpoListItemRetentionLabelRemoveCommand_initOptions() {
110
+ this.options.unshift({
111
+ option: '-u, --webUrl <webUrl>'
112
+ }, {
113
+ option: '-i, --listItemId <listItemId>'
114
+ }, {
115
+ option: '-l, --listId [listId]'
116
+ }, {
117
+ option: '-t, --listTitle [listTitle]'
118
+ }, {
119
+ option: '--listUrl [listUrl]'
120
+ }, {
121
+ option: '--confirm'
122
+ });
123
+ }, _SpoListItemRetentionLabelRemoveCommand_initValidators = function _SpoListItemRetentionLabelRemoveCommand_initValidators() {
124
+ this.validators.push((args) => __awaiter(this, void 0, void 0, function* () {
125
+ const id = parseInt(args.options.listItemId);
126
+ if (isNaN(id)) {
127
+ return `${args.options.listItemId} is not a valid list item ID`;
128
+ }
129
+ const isValidSharePointUrl = validation_1.validation.isValidSharePointUrl(args.options.webUrl);
130
+ if (isValidSharePointUrl !== true) {
131
+ return isValidSharePointUrl;
132
+ }
133
+ if (args.options.listId &&
134
+ !validation_1.validation.isValidGuid(args.options.listId)) {
135
+ return `${args.options.listId} is not a valid GUID`;
136
+ }
137
+ return true;
138
+ }));
139
+ }, _SpoListItemRetentionLabelRemoveCommand_initOptionSets = function _SpoListItemRetentionLabelRemoveCommand_initOptionSets() {
140
+ this.optionSets.push({ options: ['listId', 'listTitle', 'listUrl'] });
141
+ };
142
+ module.exports = new SpoListItemRetentionLabelRemoveCommand();
143
+ //# sourceMappingURL=listitem-retentionlabel-remove.js.map
@@ -24,6 +24,9 @@ const validation_1 = require("../../../../utils/validation");
24
24
  const SpoCommand_1 = require("../../../base/SpoCommand");
25
25
  const commands_1 = require("../../commands");
26
26
  const Page_1 = require("./Page");
27
+ const spoFileGetCommand = require("../file/file-get");
28
+ const spoListItemSetCommand = require("../listitem/listitem-set");
29
+ const Cli_1 = require("../../../../cli/Cli");
27
30
  class SpoPageAddCommand extends SpoCommand_1.default {
28
31
  get name() {
29
32
  return commands_1.default.PAGE_ADD;
@@ -52,12 +55,14 @@ class SpoPageAddCommand extends SpoCommand_1.default {
52
55
  const pageTitle = args.options.title ? args.options.title : (args.options.name.indexOf('.aspx') > -1 ? args.options.name.substr(0, args.options.name.indexOf('.aspx')) : args.options.name);
53
56
  let pageId = null;
54
57
  const pageDescription = args.options.description || "";
58
+ if (!pageName.endsWith('.aspx')) {
59
+ pageName += '.aspx';
60
+ }
61
+ const listServerRelativeUrl = `${urlUtil_1.urlUtil.getServerRelativeSiteUrl(args.options.webUrl)}/sitepages`;
62
+ const serverRelativeFileUrl = `${listServerRelativeUrl}/${pageName}`;
55
63
  try {
56
64
  const reqDigest = yield spo_1.spo.getRequestDigest(args.options.webUrl);
57
65
  requestDigest = reqDigest.FormDigestValue;
58
- if (!pageName.endsWith('.aspx')) {
59
- pageName += '.aspx';
60
- }
61
66
  let requestOptions = {
62
67
  url: `${args.options.webUrl}/_api/web/getfolderbyserverrelativeurl('${serverRelativeSiteUrl}/sitepages')/files/AddTemplateFile`,
63
68
  headers: {
@@ -73,32 +78,25 @@ class SpoPageAddCommand extends SpoCommand_1.default {
73
78
  };
74
79
  const template = yield request_1.default.post(requestOptions);
75
80
  itemId = template.UniqueId;
81
+ const listItemId = yield this.getFileListItemId(args.options.webUrl, serverRelativeFileUrl);
76
82
  const layoutType = args.options.layoutType || 'Article';
77
- requestOptions = {
78
- url: `${args.options.webUrl}/_api/web/getfilebyid('${itemId}')/ListItemAllFields`,
79
- headers: {
80
- 'X-RequestDigest': requestDigest,
81
- 'X-HTTP-Method': 'MERGE',
82
- 'IF-MATCH': '*',
83
- 'content-type': 'application/json;odata=nometadata',
84
- accept: 'application/json;odata=nometadata'
85
- },
86
- data: {
87
- ContentTypeId: '0x0101009D1CB255DA76424F860D91F20E6C4118',
88
- Title: pageTitle,
89
- ClientSideApplicationId: 'b6917cb1-93a0-4b97-a84d-7cf49975d4ec',
90
- PageLayoutType: layoutType
91
- },
92
- responseType: 'json'
83
+ const listItemSetOptions = {
84
+ webUrl: args.options.webUrl,
85
+ listUrl: listServerRelativeUrl,
86
+ id: listItemId,
87
+ systemUpdate: true,
88
+ ContentTypeId: '0x0101009D1CB255DA76424F860D91F20E6C4118',
89
+ Title: pageTitle,
90
+ ClientSideApplicationId: 'b6917cb1-93a0-4b97-a84d-7cf49975d4ec',
91
+ PageLayoutType: layoutType,
92
+ verbose: this.verbose,
93
+ debug: this.debug
93
94
  };
94
- if (layoutType === 'Article') {
95
- requestOptions.data.PromotedState = 0;
96
- requestOptions.data.BannerImageUrl = {
97
- Description: '/_layouts/15/images/sitepagethumbnail.png',
98
- Url: `${resource}/_layouts/15/images/sitepagethumbnail.png`
99
- };
95
+ if (args.options.layoutType === 'Article') {
96
+ listItemSetOptions.PromotedState = 0;
97
+ listItemSetOptions.BannerImageUrl = `${resource}/_layouts/15/images/sitepagethumbnail.png, /_layouts/15/images/sitepagethumbnail.png`;
100
98
  }
101
- yield request_1.default.post(requestOptions);
99
+ yield Cli_1.Cli.executeCommand(spoListItemSetCommand, { options: Object.assign(Object.assign({}, listItemSetOptions), { _: [] }) });
102
100
  const pageProps = yield Page_1.Page.checkout(pageName, args.options.webUrl, logger, this.debug, this.verbose);
103
101
  if (pageProps) {
104
102
  pageId = pageProps.Id;
@@ -123,58 +121,43 @@ class SpoPageAddCommand extends SpoCommand_1.default {
123
121
  requestOptions.data = {
124
122
  WelcomePage: `SitePages/${pageName}`
125
123
  };
124
+ yield request_1.default.post(requestOptions);
126
125
  break;
127
126
  case 'NewsPage':
128
- requestOptions.url = `${args.options.webUrl}/_api/web/getfilebyid('${itemId}')/ListItemAllFields`;
129
- requestOptions.headers = {
130
- 'X-RequestDigest': requestDigest,
131
- 'X-HTTP-Method': 'MERGE',
132
- 'IF-MATCH': '*',
133
- 'content-type': 'application/json;odata=nometadata',
134
- accept: 'application/json;odata=nometadata'
135
- };
136
- requestOptions.data = {
127
+ const listItemSetOptions = {
128
+ webUrl: args.options.webUrl,
129
+ listUrl: listServerRelativeUrl,
130
+ id: listItemId,
131
+ systemUpdate: true,
137
132
  PromotedState: 2,
138
- FirstPublishedDate: new Date().toISOString().replace('Z', '')
133
+ FirstPublishedDate: new Date().toISOString(),
134
+ verbose: this.verbose,
135
+ debug: this.debug
139
136
  };
137
+ yield Cli_1.Cli.executeCommand(spoListItemSetCommand, { options: Object.assign(Object.assign({}, listItemSetOptions), { _: [] }) });
140
138
  break;
141
139
  case 'Template':
142
- requestOptions.url = `${args.options.webUrl}/_api/web/getfilebyid('${itemId}')/ListItemAllFields`;
140
+ requestOptions.url = `${args.options.webUrl}/_api/SitePages/Pages(${listItemId})/SavePageAsTemplate`;
143
141
  requestOptions.headers = {
144
- 'X-RequestDigest': requestDigest,
145
- 'content-type': 'application/json;odata=nometadata',
146
- accept: 'application/json;odata=nometadata'
147
- };
148
- break;
149
- }
150
- const res = yield request_1.default.post(requestOptions);
151
- if (args.options.promoteAs === 'Template') {
152
- let requestOptions = {
153
- responseType: 'json',
154
- url: `${args.options.webUrl}/_api/SitePages/Pages(${res.Id})/SavePageAsTemplate`,
155
- headers: {
156
142
  'X-RequestDigest': requestDigest,
157
143
  'content-type': 'application/json;odata=nometadata',
158
144
  'X-HTTP-Method': 'POST',
159
145
  'IF-MATCH': '*',
160
146
  accept: 'application/json;odata=nometadata'
161
- }
162
- };
163
- const tmpl = yield request_1.default.post(requestOptions);
164
- bannerImageUrl = tmpl.BannerImageUrl;
165
- canvasContent1 = tmpl.CanvasContent1;
166
- layoutWebpartsContent = tmpl.LayoutWebpartsContent;
167
- pageId = tmpl.Id;
168
- requestOptions = {
169
- url: `${args.options.webUrl}/_api/web/getfilebyid('${tmpl.UniqueId}')/ListItemAllFields/SetCommentsDisabled(${!args.options.commentsEnabled})`,
170
- headers: {
147
+ };
148
+ const tmpl = yield request_1.default.post(requestOptions);
149
+ bannerImageUrl = tmpl.BannerImageUrl;
150
+ canvasContent1 = tmpl.CanvasContent1;
151
+ layoutWebpartsContent = tmpl.LayoutWebpartsContent;
152
+ pageId = tmpl.Id;
153
+ requestOptions.url = `${args.options.webUrl}/_api/web/getfilebyid('${tmpl.UniqueId}')/ListItemAllFields/SetCommentsDisabled(${!args.options.commentsEnabled})`;
154
+ requestOptions.headers = {
171
155
  'X-RequestDigest': requestDigest,
172
156
  'content-type': 'application/json;odata=nometadata',
173
157
  accept: 'application/json;odata=nometadata'
174
- },
175
- responseType: 'json'
176
- };
177
- yield request_1.default.post(requestOptions);
158
+ };
159
+ yield request_1.default.post(requestOptions);
160
+ break;
178
161
  }
179
162
  }
180
163
  requestOptions = {
@@ -263,6 +246,20 @@ class SpoPageAddCommand extends SpoCommand_1.default {
263
246
  }
264
247
  });
265
248
  }
249
+ getFileListItemId(webUrl, serverRelativeFileUrl) {
250
+ return __awaiter(this, void 0, void 0, function* () {
251
+ const fileGetOptions = {
252
+ webUrl: webUrl,
253
+ url: serverRelativeFileUrl,
254
+ asListItem: true,
255
+ verbose: this.verbose,
256
+ debug: this.debug
257
+ };
258
+ const fileGetOutput = yield Cli_1.Cli.executeCommandWithOutput(spoFileGetCommand, { options: Object.assign(Object.assign({}, fileGetOptions), { _: [] }) });
259
+ const fileGetOutputJson = JSON.parse(fileGetOutput.stdout);
260
+ return fileGetOutputJson.Id;
261
+ });
262
+ }
266
263
  }
267
264
  _SpoPageAddCommand_instances = new WeakSet(), _SpoPageAddCommand_initTelemetry = function _SpoPageAddCommand_initTelemetry() {
268
265
  this.telemetry.push((args) => {