@pnp/cli-microsoft365 12.0.0-beta.d654135 → 12.0.0-beta.e3af9f8

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 (241) hide show
  1. package/.devproxy/generate-openapi-spec.json +1 -1
  2. package/allCommands.json +1 -1
  3. package/allCommandsFull.json +1 -1
  4. package/dist/Auth.js +19 -2
  5. package/dist/cli/cli.js +3 -0
  6. package/dist/googleAnalytics.js +96 -0
  7. package/dist/m365/cli/commands/cli-consent.js +9 -2
  8. package/dist/m365/entra/commands/m365group/m365group-add.js +52 -97
  9. package/dist/m365/entra/commands/m365group/m365group-conversation-list.js +20 -33
  10. package/dist/m365/entra/commands/m365group/m365group-conversation-post-list.js +20 -39
  11. package/dist/m365/entra/commands/m365group/m365group-get.js +20 -41
  12. package/dist/m365/entra/commands/m365group/m365group-list.js +11 -31
  13. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-clear.js +8 -22
  14. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-list.js +9 -25
  15. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-remove.js +21 -43
  16. package/dist/m365/entra/commands/m365group/m365group-recyclebinitem-restore.js +21 -41
  17. package/dist/m365/entra/commands/m365group/m365group-remove.js +25 -46
  18. package/dist/m365/entra/commands/m365group/m365group-renew.js +19 -32
  19. package/dist/m365/entra/commands/m365group/m365group-set.js +86 -141
  20. package/dist/m365/entra/commands/m365group/m365group-teamify.js +20 -43
  21. package/dist/m365/entra/commands/m365group/m365group-user-add.js +44 -77
  22. package/dist/m365/entra/commands/m365group/m365group-user-list.js +28 -55
  23. package/dist/m365/entra/commands/m365group/m365group-user-remove.js +37 -74
  24. package/dist/m365/entra/commands/m365group/m365group-user-set.js +45 -77
  25. package/dist/m365/spe/commands/container/container-permission-remove.js +94 -0
  26. package/dist/m365/spe/commands.js +1 -0
  27. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +15 -0
  28. package/dist/m365/spfx/commands/project/project-doctor/doctor-1.24.0.js +19 -0
  29. package/dist/m365/spfx/commands/project/project-doctor.js +2 -1
  30. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN012021_TSC_excludeDirectories.js +43 -0
  31. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027002_OVERRIDES_qs.js +33 -0
  32. package/dist/m365/spfx/commands/project/project-upgrade/rules/FN027003_OVERRIDES_uuid.js +33 -0
  33. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.24.0.js +77 -0
  34. package/dist/m365/spfx/commands/project/project-upgrade.js +2 -1
  35. package/dist/m365/spo/commands/app/app-add.js +35 -56
  36. package/dist/m365/spo/commands/app/app-deploy.js +41 -59
  37. package/dist/m365/spo/commands/app/app-get.js +40 -56
  38. package/dist/m365/spo/commands/app/app-install.js +20 -41
  39. package/dist/m365/spo/commands/app/app-instance-list.js +12 -24
  40. package/dist/m365/spo/commands/app/app-list.js +26 -44
  41. package/dist/m365/spo/commands/app/app-remove.js +32 -52
  42. package/dist/m365/spo/commands/app/app-retract.js +32 -51
  43. package/dist/m365/spo/commands/app/app-teamspackage-download.js +35 -54
  44. package/dist/m365/spo/commands/app/app-uninstall.js +21 -44
  45. package/dist/m365/spo/commands/app/app-upgrade.js +20 -41
  46. package/dist/m365/spo/commands/commandset/commandset-add.js +17 -59
  47. package/dist/m365/spo/commands/commandset/commandset-get.js +24 -62
  48. package/dist/m365/spo/commands/commandset/commandset-list.js +11 -34
  49. package/dist/m365/spo/commands/commandset/commandset-remove.js +21 -54
  50. package/dist/m365/spo/commands/commandset/commandset-set.js +30 -83
  51. package/dist/m365/spo/commands/feature/feature-disable.js +20 -50
  52. package/dist/m365/spo/commands/feature/feature-enable.js +22 -50
  53. package/dist/m365/spo/commands/feature/feature-list.js +11 -36
  54. package/dist/m365/spo/commands/field/field-add.js +33 -62
  55. package/dist/m365/spo/commands/field/field-get.js +30 -57
  56. package/dist/m365/spo/commands/field/field-list.js +21 -46
  57. package/dist/m365/spo/commands/field/field-remove.js +32 -63
  58. package/dist/m365/spo/commands/field/field-set.js +34 -66
  59. package/dist/m365/spo/commands/file/file-get.js +4 -3
  60. package/dist/m365/spo/commands/folder/folder-unarchive.js +90 -0
  61. package/dist/m365/spo/commands/hubsite/hubsite-connect.js +38 -63
  62. package/dist/m365/spo/commands/hubsite/hubsite-data-get.js +11 -27
  63. package/dist/m365/spo/commands/hubsite/hubsite-disconnect.js +25 -47
  64. package/dist/m365/spo/commands/hubsite/hubsite-get.js +25 -37
  65. package/dist/m365/spo/commands/hubsite/hubsite-list.js +12 -24
  66. package/dist/m365/spo/commands/hubsite/hubsite-register.js +10 -18
  67. package/dist/m365/spo/commands/hubsite/hubsite-rights-grant.js +14 -32
  68. package/dist/m365/spo/commands/hubsite/hubsite-rights-revoke.js +12 -29
  69. package/dist/m365/spo/commands/hubsite/hubsite-set.js +19 -46
  70. package/dist/m365/spo/commands/hubsite/hubsite-unregister.js +11 -27
  71. package/dist/m365/spo/commands/listitem/listitem-add.js +27 -55
  72. package/dist/m365/spo/commands/listitem/listitem-attachment-add.js +30 -58
  73. package/dist/m365/spo/commands/listitem/listitem-attachment-get.js +27 -52
  74. package/dist/m365/spo/commands/listitem/listitem-attachment-list.js +26 -50
  75. package/dist/m365/spo/commands/listitem/listitem-attachment-remove.js +28 -55
  76. package/dist/m365/spo/commands/listitem/listitem-attachment-set.js +30 -57
  77. package/dist/m365/spo/commands/listitem/listitem-batch-add.js +36 -58
  78. package/dist/m365/spo/commands/listitem/listitem-batch-remove.js +68 -92
  79. package/dist/m365/spo/commands/listitem/listitem-batch-set.js +37 -57
  80. package/dist/m365/spo/commands/listitem/listitem-get.js +45 -79
  81. package/dist/m365/spo/commands/listitem/listitem-isrecord.js +31 -55
  82. package/dist/m365/spo/commands/listitem/listitem-list.js +47 -81
  83. package/dist/m365/spo/commands/listitem/listitem-record-declare.js +37 -60
  84. package/dist/m365/spo/commands/listitem/listitem-record-lock.js +30 -52
  85. package/dist/m365/spo/commands/listitem/listitem-record-undeclare.js +31 -52
  86. package/dist/m365/spo/commands/listitem/listitem-record-unlock.js +30 -52
  87. package/dist/m365/spo/commands/listitem/listitem-remove.js +33 -61
  88. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-ensure.js +46 -67
  89. package/dist/m365/spo/commands/listitem/listitem-retentionlabel-remove.js +33 -56
  90. package/dist/m365/spo/commands/listitem/listitem-roleassignment-add.js +55 -98
  91. package/dist/m365/spo/commands/listitem/listitem-roleassignment-remove.js +48 -74
  92. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-break.js +33 -56
  93. package/dist/m365/spo/commands/listitem/listitem-roleinheritance-reset.js +31 -53
  94. package/dist/m365/spo/commands/listitem/listitem-set.js +33 -58
  95. package/dist/m365/spo/commands/navigation/navigation-node-add.js +74 -120
  96. package/dist/m365/spo/commands/navigation/navigation-node-get.js +4 -13
  97. package/dist/m365/spo/commands/navigation/navigation-node-set.js +53 -114
  98. package/dist/m365/spo/commands/page/page-unpublish.js +53 -0
  99. package/dist/m365/spo/commands/sitescript/sitescript-add.js +22 -37
  100. package/dist/m365/spo/commands/sitescript/sitescript-get.js +9 -26
  101. package/dist/m365/spo/commands/sitescript/sitescript-list.js +5 -0
  102. package/dist/m365/spo/commands/sitescript/sitescript-remove.js +9 -33
  103. package/dist/m365/spo/commands/sitescript/sitescript-set.js +29 -56
  104. package/dist/m365/spo/commands/tenant/tenant-applicationcustomizer-add.js +8 -1
  105. package/dist/m365/spo/commands/tenant/tenant-commandset-add.js +8 -1
  106. package/dist/m365/spo/commands.js +3 -1
  107. package/dist/m365/spp/commands/contentcenter/contentcenter-list.js +5 -0
  108. package/dist/m365/spp/commands/model/model-get.js +25 -45
  109. package/dist/m365/spp/commands/model/model-list.js +12 -23
  110. package/dist/m365/spp/commands/model/model-remove.js +25 -45
  111. package/dist/m365/teams/commands/channel/channel-add.js +46 -57
  112. package/dist/m365/teams/commands/channel/channel-get.js +41 -48
  113. package/dist/m365/teams/commands/channel/channel-list.js +28 -42
  114. package/dist/m365/teams/commands/channel/channel-member-add.js +53 -54
  115. package/dist/m365/teams/commands/channel/channel-member-list.js +47 -55
  116. package/dist/m365/teams/commands/channel/channel-member-remove.js +62 -62
  117. package/dist/m365/teams/commands/channel/channel-member-set.js +61 -65
  118. package/dist/m365/teams/commands/channel/channel-remove.js +47 -49
  119. package/dist/m365/teams/commands/channel/channel-set.js +47 -54
  120. package/dist/m365/teams/commands/chat/chat-get.js +30 -45
  121. package/dist/m365/teams/commands/chat/chat-list.js +22 -42
  122. package/dist/m365/teams/commands/chat/chat-member-add.js +43 -64
  123. package/dist/m365/teams/commands/chat/chat-member-list.js +10 -23
  124. package/dist/m365/teams/commands/chat/chat-member-remove.js +28 -50
  125. package/dist/m365/teams/commands/chat/chat-message-send.js +32 -55
  126. package/dist/m365/teams/commands/meeting/meeting-add.js +57 -68
  127. package/dist/m365/teams/commands/meeting/meeting-attendancereport-get.js +33 -58
  128. package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +14 -38
  129. package/dist/m365/teams/commands/meeting/meeting-get.js +14 -38
  130. package/dist/m365/teams/commands/meeting/meeting-list.js +34 -59
  131. package/dist/m365/teams/commands/meeting/meeting-transcript-get.js +34 -58
  132. package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +29 -50
  133. package/dist/m365/teams/commands/message/message-get.js +19 -30
  134. package/dist/m365/teams/commands/message/message-list.js +26 -43
  135. package/dist/m365/teams/commands/message/message-remove.js +43 -58
  136. package/dist/m365/teams/commands/message/message-reply-list.js +19 -30
  137. package/dist/m365/teams/commands/message/message-restore.js +40 -50
  138. package/dist/m365/teams/commands/message/message-send.js +19 -30
  139. package/dist/m365/teams/commands/report/report-deviceusagedistributionusercounts.js +10 -0
  140. package/dist/m365/teams/commands/report/report-deviceusageusercounts.js +10 -0
  141. package/dist/m365/teams/commands/report/report-deviceusageuserdetail.js +22 -0
  142. package/dist/m365/teams/commands/report/report-directroutingcalls.js +19 -39
  143. package/dist/m365/teams/commands/report/report-pstncalls.js +19 -39
  144. package/dist/m365/teams/commands/report/report-useractivitycounts.js +10 -0
  145. package/dist/m365/teams/commands/report/report-useractivityusercounts.js +10 -0
  146. package/dist/m365/teams/commands/report/report-useractivityuserdetail.js +22 -0
  147. package/dist/m365/teams/commands/tab/tab-add.js +23 -49
  148. package/dist/m365/teams/commands/tab/tab-get.js +55 -56
  149. package/dist/m365/teams/commands/tab/tab-list.js +17 -28
  150. package/dist/m365/teams/commands/tab/tab-remove.js +23 -42
  151. package/dist/m365/teams/commands/team/team-add.js +76 -114
  152. package/dist/m365/teams/commands/team/team-app-list.js +23 -36
  153. package/dist/m365/teams/commands/team/team-archive.js +24 -39
  154. package/dist/m365/teams/commands/team/team-clone.js +28 -62
  155. package/dist/m365/teams/commands/team/team-get.js +23 -36
  156. package/dist/m365/teams/commands/team/team-list.js +43 -57
  157. package/dist/m365/teams/commands/team/team-remove.js +24 -37
  158. package/dist/m365/teams/commands/team/team-set.js +23 -52
  159. package/dist/m365/teams/commands/team/team-unarchive.js +23 -28
  160. package/dist/m365/teams/commands/user/user-app-add.js +40 -49
  161. package/dist/m365/teams/commands/user/user-app-list.js +26 -39
  162. package/dist/m365/teams/commands/user/user-app-remove.js +37 -49
  163. package/dist/m365/teams/commands/user/user-app-upgrade.js +36 -52
  164. package/dist/m365/teams/commands/user/user-list.js +17 -39
  165. package/dist/m365/tenant/commands/report/report-activeusercounts.js +2 -1
  166. package/dist/m365/tenant/commands/report/report-activeuserdetail.js +2 -1
  167. package/dist/m365/tenant/commands/report/report-office365activationcounts.js +9 -0
  168. package/dist/m365/tenant/commands/report/report-office365activationsusercounts.js +9 -0
  169. package/dist/m365/tenant/commands/report/report-office365activationsuserdetail.js +9 -0
  170. package/dist/m365/tenant/commands/report/report-servicesusercounts.js +2 -1
  171. package/dist/m365/tenant/commands/report/report-settings-get.js +5 -0
  172. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-get.js +9 -20
  173. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-health-list.js +8 -20
  174. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-get.js +8 -15
  175. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-healthissue-list.js +8 -15
  176. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-get.js +12 -26
  177. package/dist/m365/tenant/commands/serviceannouncement/serviceannouncement-message-list.js +8 -22
  178. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +10 -28
  179. package/dist/telemetry.js +7 -11
  180. package/dist/utils/spo.js +40 -3
  181. package/dist/utils/urlUtil.js +2 -2
  182. package/dist/utils/zod.js +4 -4
  183. package/docs/docs/cmd/login.mdx +15 -2
  184. package/docs/docs/cmd/spe/container/container-permission-remove.mdx +78 -0
  185. package/docs/docs/cmd/spfx/project/project-upgrade.mdx +1 -1
  186. package/docs/docs/cmd/spo/file/file-archive.mdx +1 -1
  187. package/docs/docs/cmd/spo/file/file-checkin.mdx +2 -2
  188. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -1
  189. package/docs/docs/cmd/spo/file/file-checkout.mdx +2 -2
  190. package/docs/docs/cmd/spo/file/file-copy.mdx +2 -2
  191. package/docs/docs/cmd/spo/file/file-get.mdx +6 -6
  192. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +1 -1
  193. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +1 -1
  194. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  195. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  196. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +3 -3
  197. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +2 -2
  198. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +2 -2
  199. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +22 -1
  200. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +24 -1
  201. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +22 -1
  202. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +22 -1
  203. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +24 -1
  204. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +22 -1
  205. package/docs/docs/cmd/spo/file/file-unarchive.mdx +1 -1
  206. package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
  207. package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
  208. package/docs/docs/cmd/spo/file/file-version-keep.mdx +1 -1
  209. package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
  210. package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
  211. package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
  212. package/docs/docs/cmd/spo/folder/folder-archive.mdx +1 -1
  213. package/docs/docs/cmd/spo/folder/folder-copy.mdx +1 -1
  214. package/docs/docs/cmd/spo/folder/folder-get.mdx +2 -2
  215. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  216. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  217. package/docs/docs/cmd/spo/folder/folder-sharinglink-add.mdx +22 -1
  218. package/docs/docs/cmd/spo/folder/folder-sharinglink-clear.mdx +23 -0
  219. package/docs/docs/cmd/spo/folder/folder-sharinglink-get.mdx +21 -0
  220. package/docs/docs/cmd/spo/folder/folder-sharinglink-list.mdx +22 -1
  221. package/docs/docs/cmd/spo/folder/folder-sharinglink-remove.mdx +24 -1
  222. package/docs/docs/cmd/spo/folder/folder-sharinglink-set.mdx +21 -0
  223. package/docs/docs/cmd/spo/folder/folder-unarchive.mdx +76 -0
  224. package/docs/docs/cmd/spo/listitem/listitem-get.mdx +0 -6
  225. package/docs/docs/cmd/spo/navigation/navigation-node-add.mdx +45 -30
  226. package/docs/docs/cmd/spo/navigation/navigation-node-get.mdx +64 -42
  227. package/docs/docs/cmd/spo/navigation/navigation-node-set.mdx +10 -8
  228. package/docs/docs/cmd/spo/page/page-unpublish.mdx +63 -0
  229. package/docs/docs/cmd/spp/model/model-get.mdx +1 -1
  230. package/docs/docs/cmd/spp/model/model-remove.mdx +1 -1
  231. package/docs/docs/cmd/teams/tab/tab-add.mdx +19 -0
  232. package/docs/docs/cmd/teams/tab/tab-get.mdx +19 -0
  233. package/docs/docs/cmd/teams/tab/tab-list.mdx +19 -0
  234. package/docs/docs/cmd/teams/tab/tab-remove.mdx +21 -0
  235. package/docs/docs/cmd/viva/engage/engage-message-add.mdx +17 -0
  236. package/docs/docs/cmd/viva/engage/engage-message-get.mdx +17 -0
  237. package/docs/docs/cmd/viva/engage/engage-message-list.mdx +17 -0
  238. package/docs/docs/cmd/viva/engage/engage-message-remove.mdx +19 -0
  239. package/npm-shrinkwrap.json +324 -3116
  240. package/package.json +18 -35
  241. package/dist/appInsights.js +0 -43
@@ -1,17 +1,34 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppAddCommand_instances, _SpoAppAddCommand_initTelemetry, _SpoAppAddCommand_initOptions, _SpoAppAddCommand_initValidators;
7
1
  import fs from 'fs';
8
2
  import path from 'path';
3
+ import { z } from 'zod';
9
4
  import { cli } from '../../../../cli/cli.js';
5
+ import { globalOptionsZod } from '../../../../Command.js';
10
6
  import request from '../../../../request.js';
11
7
  import { spo } from '../../../../utils/spo.js';
12
8
  import { validation } from '../../../../utils/validation.js';
9
+ import { zod } from '../../../../utils/zod.js';
13
10
  import commands from '../../commands.js';
14
11
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
12
+ export const options = z.strictObject({
13
+ ...globalOptionsZod.shape,
14
+ filePath: z.string()
15
+ .refine(filePath => fs.existsSync(path.resolve(filePath)), {
16
+ error: e => `File '${path.resolve(e.input)}' not found`,
17
+ abort: true
18
+ })
19
+ .refine(filePath => !fs.lstatSync(path.resolve(filePath)).isDirectory(), {
20
+ error: e => `Path '${path.resolve(e.input)}' points to a directory`
21
+ })
22
+ .alias('p'),
23
+ overwrite: z.boolean().optional(),
24
+ appCatalogScope: zod.coercedEnum({ tenant: 'tenant', sitecollection: 'sitecollection' }).optional().alias('s'),
25
+ appCatalogUrl: z.string()
26
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
27
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
28
+ })
29
+ .optional()
30
+ .alias('u')
31
+ });
15
32
  class SpoAppAddCommand extends SpoAppBaseCommand {
16
33
  get name() {
17
34
  return commands.APP_ADD;
@@ -19,13 +36,18 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
19
36
  get description() {
20
37
  return 'Adds an app to the specified SharePoint Online app catalog';
21
38
  }
22
- constructor() {
23
- super();
24
- _SpoAppAddCommand_instances.add(this);
25
- this.appCatalogScopeOptions = ['tenant', 'sitecollection'];
26
- __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initTelemetry).call(this);
27
- __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initOptions).call(this);
28
- __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initValidators).call(this);
39
+ get schema() {
40
+ return options;
41
+ }
42
+ getRefinedSchema(schema) {
43
+ return schema
44
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
45
+ error: 'You must specify appCatalogUrl when appCatalogScope is sitecollection',
46
+ path: ['appCatalogUrl'],
47
+ params: {
48
+ customCode: 'required'
49
+ }
50
+ });
29
51
  }
30
52
  async commandAction(logger, args) {
31
53
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -60,48 +82,5 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
60
82
  }
61
83
  }
62
84
  }
63
- _SpoAppAddCommand_instances = new WeakSet(), _SpoAppAddCommand_initTelemetry = function _SpoAppAddCommand_initTelemetry() {
64
- this.telemetry.push((args) => {
65
- Object.assign(this.telemetryProperties, {
66
- overwrite: !!args.options.overwrite,
67
- appCatalogScope: args.options.appCatalogScope || 'tenant',
68
- appCatalogUrl: typeof args.options.appCatalogUrl !== 'undefined'
69
- });
70
- });
71
- }, _SpoAppAddCommand_initOptions = function _SpoAppAddCommand_initOptions() {
72
- this.options.unshift({
73
- option: '-p, --filePath <filePath>'
74
- }, {
75
- option: '-s, --appCatalogScope [appCatalogScope]',
76
- autocomplete: this.appCatalogScopeOptions
77
- }, {
78
- option: '-u, --appCatalogUrl [appCatalogUrl]'
79
- }, {
80
- option: '--overwrite [overwrite]'
81
- });
82
- }, _SpoAppAddCommand_initValidators = function _SpoAppAddCommand_initValidators() {
83
- this.validators.push(async (args) => {
84
- if (args.options.appCatalogScope) {
85
- const appCatalogScope = args.options.appCatalogScope.toLowerCase();
86
- if (this.appCatalogScopeOptions.indexOf(appCatalogScope) === -1) {
87
- return `${args.options.appCatalogScope} is not a valid appCatalogScope. Allowed values are: ${this.appCatalogScopeOptions.join(', ')}`;
88
- }
89
- if (appCatalogScope === 'sitecollection' && !args.options.appCatalogUrl) {
90
- return `You must specify appCatalogUrl when appCatalogScope is sitecollection`;
91
- }
92
- }
93
- const fullPath = path.resolve(args.options.filePath);
94
- if (!fs.existsSync(fullPath)) {
95
- return `File '${fullPath}' not found`;
96
- }
97
- if (fs.lstatSync(fullPath).isDirectory()) {
98
- return `Path '${fullPath}' points to a directory`;
99
- }
100
- if (args.options.appCatalogUrl) {
101
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
102
- }
103
- return true;
104
- });
105
- };
106
85
  export default new SpoAppAddCommand();
107
86
  //# sourceMappingURL=app-add.js.map
@@ -1,14 +1,30 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppDeployCommand_instances, _SpoAppDeployCommand_initTelemetry, _SpoAppDeployCommand_initOptions, _SpoAppDeployCommand_initValidators, _SpoAppDeployCommand_initOptionSets;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
4
  import { spo } from '../../../../utils/spo.js';
9
5
  import { validation } from '../../../../utils/validation.js';
6
+ import { zod } from '../../../../utils/zod.js';
10
7
  import commands from '../../commands.js';
11
8
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
9
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
10
+ export const options = z.strictObject({
11
+ ...globalOptionsZod.shape,
12
+ id: z.string()
13
+ .refine(id => validation.isValidGuid(id), {
14
+ error: e => `${e.input} is not a valid GUID`
15
+ })
16
+ .optional()
17
+ .alias('i'),
18
+ name: z.string().optional().alias('n'),
19
+ appCatalogUrl: z.string()
20
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
21
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
22
+ })
23
+ .optional()
24
+ .alias('u'),
25
+ skipFeatureDeployment: z.boolean().optional(),
26
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s')
27
+ });
12
28
  class SpoAppDeployCommand extends SpoAppBaseCommand {
13
29
  get name() {
14
30
  return commands.APP_DEPLOY;
@@ -16,13 +32,25 @@ class SpoAppDeployCommand extends SpoAppBaseCommand {
16
32
  get description() {
17
33
  return 'Deploys the specified app in the specified app catalog';
18
34
  }
19
- constructor() {
20
- super();
21
- _SpoAppDeployCommand_instances.add(this);
22
- __classPrivateFieldGet(this, _SpoAppDeployCommand_instances, "m", _SpoAppDeployCommand_initTelemetry).call(this);
23
- __classPrivateFieldGet(this, _SpoAppDeployCommand_instances, "m", _SpoAppDeployCommand_initOptions).call(this);
24
- __classPrivateFieldGet(this, _SpoAppDeployCommand_instances, "m", _SpoAppDeployCommand_initValidators).call(this);
25
- __classPrivateFieldGet(this, _SpoAppDeployCommand_instances, "m", _SpoAppDeployCommand_initOptionSets).call(this);
35
+ get schema() {
36
+ return options;
37
+ }
38
+ getRefinedSchema(schema) {
39
+ return schema
40
+ .refine(opts => [opts.id, opts.name].filter(x => x !== undefined).length === 1, {
41
+ error: `Specify either 'id' or 'name', but not both.`,
42
+ params: {
43
+ customCode: 'optionSet',
44
+ options: ['id', 'name']
45
+ }
46
+ })
47
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
48
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
49
+ path: ['appCatalogUrl'],
50
+ params: {
51
+ customCode: 'required'
52
+ }
53
+ });
26
54
  }
27
55
  async commandAction(logger, args) {
28
56
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -69,51 +97,5 @@ class SpoAppDeployCommand extends SpoAppBaseCommand {
69
97
  }
70
98
  }
71
99
  }
72
- _SpoAppDeployCommand_instances = new WeakSet(), _SpoAppDeployCommand_initTelemetry = function _SpoAppDeployCommand_initTelemetry() {
73
- this.telemetry.push((args) => {
74
- Object.assign(this.telemetryProperties, {
75
- id: (!(!args.options.id)).toString(),
76
- name: (!(!args.options.name)).toString(),
77
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
78
- skipFeatureDeployment: args.options.skipFeatureDeployment || false,
79
- appCatalogScope: (!(!args.options.appCatalogScope)).toString()
80
- });
81
- });
82
- }, _SpoAppDeployCommand_initOptions = function _SpoAppDeployCommand_initOptions() {
83
- this.options.unshift({
84
- option: '-i, --id [id]'
85
- }, {
86
- option: '-n, --name [name]'
87
- }, {
88
- option: '-u, --appCatalogUrl [appCatalogUrl]'
89
- }, {
90
- option: '--skipFeatureDeployment'
91
- }, {
92
- option: '-s, --appCatalogScope [appCatalogScope]',
93
- autocomplete: ['tenant', 'sitecollection']
94
- });
95
- }, _SpoAppDeployCommand_initValidators = function _SpoAppDeployCommand_initValidators() {
96
- this.validators.push(async (args) => {
97
- // verify either 'tenant' or 'sitecollection' specified if scope provided
98
- if (args.options.appCatalogScope) {
99
- const testScope = args.options.appCatalogScope.toLowerCase();
100
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
101
- return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
102
- }
103
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
104
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
105
- }
106
- }
107
- if (args.options.id && !validation.isValidGuid(args.options.id)) {
108
- return `${args.options.id} is not a valid GUID`;
109
- }
110
- if (args.options.appCatalogUrl) {
111
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
112
- }
113
- return true;
114
- });
115
- }, _SpoAppDeployCommand_initOptionSets = function _SpoAppDeployCommand_initOptionSets() {
116
- this.optionSets.push({ options: ['id', 'name'] });
117
- };
118
100
  export default new SpoAppDeployCommand();
119
101
  //# sourceMappingURL=app-deploy.js.map
@@ -1,15 +1,30 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppGetCommand_instances, _SpoAppGetCommand_initTelemetry, _SpoAppGetCommand_initOptions, _SpoAppGetCommand_initValidators, _SpoAppGetCommand_initOptionSets;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
4
  import { formatting } from '../../../../utils/formatting.js';
9
5
  import { spo } from '../../../../utils/spo.js';
10
6
  import { validation } from '../../../../utils/validation.js';
7
+ import { zod } from '../../../../utils/zod.js';
11
8
  import commands from '../../commands.js';
12
9
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
10
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
11
+ export const options = z.strictObject({
12
+ ...globalOptionsZod.shape,
13
+ id: z.string()
14
+ .refine(id => validation.isValidGuid(id), {
15
+ error: e => `${e.input} is not a valid GUID`
16
+ })
17
+ .optional()
18
+ .alias('i'),
19
+ name: z.string().optional().alias('n'),
20
+ appCatalogUrl: z.string()
21
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
22
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
23
+ })
24
+ .optional()
25
+ .alias('u'),
26
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s')
27
+ });
13
28
  class SpoAppGetCommand extends SpoAppBaseCommand {
14
29
  get name() {
15
30
  return commands.APP_GET;
@@ -17,13 +32,25 @@ class SpoAppGetCommand extends SpoAppBaseCommand {
17
32
  get description() {
18
33
  return 'Gets information about the specific app from the specified app catalog';
19
34
  }
20
- constructor() {
21
- super();
22
- _SpoAppGetCommand_instances.add(this);
23
- __classPrivateFieldGet(this, _SpoAppGetCommand_instances, "m", _SpoAppGetCommand_initTelemetry).call(this);
24
- __classPrivateFieldGet(this, _SpoAppGetCommand_instances, "m", _SpoAppGetCommand_initOptions).call(this);
25
- __classPrivateFieldGet(this, _SpoAppGetCommand_instances, "m", _SpoAppGetCommand_initValidators).call(this);
26
- __classPrivateFieldGet(this, _SpoAppGetCommand_instances, "m", _SpoAppGetCommand_initOptionSets).call(this);
35
+ get schema() {
36
+ return options;
37
+ }
38
+ getRefinedSchema(schema) {
39
+ return schema
40
+ .refine(opts => [opts.id, opts.name].filter(x => x !== undefined).length === 1, {
41
+ error: `Specify either 'id' or 'name', but not both.`,
42
+ params: {
43
+ customCode: 'optionSet',
44
+ options: ['id', 'name']
45
+ }
46
+ })
47
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
48
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
49
+ path: ['appCatalogUrl'],
50
+ params: {
51
+ customCode: 'required'
52
+ }
53
+ });
27
54
  }
28
55
  async commandAction(logger, args) {
29
56
  try {
@@ -66,48 +93,5 @@ class SpoAppGetCommand extends SpoAppBaseCommand {
66
93
  }
67
94
  }
68
95
  }
69
- _SpoAppGetCommand_instances = new WeakSet(), _SpoAppGetCommand_initTelemetry = function _SpoAppGetCommand_initTelemetry() {
70
- this.telemetry.push((args) => {
71
- Object.assign(this.telemetryProperties, {
72
- id: (!(!args.options.id)).toString(),
73
- name: (!(!args.options.name)).toString(),
74
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
75
- appCatalogScope: args.options.appCatalogScope || 'tenant'
76
- });
77
- });
78
- }, _SpoAppGetCommand_initOptions = function _SpoAppGetCommand_initOptions() {
79
- this.options.unshift({
80
- option: '-i, --id [id]'
81
- }, {
82
- option: '-n, --name [name]'
83
- }, {
84
- option: '-u, --appCatalogUrl [appCatalogUrl]'
85
- }, {
86
- option: '-s, --appCatalogScope [appCatalogScope]',
87
- autocomplete: ['tenant', 'sitecollection']
88
- });
89
- }, _SpoAppGetCommand_initValidators = function _SpoAppGetCommand_initValidators() {
90
- this.validators.push(async (args) => {
91
- // verify either 'tenant' or 'sitecollection' specified if scope provided
92
- if (args.options.appCatalogScope) {
93
- const testScope = args.options.appCatalogScope.toLowerCase();
94
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
95
- return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
96
- }
97
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
98
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
99
- }
100
- }
101
- if (args.options.id && !validation.isValidGuid(args.options.id)) {
102
- return `${args.options.id} is not a valid GUID`;
103
- }
104
- if (args.options.appCatalogUrl) {
105
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
106
- }
107
- return true;
108
- });
109
- }, _SpoAppGetCommand_initOptionSets = function _SpoAppGetCommand_initOptionSets() {
110
- this.optionSets.push({ options: ['id', 'name'] });
111
- };
112
96
  export default new SpoAppGetCommand();
113
97
  //# sourceMappingURL=app-get.js.map
@@ -1,14 +1,26 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppInstallCommand_instances, _SpoAppInstallCommand_initTelemetry, _SpoAppInstallCommand_initOptions, _SpoAppInstallCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import request from '../../../../request.js';
8
4
  import { formatting } from '../../../../utils/formatting.js';
9
5
  import { validation } from '../../../../utils/validation.js';
6
+ import { zod } from '../../../../utils/zod.js';
10
7
  import SpoCommand from '../../../base/SpoCommand.js';
11
8
  import commands from '../../commands.js';
9
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
10
+ export const options = z.strictObject({
11
+ ...globalOptionsZod.shape,
12
+ id: z.string()
13
+ .refine(id => validation.isValidGuid(id), {
14
+ error: e => `${e.input} is not a valid GUID`
15
+ })
16
+ .alias('i'),
17
+ siteUrl: z.string()
18
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
19
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
20
+ })
21
+ .alias('s'),
22
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional()
23
+ });
12
24
  class SpoAppInstallCommand extends SpoCommand {
13
25
  get name() {
14
26
  return commands.APP_INSTALL;
@@ -16,12 +28,8 @@ class SpoAppInstallCommand extends SpoCommand {
16
28
  get description() {
17
29
  return 'Installs an app from the specified app catalog in the site';
18
30
  }
19
- constructor() {
20
- super();
21
- _SpoAppInstallCommand_instances.add(this);
22
- __classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initTelemetry).call(this);
23
- __classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initOptions).call(this);
24
- __classPrivateFieldGet(this, _SpoAppInstallCommand_instances, "m", _SpoAppInstallCommand_initValidators).call(this);
31
+ get schema() {
32
+ return options;
25
33
  }
26
34
  async commandAction(logger, args) {
27
35
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -42,34 +50,5 @@ class SpoAppInstallCommand extends SpoCommand {
42
50
  }
43
51
  }
44
52
  }
45
- _SpoAppInstallCommand_instances = new WeakSet(), _SpoAppInstallCommand_initTelemetry = function _SpoAppInstallCommand_initTelemetry() {
46
- this.telemetry.push((args) => {
47
- Object.assign(this.telemetryProperties, {
48
- appCatalogScope: args.options.appCatalogScope || 'tenant'
49
- });
50
- });
51
- }, _SpoAppInstallCommand_initOptions = function _SpoAppInstallCommand_initOptions() {
52
- this.options.unshift({
53
- option: '-i, --id <id>'
54
- }, {
55
- option: '-s, --siteUrl <siteUrl>'
56
- }, {
57
- option: '--appCatalogScope [appCatalogScope]',
58
- autocomplete: ['tenant', 'sitecollection']
59
- });
60
- }, _SpoAppInstallCommand_initValidators = function _SpoAppInstallCommand_initValidators() {
61
- this.validators.push(async (args) => {
62
- if (args.options.appCatalogScope) {
63
- const testScope = args.options.appCatalogScope.toLowerCase();
64
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
65
- return `appCatalogScope must be either 'tenant' or 'sitecollection' if specified`;
66
- }
67
- }
68
- if (!validation.isValidGuid(args.options.id)) {
69
- return `${args.options.id} is not a valid GUID`;
70
- }
71
- return validation.isValidSharePointUrl(args.options.siteUrl);
72
- });
73
- };
74
53
  export default new SpoAppInstallCommand();
75
54
  //# sourceMappingURL=app-install.js.map
@@ -1,13 +1,17 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppInStanceListCommand_instances, _SpoAppInStanceListCommand_initOptions, _SpoAppInStanceListCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import { odata } from '../../../../utils/odata.js';
8
4
  import { validation } from '../../../../utils/validation.js';
9
5
  import commands from '../../commands.js';
10
6
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
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
+ })
13
+ .alias('u')
14
+ });
11
15
  class SpoAppInStanceListCommand extends SpoAppBaseCommand {
12
16
  get name() {
13
17
  return commands.APP_INSTANCE_LIST;
@@ -18,11 +22,8 @@ class SpoAppInStanceListCommand extends SpoAppBaseCommand {
18
22
  defaultProperties() {
19
23
  return [`Title`, `AppId`];
20
24
  }
21
- constructor() {
22
- super();
23
- _SpoAppInStanceListCommand_instances.add(this);
24
- __classPrivateFieldGet(this, _SpoAppInStanceListCommand_instances, "m", _SpoAppInStanceListCommand_initOptions).call(this);
25
- __classPrivateFieldGet(this, _SpoAppInStanceListCommand_instances, "m", _SpoAppInStanceListCommand_initValidators).call(this);
25
+ get schema() {
26
+ return options;
26
27
  }
27
28
  async commandAction(logger, args) {
28
29
  if (this.verbose) {
@@ -37,18 +38,5 @@ class SpoAppInStanceListCommand extends SpoAppBaseCommand {
37
38
  }
38
39
  }
39
40
  }
40
- _SpoAppInStanceListCommand_instances = new WeakSet(), _SpoAppInStanceListCommand_initOptions = function _SpoAppInStanceListCommand_initOptions() {
41
- this.options.unshift({
42
- option: '-u, --siteUrl <siteUrl>'
43
- });
44
- }, _SpoAppInStanceListCommand_initValidators = function _SpoAppInStanceListCommand_initValidators() {
45
- this.validators.push(async (args) => {
46
- const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.siteUrl);
47
- if (isValidSharePointUrl !== true) {
48
- return isValidSharePointUrl;
49
- }
50
- return true;
51
- });
52
- };
53
41
  export default new SpoAppInStanceListCommand();
54
42
  //# sourceMappingURL=app-instance-list.js.map
@@ -1,14 +1,22 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
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
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var _SpoAppListCommand_instances, _SpoAppListCommand_initTelemetry, _SpoAppListCommand_initOptions, _SpoAppListCommand_initValidators;
1
+ import { z } from 'zod';
2
+ import { globalOptionsZod } from '../../../../Command.js';
7
3
  import { odata } from '../../../../utils/odata.js';
8
4
  import { spo } from '../../../../utils/spo.js';
9
5
  import { validation } from '../../../../utils/validation.js';
6
+ import { zod } from '../../../../utils/zod.js';
10
7
  import commands from '../../commands.js';
11
8
  import { SpoAppBaseCommand } from './SpoAppBaseCommand.js';
9
+ const appCatalogScopeOptions = { tenant: 'tenant', sitecollection: 'sitecollection' };
10
+ export const options = z.strictObject({
11
+ ...globalOptionsZod.shape,
12
+ appCatalogScope: zod.coercedEnum(appCatalogScopeOptions).optional().alias('s'),
13
+ appCatalogUrl: z.string()
14
+ .refine(url => validation.isValidSharePointUrl(url) === true, {
15
+ error: e => `'${e.input}' is not a valid SharePoint Online site URL.`
16
+ })
17
+ .optional()
18
+ .alias('u')
19
+ });
12
20
  class SpoAppListCommand extends SpoAppBaseCommand {
13
21
  get name() {
14
22
  return commands.APP_LIST;
@@ -19,12 +27,18 @@ class SpoAppListCommand extends SpoAppBaseCommand {
19
27
  defaultProperties() {
20
28
  return [`Title`, `ID`, `Deployed`, `AppCatalogVersion`];
21
29
  }
22
- constructor() {
23
- super();
24
- _SpoAppListCommand_instances.add(this);
25
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initTelemetry).call(this);
26
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initOptions).call(this);
27
- __classPrivateFieldGet(this, _SpoAppListCommand_instances, "m", _SpoAppListCommand_initValidators).call(this);
30
+ get schema() {
31
+ return options;
32
+ }
33
+ getRefinedSchema(schema) {
34
+ return schema
35
+ .refine(opts => opts.appCatalogScope !== 'sitecollection' || opts.appCatalogUrl !== undefined, {
36
+ error: 'You must specify appCatalogUrl when the appCatalogScope is sitecollection',
37
+ path: ['appCatalogUrl'],
38
+ params: {
39
+ customCode: 'required'
40
+ }
41
+ });
28
42
  }
29
43
  async commandAction(logger, args) {
30
44
  const scope = (args.options.appCatalogScope) ? args.options.appCatalogScope.toLowerCase() : 'tenant';
@@ -42,37 +56,5 @@ class SpoAppListCommand extends SpoAppBaseCommand {
42
56
  }
43
57
  }
44
58
  }
45
- _SpoAppListCommand_instances = new WeakSet(), _SpoAppListCommand_initTelemetry = function _SpoAppListCommand_initTelemetry() {
46
- this.telemetry.push((args) => {
47
- Object.assign(this.telemetryProperties, {
48
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString(),
49
- appCatalogScope: args.options.appCatalogScope || 'tenant'
50
- });
51
- });
52
- }, _SpoAppListCommand_initOptions = function _SpoAppListCommand_initOptions() {
53
- this.options.unshift({
54
- option: '-s, --appCatalogScope [appCatalogScope]',
55
- autocomplete: ['tenant', 'sitecollection']
56
- }, {
57
- option: '-u, --appCatalogUrl [appCatalogUrl]'
58
- });
59
- }, _SpoAppListCommand_initValidators = function _SpoAppListCommand_initValidators() {
60
- this.validators.push(async (args) => {
61
- // verify either 'tenant' or 'sitecollection' specified if scope provided
62
- if (args.options.appCatalogScope) {
63
- const testScope = args.options.appCatalogScope.toLowerCase();
64
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
65
- return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
66
- }
67
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
68
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
69
- }
70
- if (args.options.appCatalogUrl) {
71
- return validation.isValidSharePointUrl(args.options.appCatalogUrl);
72
- }
73
- }
74
- return true;
75
- });
76
- };
77
59
  export default new SpoAppListCommand();
78
60
  //# sourceMappingURL=app-list.js.map