@pnp/cli-microsoft365 11.4.0-beta.13d597c → 11.4.0-beta.37c2235

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 (133) hide show
  1. package/.devproxy/api-specs/sharepoint.yaml +43 -0
  2. package/README.md +1 -1
  3. package/allCommands.json +1 -1
  4. package/allCommandsFull.json +1 -1
  5. package/dist/Auth.js +1 -1
  6. package/dist/AuthServer.js +2 -4
  7. package/dist/Command.js +2 -2
  8. package/dist/cli/cli.js +9 -9
  9. package/dist/m365/adaptivecard/commands/adaptivecard-send.js +10 -11
  10. package/dist/m365/app/commands/app-open.js +3 -4
  11. package/dist/m365/app/commands/permission/permission-add.js +4 -5
  12. package/dist/m365/base/AppCommand.js +3 -3
  13. package/dist/m365/booking/commands/business/business-get.js +6 -8
  14. package/dist/m365/booking/commands/business/business-list.js +2 -1
  15. package/dist/m365/cli/commands/app/app-add.js +5 -7
  16. package/dist/m365/commands/docs.js +1 -1
  17. package/dist/m365/commands/login.js +22 -19
  18. package/dist/m365/commands/logout.js +1 -1
  19. package/dist/m365/commands/status.js +2 -1
  20. package/dist/m365/connection/commands/connection-list.js +2 -1
  21. package/dist/m365/connection/commands/connection-set.js +15 -29
  22. package/dist/m365/context/commands/context-remove.js +4 -6
  23. package/dist/m365/context/commands/option/option-remove.js +5 -7
  24. package/dist/m365/entra/commands/administrativeunit/administrativeunit-add.js +5 -7
  25. package/dist/m365/entra/commands/administrativeunit/administrativeunit-get.js +7 -9
  26. package/dist/m365/entra/commands/administrativeunit/administrativeunit-list.js +4 -5
  27. package/dist/m365/entra/commands/administrativeunit/administrativeunit-remove.js +8 -10
  28. package/dist/m365/entra/commands/license/license-list.js +1 -1
  29. package/dist/m365/entra/commands/m365group/m365group-remove.js +1 -1
  30. package/dist/m365/entra/commands/multitenant/multitenant-add.js +3 -4
  31. package/dist/m365/entra/commands/organization/organization-list.js +4 -6
  32. package/dist/m365/entra/commands/organization/organization-set.js +24 -26
  33. package/dist/m365/entra/commands/roleassignment/roleassignment-add.js +21 -34
  34. package/dist/m365/entra/commands/roledefinition/roledefinition-add.js +8 -10
  35. package/dist/m365/entra/commands/roledefinition/roledefinition-get.js +11 -13
  36. package/dist/m365/entra/commands/roledefinition/roledefinition-list.js +5 -7
  37. package/dist/m365/entra/commands/roledefinition/roledefinition-remove.js +11 -13
  38. package/dist/m365/entra/commands/roledefinition/roledefinition-set.js +15 -17
  39. package/dist/m365/entra/commands/rolepermission/rolepermission-list.js +5 -7
  40. package/dist/m365/entra/commands/user/user-session-revoke.js +9 -13
  41. package/dist/m365/exo/commands/approleassignment/approleassignment-add.js +29 -31
  42. package/dist/m365/flow/commands/environment/environment-get.js +5 -7
  43. package/dist/m365/flow/commands/environment/environment-list.js +2 -1
  44. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-list.js +4 -6
  45. package/dist/m365/flow/commands/recyclebinitem/recyclebinitem-restore.js +5 -11
  46. package/dist/m365/graph/commands/directoryextension/directoryextension-add.js +11 -13
  47. package/dist/m365/graph/commands/directoryextension/directoryextension-get.js +10 -19
  48. package/dist/m365/graph/commands/directoryextension/directoryextension-list.js +6 -12
  49. package/dist/m365/graph/commands/directoryextension/directoryextension-remove.js +11 -20
  50. package/dist/m365/graph/commands/openextension/openextension-add.js +12 -13
  51. package/dist/m365/graph/commands/openextension/openextension-get.js +12 -14
  52. package/dist/m365/graph/commands/openextension/openextension-list.js +11 -13
  53. package/dist/m365/graph/commands/openextension/openextension-remove.js +13 -15
  54. package/dist/m365/graph/commands/openextension/openextension-set.js +16 -17
  55. package/dist/m365/onedrive/commands/onedrive-list.js +2 -1
  56. package/dist/m365/outlook/commands/mail/mail-searchfolder-add.js +9 -14
  57. package/dist/m365/outlook/commands/mailbox/mailbox-settings-get.js +8 -12
  58. package/dist/m365/outlook/commands/mailbox/mailbox-settings-set.js +15 -15
  59. package/dist/m365/outlook/commands/roomlist/roomlist-list.js +2 -1
  60. package/dist/m365/pa/commands/environment/environment-get.js +5 -7
  61. package/dist/m365/pa/commands/environment/environment-list.js +2 -1
  62. package/dist/m365/planner/commands/tenant/tenant-settings-list.js +1 -1
  63. package/dist/m365/pp/commands/environment/environment-get.js +5 -7
  64. package/dist/m365/pp/commands/environment/environment-list.js +3 -4
  65. package/dist/m365/pp/commands/gateway/gateway-list.js +1 -1
  66. package/dist/m365/pp/commands/tenant/tenant-settings-list.js +1 -1
  67. package/dist/m365/pp/commands/website/website-get.js +12 -12
  68. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +2 -1
  69. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +1 -1
  70. package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +1 -1
  71. package/dist/m365/spe/commands/container/container-add.js +10 -15
  72. package/dist/m365/spe/commands/container/container-permission-list.js +4 -6
  73. package/dist/m365/spe/commands/container/container-recyclebinitem-list.js +5 -10
  74. package/dist/m365/spe/commands/container/container-recyclebinitem-remove.js +96 -0
  75. package/dist/m365/spe/commands/container/container-recyclebinitem-restore.js +7 -12
  76. package/dist/m365/spe/commands/container/container-remove.js +10 -16
  77. package/dist/m365/spe/commands/containertype/containertype-add.js +15 -20
  78. package/dist/m365/spe/commands/containertype/containertype-get.js +6 -13
  79. package/dist/m365/spe/commands/containertype/containertype-remove.js +7 -14
  80. package/dist/m365/spe/commands.js +1 -0
  81. package/dist/m365/spfx/commands/project/project-upgrade.js +4 -6
  82. package/dist/m365/spo/commands/file/file-add.js +49 -11
  83. package/dist/m365/spo/commands/file/file-version-keep.js +10 -14
  84. package/dist/m365/spo/commands/homesite/homesite-add.js +13 -15
  85. package/dist/m365/spo/commands/homesite/homesite-get.js +8 -9
  86. package/dist/m365/spo/commands/homesite/homesite-remove.js +9 -10
  87. package/dist/m365/spo/commands/homesite/homesite-set.js +13 -14
  88. package/dist/m365/spo/commands/list/DefaultColumnValue.js +2 -0
  89. package/dist/m365/spo/commands/list/list-defaultvalue-clear.js +13 -17
  90. package/dist/m365/spo/commands/list/list-defaultvalue-get.js +124 -0
  91. package/dist/m365/spo/commands/list/list-defaultvalue-list.js +13 -37
  92. package/dist/m365/spo/commands/list/list-defaultvalue-remove.js +12 -16
  93. package/dist/m365/spo/commands/list/list-defaultvalue-set.js +11 -15
  94. package/dist/m365/spo/commands/list/list-view-add.js +16 -20
  95. package/dist/m365/spo/commands/listitem/listitem-set.js +1 -1
  96. package/dist/m365/spo/commands/page/page-control-remove.js +11 -15
  97. package/dist/m365/spo/commands/page/page-get.js +10 -11
  98. package/dist/m365/spo/commands/page/page-header-set.js +97 -89
  99. package/dist/m365/spo/commands/page/page-publish.js +9 -10
  100. package/dist/m365/spo/commands/page/page-section-remove.js +11 -12
  101. package/dist/m365/spo/commands/page/page-set.js +26 -26
  102. package/dist/m365/spo/commands/site/site-appcatalog-list.js +4 -6
  103. package/dist/m365/spo/commands/site/site-get.js +6 -8
  104. package/dist/m365/spo/commands/site/site-sharingpermission-set.js +7 -9
  105. package/dist/m365/spo/commands/site/site-versionpolicy-get.js +11 -13
  106. package/dist/m365/spo/commands/web/web-alert-list.js +20 -27
  107. package/dist/m365/spo/commands/web/web-alert-remove.js +15 -20
  108. package/dist/m365/spo/commands.js +1 -0
  109. package/dist/m365/spp/commands/model/model-apply.js +18 -24
  110. package/dist/m365/teams/commands/callrecord/callrecord-list.js +5 -9
  111. package/dist/m365/teams/commands/chat/chat-message-list.js +26 -27
  112. package/dist/m365/teams/commands/chat/chat-message-send.js +12 -3
  113. package/dist/m365/teams/commands/chat/chatUtil.js +1 -1
  114. package/dist/m365/tenant/commands/people/people-pronouns-set.js +4 -6
  115. package/dist/m365/tenant/commands/report/report-settings-set.js +4 -6
  116. package/dist/m365/viva/commands/engage/engage-community-user-add.js +17 -22
  117. package/dist/m365/viva/commands/engage/engage-community-user-list.js +8 -14
  118. package/dist/m365/viva/commands/engage/engage-community-user-remove.js +14 -22
  119. package/dist/m365/viva/commands/engage/engage-role-member-list.js +6 -11
  120. package/dist/utils/spo.js +30 -2
  121. package/dist/utils/zod.js +41 -76
  122. package/docs/docs/cmd/entra/app/app-permission-add.mdx +19 -0
  123. package/docs/docs/cmd/entra/app/app-permission-list.mdx +19 -0
  124. package/docs/docs/cmd/entra/app/app-permission-remove.mdx +21 -0
  125. package/docs/docs/cmd/spe/container/container-recyclebinitem-remove.mdx +79 -0
  126. package/docs/docs/cmd/spo/file/file-add.mdx +140 -1
  127. package/docs/docs/cmd/spo/list/list-defaultvalue-get.mdx +118 -0
  128. package/docs/docs/cmd/spo/page/page-header-set.mdx +28 -8
  129. package/docs/docs/cmd/spo/page/page-set.mdx +35 -5
  130. package/docs/docs/cmd/teams/chat/chat-message-list.mdx +34 -7
  131. package/docs/docs/cmd/teams/chat/chat-message-send.mdx +23 -1
  132. package/npm-shrinkwrap.json +274 -248
  133. package/package.json +12 -11
@@ -3,7 +3,8 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
3
3
  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");
4
4
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
5
  };
6
- var _SpoPageHeaderSetCommand_instances, _SpoPageHeaderSetCommand_initTelemetry, _SpoPageHeaderSetCommand_initOptions, _SpoPageHeaderSetCommand_initValidators;
6
+ var _SpoPageHeaderSetCommand_instances, _SpoPageHeaderSetCommand_initTelemetry, _SpoPageHeaderSetCommand_initOptions, _SpoPageHeaderSetCommand_initValidators, _SpoPageHeaderSetCommand_initTypes;
7
+ import { CommandError } from '../../../../Command.js';
7
8
  import request from '../../../../request.js';
8
9
  import { formatting } from '../../../../utils/formatting.js';
9
10
  import { spo } from '../../../../utils/spo.js';
@@ -25,98 +26,102 @@ class SpoPageHeaderSetCommand extends SpoCommand {
25
26
  __classPrivateFieldGet(this, _SpoPageHeaderSetCommand_instances, "m", _SpoPageHeaderSetCommand_initTelemetry).call(this);
26
27
  __classPrivateFieldGet(this, _SpoPageHeaderSetCommand_instances, "m", _SpoPageHeaderSetCommand_initOptions).call(this);
27
28
  __classPrivateFieldGet(this, _SpoPageHeaderSetCommand_instances, "m", _SpoPageHeaderSetCommand_initValidators).call(this);
29
+ __classPrivateFieldGet(this, _SpoPageHeaderSetCommand_instances, "m", _SpoPageHeaderSetCommand_initTypes).call(this);
28
30
  }
29
31
  getExcludedOptionsWithUrls() {
30
32
  return ['imageUrl'];
31
33
  }
32
34
  async commandAction(logger, args) {
33
35
  const noPageHeader = {
34
- "id": BannerWebPartId,
35
- "instanceId": BannerWebPartId,
36
- "title": "Title Region",
37
- "description": "Title Region Description",
38
- "serverProcessedContent": {
39
- "htmlStrings": {},
40
- "searchablePlainTexts": {},
41
- "imageSources": {},
42
- "links": {}
36
+ id: BannerWebPartId,
37
+ instanceId: BannerWebPartId,
38
+ title: 'Title Region',
39
+ description: 'Title Region Description',
40
+ serverProcessedContent: {
41
+ htmlStrings: {},
42
+ searchablePlainTexts: {},
43
+ imageSources: {},
44
+ links: {}
43
45
  },
44
- "dataVersion": "1.4",
45
- "properties": {
46
- "title": "",
47
- "imageSourceType": 4,
48
- "layoutType": "NoImage",
49
- "textAlignment": "Left",
50
- "showTopicHeader": false,
51
- "showPublishDate": false,
52
- "topicHeader": ""
46
+ dataVersion: '1.4',
47
+ properties: {
48
+ title: '',
49
+ imageSourceType: 4,
50
+ layoutType: 'NoImage',
51
+ textAlignment: 'Left',
52
+ showTopicHeader: false,
53
+ showPublishDate: false,
54
+ showTimeToRead: false,
55
+ topicHeader: ''
53
56
  }
54
57
  };
55
58
  const defaultPageHeader = {
56
- "id": BannerWebPartId,
57
- "instanceId": BannerWebPartId,
58
- "title": "Title Region",
59
- "description": "Title Region Description",
60
- "serverProcessedContent": {
61
- "htmlStrings": {},
62
- "searchablePlainTexts": {},
63
- "imageSources": {},
64
- "links": {}
59
+ id: BannerWebPartId,
60
+ instanceId: BannerWebPartId,
61
+ title: 'Title Region',
62
+ description: 'Title Region Description',
63
+ serverProcessedContent: {
64
+ htmlStrings: {},
65
+ searchablePlainTexts: {},
66
+ imageSources: {},
67
+ links: {}
65
68
  },
66
- "dataVersion": "1.4",
67
- "properties": {
68
- "title": "",
69
- "imageSourceType": 4,
70
- "layoutType": "FullWidthImage",
71
- "textAlignment": "Left",
72
- "showTopicHeader": false,
73
- "showPublishDate": false,
74
- "topicHeader": ""
69
+ dataVersion: '1.4',
70
+ properties: {
71
+ title: '',
72
+ imageSourceType: 4,
73
+ layoutType: 'FullWidthImage',
74
+ textAlignment: 'Left',
75
+ showTopicHeader: false,
76
+ showPublishDate: false,
77
+ showTimeToRead: false,
78
+ topicHeader: ''
75
79
  }
76
80
  };
77
81
  const customPageHeader = {
78
- "id": BannerWebPartId,
79
- "instanceId": BannerWebPartId,
80
- "title": "Title Region",
81
- "description": "Title Region Description",
82
- "serverProcessedContent": {
83
- "htmlStrings": {},
84
- "searchablePlainTexts": {},
85
- "imageSources": {
86
- "imageSource": ""
82
+ id: BannerWebPartId,
83
+ instanceId: BannerWebPartId,
84
+ title: 'Title Region',
85
+ description: 'Title Region Description',
86
+ serverProcessedContent: {
87
+ htmlStrings: {},
88
+ searchablePlainTexts: {},
89
+ imageSources: {
90
+ imageSource: ''
87
91
  },
88
- "links": {},
89
- "customMetadata": {
90
- "imageSource": {
91
- "siteId": "",
92
- "webId": "",
93
- "listId": "",
94
- "uniqueId": ""
92
+ links: {},
93
+ customMetadata: {
94
+ imageSource: {
95
+ siteId: '',
96
+ webId: '',
97
+ listId: '',
98
+ uniqueId: ''
95
99
  }
96
100
  }
97
101
  },
98
- "dataVersion": "1.4",
99
- "properties": {
100
- "title": "",
101
- "imageSourceType": 2,
102
- "layoutType": "FullWidthImage",
103
- "textAlignment": "Left",
104
- "showTopicHeader": false,
105
- "showPublishDate": false,
106
- "topicHeader": "",
107
- "authors": [],
108
- "altText": "",
109
- "webId": "",
110
- "siteId": "",
111
- "listId": "",
112
- "uniqueId": "",
113
- "translateX": 0,
114
- "translateY": 0
102
+ dataVersion: '1.4',
103
+ properties: {
104
+ title: '',
105
+ imageSourceType: 2,
106
+ layoutType: 'FullWidthImage',
107
+ textAlignment: 'Left',
108
+ showTopicHeader: false,
109
+ showPublishDate: false,
110
+ showTimeToRead: false,
111
+ topicHeader: '',
112
+ authors: [],
113
+ altText: '',
114
+ webId: '',
115
+ siteId: '',
116
+ listId: '',
117
+ uniqueId: '',
118
+ translateX: 0,
119
+ translateY: 0
115
120
  }
116
121
  };
117
122
  let header = defaultPageHeader;
118
123
  let pageFullName = args.options.pageName.toLowerCase();
119
- if (pageFullName.indexOf('.aspx') < 0) {
124
+ if (!pageFullName.endsWith('.aspx')) {
120
125
  pageFullName += '.aspx';
121
126
  }
122
127
  let canvasContent = "";
@@ -132,7 +137,7 @@ class SpoPageHeaderSetCommand extends SpoCommand {
132
137
  let requestOptions = {
133
138
  url: `${args.options.webUrl}/_api/sitepages/pages/GetByUrl('sitepages/${formatting.encodeQueryParameter(pageFullName)}')?$select=IsPageCheckedOutToCurrentUser,Title`,
134
139
  headers: {
135
- 'accept': 'application/json;odata=nometadata'
140
+ accept: 'application/json;odata=nometadata'
136
141
  },
137
142
  responseType: 'json'
138
143
  };
@@ -143,7 +148,7 @@ class SpoPageHeaderSetCommand extends SpoCommand {
143
148
  const requestOptions = {
144
149
  url: `${args.options.webUrl}/_api/sitepages/pages/GetByUrl('sitepages/${formatting.encodeQueryParameter(pageFullName)}')?$expand=ListItemAllFields`,
145
150
  headers: {
146
- 'accept': 'application/json;odata=nometadata'
151
+ accept: 'application/json;odata=nometadata'
147
152
  },
148
153
  responseType: 'json'
149
154
  };
@@ -186,6 +191,7 @@ class SpoPageHeaderSetCommand extends SpoCommand {
186
191
  header.properties.showTopicHeader = args.options.showTopicHeader || false;
187
192
  header.properties.topicHeader = args.options.topicHeader || '';
188
193
  header.properties.showPublishDate = args.options.showPublishDate || false;
194
+ header.properties.showTimeToRead = args.options.showTimeToRead || false;
189
195
  if (args.options.type !== 'None') {
190
196
  header.properties.layoutType = args.options.layout || 'FullWidthImage';
191
197
  }
@@ -298,6 +304,9 @@ class SpoPageHeaderSetCommand extends SpoCommand {
298
304
  return request.post(requestOptions);
299
305
  }
300
306
  catch (err) {
307
+ if (err.status === 404) {
308
+ throw new CommandError(`The specified page '${pageFullName}' does not exist.`);
309
+ }
301
310
  this.handleRejectedODataJsonPromise(err);
302
311
  }
303
312
  }
@@ -323,8 +332,9 @@ _SpoPageHeaderSetCommand_instances = new WeakSet(), _SpoPageHeaderSetCommand_ini
323
332
  imageUrl: typeof args.options.imageUrl !== 'undefined',
324
333
  topicHeader: typeof args.options.topicHeader !== 'undefined',
325
334
  layout: args.options.layout,
326
- showTopicHeader: args.options.showTopicHeader,
327
- showPublishDate: args.options.showPublishDate,
335
+ showTopicHeader: !!args.options.showTopicHeader,
336
+ showPublishDate: !!args.options.showPublishDate,
337
+ showTimeToRead: !!args.options.showTimeToRead,
328
338
  textAlignment: args.options.textAlignment,
329
339
  translateX: typeof args.options.translateX !== 'undefined',
330
340
  translateY: typeof args.options.translateY !== 'undefined',
@@ -354,9 +364,14 @@ _SpoPageHeaderSetCommand_instances = new WeakSet(), _SpoPageHeaderSetCommand_ini
354
364
  option: '--textAlignment [textAlignment]',
355
365
  autocomplete: ['Left', 'Center']
356
366
  }, {
357
- option: '--showTopicHeader'
367
+ option: '--showTopicHeader [showTopicHeader]',
368
+ autocomplete: ['true', 'false']
369
+ }, {
370
+ option: '--showPublishDate [showPublishDate]',
371
+ autocomplete: ['true', 'false']
358
372
  }, {
359
- option: '--showPublishDate'
373
+ option: '--showTimeToRead [showTimeToRead]',
374
+ autocomplete: ['true', 'false']
360
375
  }, {
361
376
  option: '--topicHeader [topicHeader]'
362
377
  }, {
@@ -364,10 +379,7 @@ _SpoPageHeaderSetCommand_instances = new WeakSet(), _SpoPageHeaderSetCommand_ini
364
379
  });
365
380
  }, _SpoPageHeaderSetCommand_initValidators = function _SpoPageHeaderSetCommand_initValidators() {
366
381
  this.validators.push(async (args) => {
367
- if (args.options.type &&
368
- args.options.type !== 'None' &&
369
- args.options.type !== 'Default' &&
370
- args.options.type !== 'Custom') {
382
+ if (args.options.type && !['None', 'Default', 'Custom'].includes(args.options.type)) {
371
383
  return `${args.options.type} is not a valid type value. Allowed values None|Default|Custom`;
372
384
  }
373
385
  if (args.options.translateX && isNaN(args.options.translateX)) {
@@ -376,20 +388,16 @@ _SpoPageHeaderSetCommand_instances = new WeakSet(), _SpoPageHeaderSetCommand_ini
376
388
  if (args.options.translateY && isNaN(args.options.translateY)) {
377
389
  return `${args.options.translateY} is not a valid number`;
378
390
  }
379
- if (args.options.layout &&
380
- args.options.layout !== 'FullWidthImage' &&
381
- args.options.layout !== 'NoImage' &&
382
- args.options.layout !== 'ColorBlock' &&
383
- args.options.layout !== 'CutInShape') {
391
+ if (args.options.layout && !['FullWidthImage', 'NoImage', 'ColorBlock', 'CutInShape'].includes(args.options.layout)) {
384
392
  return `${args.options.layout} is not a valid layout value. Allowed values FullWidthImage|NoImage|ColorBlock|CutInShape`;
385
393
  }
386
- if (args.options.textAlignment &&
387
- args.options.textAlignment !== 'Left' &&
388
- args.options.textAlignment !== 'Center') {
394
+ if (args.options.textAlignment && !['Left', 'Center'].includes(args.options.textAlignment)) {
389
395
  return `${args.options.textAlignment} is not a valid textAlignment value. Allowed values Left|Center`;
390
396
  }
391
397
  return validation.isValidSharePointUrl(args.options.webUrl);
392
398
  });
399
+ }, _SpoPageHeaderSetCommand_initTypes = function _SpoPageHeaderSetCommand_initTypes() {
400
+ this.types.boolean.push('showTimeToRead', 'showPublishDate', 'showTopicHeader');
393
401
  };
394
402
  export default new SpoPageHeaderSetCommand();
395
403
  //# sourceMappingURL=page-header-set.js.map
@@ -1,20 +1,19 @@
1
1
  import { z } from 'zod';
2
- import { zod } from '../../../../utils/zod.js';
3
2
  import { globalOptionsZod } from '../../../../Command.js';
4
3
  import { urlUtil } from '../../../../utils/urlUtil.js';
5
4
  import { validation } from '../../../../utils/validation.js';
6
5
  import SpoCommand from '../../../base/SpoCommand.js';
7
6
  import commands from '../../commands.js';
8
7
  import { Page } from './Page.js';
9
- const options = globalOptionsZod
10
- .extend({
11
- webUrl: zod.alias('u', z.string()
12
- .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
13
- message: `'${url}' is not a valid SharePoint Online site URL.`
14
- }))),
15
- name: zod.alias('n', z.string())
16
- })
17
- .strict();
8
+ export const options = z.strictObject({
9
+ ...globalOptionsZod.shape,
10
+ webUrl: z.string()
11
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
12
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
13
+ })
14
+ .alias('u'),
15
+ name: z.string().alias('n')
16
+ });
18
17
  class SpoPagePublishCommand extends SpoCommand {
19
18
  get name() {
20
19
  return commands.PAGE_PUBLISH;
@@ -8,18 +8,17 @@ import commands from '../../commands.js';
8
8
  import { Page } from './Page.js';
9
9
  import { z } from 'zod';
10
10
  import { globalOptionsZod } from '../../../../Command.js';
11
- import { zod } from '../../../../utils/zod.js';
12
- const options = globalOptionsZod
13
- .extend({
14
- webUrl: zod.alias('u', z.string()
15
- .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
16
- message: `'${url}' is not a valid SharePoint Online site URL.`
17
- }))),
18
- pageName: zod.alias('n', z.string()),
19
- section: zod.alias('s', z.number()),
20
- force: zod.alias('f', z.boolean().optional())
21
- })
22
- .strict();
11
+ export const options = z.strictObject({
12
+ ...globalOptionsZod.shape,
13
+ webUrl: z.string()
14
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
15
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
16
+ })
17
+ .alias('u'),
18
+ pageName: z.string().alias('n'),
19
+ section: z.number().alias('s'),
20
+ force: z.boolean().optional().alias('f')
21
+ });
23
22
  class SpoPageSectionRemoveCommand extends SpoCommand {
24
23
  get name() {
25
24
  return commands.PAGE_SECTION_REMOVE;
@@ -48,24 +48,20 @@ class SpoPageSetCommand extends SpoCommand {
48
48
  const serverRelativeFileUrl = `${listServerRelativeUrl}/${pageName}`;
49
49
  const listUrl = urlUtil.getServerRelativePath(args.options.webUrl, listServerRelativeUrl);
50
50
  const requestUrl = `${args.options.webUrl}/_api/web/GetList('${formatting.encodeQueryParameter(listUrl)}')`;
51
- const needsToSavePage = !!args.options.title || !!args.options.description;
51
+ const needsToSavePage = !!args.options.title || !!args.options.description || !!args.options.content;
52
52
  try {
53
53
  const requestDigestResult = await spo.getRequestDigest(args.options.webUrl);
54
54
  const requestDigest = requestDigestResult.FormDigestValue;
55
55
  const page = await Page.checkout(args.options.name, args.options.webUrl, logger, this.verbose);
56
- if (page) {
57
- pageTitle = pageTitle || page.Title;
58
- pageId = page.Id;
59
- bannerImageUrl = page.BannerImageUrl;
60
- canvasContent1 = args.options.content || page.CanvasContent1;
61
- layoutWebpartsContent = page.LayoutWebpartsContent;
62
- pageDescription = pageDescription || page.Description;
63
- topicHeader = page.TopicHeader;
64
- authorByline = page.AuthorByline;
65
- }
56
+ pageTitle = pageTitle || page.Title;
57
+ pageId = page.Id;
58
+ bannerImageUrl = page.BannerImageUrl;
59
+ canvasContent1 = args.options.content || page.CanvasContent1;
60
+ layoutWebpartsContent = page.LayoutWebpartsContent;
61
+ pageDescription = pageDescription || page.Description;
62
+ topicHeader = page.TopicHeader;
63
+ authorByline = page.AuthorByline;
66
64
  if (args.options.layoutType) {
67
- const file = await spo.getFileAsListItemByUrl(args.options.webUrl, serverRelativeFileUrl, logger, this.verbose);
68
- const itemId = file.Id;
69
65
  const listItemSetOptions = {
70
66
  PageLayoutType: args.options.layoutType
71
67
  };
@@ -73,7 +69,7 @@ class SpoPageSetCommand extends SpoCommand {
73
69
  listItemSetOptions.PromotedState = 0;
74
70
  listItemSetOptions.BannerImageUrl = `${resource}/_layouts/15/images/sitepagethumbnail.png, /_layouts/15/images/sitepagethumbnail.png`;
75
71
  }
76
- await spo.systemUpdateListItem(requestUrl, itemId, logger, this.verbose, listItemSetOptions);
72
+ await spo.systemUpdateListItem(requestUrl, pageId, logger, this.verbose, listItemSetOptions);
77
73
  }
78
74
  if (args.options.promoteAs) {
79
75
  const requestOptions = {
@@ -95,18 +91,14 @@ class SpoPageSetCommand extends SpoCommand {
95
91
  await request.post(requestOptions);
96
92
  break;
97
93
  case 'NewsPage': {
98
- const newsPageItem = await spo.getFileAsListItemByUrl(args.options.webUrl, serverRelativeFileUrl, logger, this.verbose);
99
- const newsPageItemId = newsPageItem.Id;
100
94
  const listItemSetOptions = {
101
95
  PromotedState: 2,
102
96
  FirstPublishedDate: new Date().toISOString()
103
97
  };
104
- await spo.systemUpdateListItem(requestUrl, newsPageItemId, logger, this.verbose, listItemSetOptions);
98
+ await spo.systemUpdateListItem(requestUrl, pageId, logger, this.verbose, listItemSetOptions);
105
99
  break;
106
100
  }
107
101
  case 'Template': {
108
- const templateItem = await spo.getFileAsListItemByUrl(args.options.webUrl, serverRelativeFileUrl, logger, this.verbose);
109
- const templateItemId = templateItem.Id;
110
102
  requestOptions.headers = {
111
103
  'X-RequestDigest': requestDigest,
112
104
  'content-type': 'application/json;odata=nometadata',
@@ -114,7 +106,7 @@ class SpoPageSetCommand extends SpoCommand {
114
106
  'IF-MATCH': '*',
115
107
  accept: 'application/json;odata=nometadata'
116
108
  };
117
- requestOptions.url = `${args.options.webUrl}/_api/SitePages/Pages(${templateItemId})/SavePageAsTemplate`;
109
+ requestOptions.url = `${args.options.webUrl}/_api/SitePages/Pages(${pageId})/SavePageAsTemplate`;
118
110
  const res = await request.post(requestOptions);
119
111
  if (fileNameWithoutExtension) {
120
112
  pageData.Title = fileNameWithoutExtension;
@@ -202,12 +194,15 @@ class SpoPageSetCommand extends SpoCommand {
202
194
  await request.post(requestOptions);
203
195
  }
204
196
  if (args.options.demoteFrom === 'NewsPage') {
205
- const file = await spo.getFileAsListItemByUrl(args.options.webUrl, serverRelativeFileUrl, logger, this.verbose);
206
- const fileId = file.Id;
207
197
  const listItemSetOptions = {
208
198
  PromotedState: 0
209
199
  };
210
- await spo.systemUpdateListItem(requestUrl, fileId, logger, this.verbose, listItemSetOptions);
200
+ await spo.systemUpdateListItem(requestUrl, pageId, logger, this.verbose, listItemSetOptions);
201
+ }
202
+ if (args.options.isRetired !== undefined) {
203
+ await spo.systemUpdateListItem(requestUrl, pageId, logger, this.verbose, {
204
+ _SPIsRetired: args.options.isRetired
205
+ });
211
206
  }
212
207
  let requestOptions;
213
208
  if (!args.options.publish) {
@@ -253,7 +248,8 @@ _SpoPageSetCommand_instances = new WeakSet(), _SpoPageSetCommand_initTelemetry =
253
248
  publishMessage: typeof args.options.publishMessage !== 'undefined',
254
249
  description: typeof args.options.description !== 'undefined',
255
250
  title: typeof args.options.title !== 'undefined',
256
- content: typeof args.options.content !== 'undefined'
251
+ content: typeof args.options.content !== 'undefined',
252
+ isRetired: typeof args.options.isRetired !== 'undefined'
257
253
  });
258
254
  });
259
255
  }, _SpoPageSetCommand_initOptions = function _SpoPageSetCommand_initOptions() {
@@ -283,16 +279,20 @@ _SpoPageSetCommand_instances = new WeakSet(), _SpoPageSetCommand_initTelemetry =
283
279
  option: '--title [title]'
284
280
  }, {
285
281
  option: '--content [content]'
282
+ }, {
283
+ option: '--isRetired [isRetired]',
284
+ autocomplete: ['true', 'false']
286
285
  });
287
286
  }, _SpoPageSetCommand_initTypes = function _SpoPageSetCommand_initTypes() {
288
- this.types.boolean.push('commentsEnabled');
287
+ this.types.boolean.push('commentsEnabled', 'isRetired');
289
288
  }, _SpoPageSetCommand_initValidators = function _SpoPageSetCommand_initValidators() {
290
289
  this.validators.push(async (args) => {
291
290
  const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.webUrl);
292
291
  if (isValidSharePointUrl !== true) {
293
292
  return isValidSharePointUrl;
294
293
  }
295
- if (!args.options.layoutType && !args.options.promoteAs && !args.options.demoteFrom && args.options.commentsEnabled === undefined && !args.options.publish && !args.options.description && !args.options.title && !args.options.content) {
294
+ if (!args.options.layoutType && !args.options.promoteAs && !args.options.demoteFrom && args.options.commentsEnabled === undefined &&
295
+ !args.options.publish && !args.options.description && !args.options.title && !args.options.content && args.options.isRetired === undefined) {
296
296
  return 'Specify at least one option to update.';
297
297
  }
298
298
  if (args.options.layoutType &&
@@ -1,15 +1,13 @@
1
1
  import { z } from 'zod';
2
2
  import { globalOptionsZod } from '../../../../Command.js';
3
- import { zod } from '../../../../utils/zod.js';
4
3
  import { odata } from '../../../../utils/odata.js';
5
4
  import { spo } from '../../../../utils/spo.js';
6
5
  import SpoCommand from '../../../base/SpoCommand.js';
7
6
  import commands from '../../commands.js';
8
- const options = globalOptionsZod
9
- .extend({
10
- excludeDeletedSites: zod.alias('excludeDeletedSites', z.boolean().optional())
11
- })
12
- .strict();
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ excludeDeletedSites: z.boolean().optional()
10
+ });
13
11
  class SpoSiteAppCatalogListCommand extends SpoCommand {
14
12
  get name() {
15
13
  return commands.SITE_APPCATALOG_LIST;
@@ -2,16 +2,14 @@ import { z } from 'zod';
2
2
  import { globalOptionsZod } from '../../../../Command.js';
3
3
  import request from '../../../../request.js';
4
4
  import { validation } from '../../../../utils/validation.js';
5
- import { zod } from '../../../../utils/zod.js';
6
5
  import SpoCommand from '../../../base/SpoCommand.js';
7
6
  import commands from '../../commands.js';
8
- const options = globalOptionsZod
9
- .extend({
10
- url: zod.alias('u', z.string().refine(url => validation.isValidSharePointUrl(url) === true, {
11
- message: 'Specify a valid SharePoint site URL'
12
- }))
13
- })
14
- .strict();
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ url: z.string().refine(url => validation.isValidSharePointUrl(url) === true, {
10
+ error: 'Specify a valid SharePoint site URL'
11
+ }).alias('u')
12
+ });
15
13
  class SpoSiteGetCommand extends SpoCommand {
16
14
  get name() {
17
15
  return commands.SITE_GET;
@@ -1,19 +1,17 @@
1
1
  import SpoCommand from '../../../base/SpoCommand.js';
2
2
  import { globalOptionsZod } from '../../../../Command.js';
3
3
  import { z } from 'zod';
4
- import { zod } from '../../../../utils/zod.js';
5
4
  import commands from '../../commands.js';
6
5
  import { validation } from '../../../../utils/validation.js';
7
6
  import request from '../../../../request.js';
8
- const options = globalOptionsZod
9
- .extend({
10
- siteUrl: zod.alias('u', z.string()
11
- .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
12
- message: `'${url}' is not a valid SharePoint Online site URL.`
13
- }))),
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ siteUrl: z.string()
10
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
11
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
12
+ }).alias('u'),
14
13
  capability: z.enum(['full', 'limited', 'ownersOnly'])
15
- })
16
- .strict();
14
+ });
17
15
  class SpoSiteSharingPermissionSetCommand extends SpoCommand {
18
16
  get name() {
19
17
  return commands.SITE_SHARINGPERMISSION_SET;
@@ -1,18 +1,16 @@
1
- import commands from '../../commands.js';
2
- import SpoCommand from '../../../base/SpoCommand.js';
3
- import { globalOptionsZod } from '../../../../Command.js';
4
1
  import { z } from 'zod';
5
- import { zod } from '../../../../utils/zod.js';
6
- import { validation } from '../../../../utils/validation.js';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
- export const options = globalOptionsZod
9
- .extend({
10
- siteUrl: zod.alias('u', z.string()
11
- .refine(url => validation.isValidSharePointUrl(url) === true, url => ({
12
- message: `'${url}' is not a valid SharePoint Online site URL.`
13
- })))
14
- })
15
- .strict();
4
+ import { validation } from '../../../../utils/validation.js';
5
+ import SpoCommand from '../../../base/SpoCommand.js';
6
+ import commands from '../../commands.js';
7
+ export const options = z.strictObject({
8
+ ...globalOptionsZod.shape,
9
+ siteUrl: z.string().alias('u')
10
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
11
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
12
+ })
13
+ });
16
14
  class SpoSiteVersionpolicyGetCommand extends SpoCommand {
17
15
  get name() {
18
16
  return commands.SITE_VERSIONPOLICY_GET;