@pnp/cli-microsoft365 7.0.0-beta.4ebf3ad → 7.0.0-beta.5fdb9e3

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 (196) hide show
  1. package/.eslintrc.cjs +1 -1
  2. package/dist/Auth.js +2 -1
  3. package/dist/Command.js +1 -1
  4. package/dist/cli/Cli.js +19 -2
  5. package/dist/m365/aad/commands/{o365group/o365group-add.js → m365group/m365group-add.js} +17 -17
  6. package/dist/m365/aad/commands/{o365group/o365group-conversation-list.js → m365group/m365group-conversation-list.js} +10 -10
  7. package/dist/m365/aad/commands/{o365group/o365group-conversation-post-list.js → m365group/m365group-conversation-post-list.js} +14 -14
  8. package/dist/m365/aad/commands/{o365group/o365group-get.js → m365group/m365group-get.js} +13 -10
  9. package/dist/m365/aad/commands/{o365group/o365group-list.js → m365group/m365group-list.js} +13 -28
  10. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-clear.js → m365group/m365group-recyclebinitem-clear.js} +15 -15
  11. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-list.js → m365group/m365group-recyclebinitem-list.js} +10 -10
  12. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-remove.js → m365group/m365group-recyclebinitem-remove.js} +14 -14
  13. package/dist/m365/aad/commands/{o365group/o365group-recyclebinitem-restore.js → m365group/m365group-recyclebinitem-restore.js} +14 -14
  14. package/dist/m365/aad/commands/{o365group/o365group-remove.js → m365group/m365group-remove.js} +12 -12
  15. package/dist/m365/aad/commands/{o365group/o365group-renew.js → m365group/m365group-renew.js} +10 -10
  16. package/dist/m365/aad/commands/{o365group/o365group-report-activitycounts.js → m365group/m365group-report-activitycounts.js} +4 -4
  17. package/dist/m365/aad/commands/{o365group/o365group-report-activitydetail.js → m365group/m365group-report-activitydetail.js} +4 -4
  18. package/dist/m365/aad/commands/{o365group/o365group-report-activityfilecounts.js → m365group/m365group-report-activityfilecounts.js} +4 -4
  19. package/dist/m365/aad/commands/{o365group/o365group-report-activitygroupcounts.js → m365group/m365group-report-activitygroupcounts.js} +4 -4
  20. package/dist/m365/aad/commands/{o365group/o365group-report-activitystorage.js → m365group/m365group-report-activitystorage.js} +4 -4
  21. package/dist/m365/aad/commands/{o365group/o365group-set.js → m365group/m365group-set.js} +17 -17
  22. package/dist/m365/aad/commands/{o365group/o365group-teamify.js → m365group/m365group-teamify.js} +14 -14
  23. package/dist/m365/aad/commands/{o365group/o365group-user-add.js → m365group/m365group-user-add.js} +14 -14
  24. package/dist/m365/aad/commands/{o365group/o365group-user-list.js → m365group/m365group-user-list.js} +12 -12
  25. package/dist/m365/aad/commands/{o365group/o365group-user-remove.js → m365group/m365group-user-remove.js} +14 -14
  26. package/dist/m365/aad/commands/{o365group/o365group-user-set.js → m365group/m365group-user-set.js} +15 -15
  27. package/dist/m365/aad/commands.js +22 -22
  28. package/dist/m365/cli/commands/config/config-list.js +16 -0
  29. package/dist/m365/cli/commands.js +1 -0
  30. package/dist/m365/pa/commands/app/app-permission-ensure.js +162 -0
  31. package/dist/m365/pa/commands/app/app-permission-list.js +2 -2
  32. package/dist/m365/pa/commands/app/app-permission-remove.js +153 -0
  33. package/dist/m365/pa/commands.js +2 -0
  34. package/dist/m365/planner/commands/bucket/bucket-add.js +2 -2
  35. package/dist/m365/planner/commands/bucket/bucket-get.js +2 -2
  36. package/dist/m365/planner/commands/bucket/bucket-list.js +2 -2
  37. package/dist/m365/planner/commands/bucket/bucket-remove.js +2 -2
  38. package/dist/m365/planner/commands/bucket/bucket-set.js +2 -2
  39. package/dist/m365/planner/commands/plan/plan-get.js +1 -2
  40. package/dist/m365/planner/commands/plan/plan-list.js +4 -5
  41. package/dist/m365/planner/commands/plan/plan-set.js +2 -2
  42. package/dist/m365/spfx/commands/project/project-doctor/{doctor-1.18.0-beta.1.js → doctor-1.18.0-beta.5.js} +1 -1
  43. package/dist/m365/spfx/commands/project/project-doctor.js +1 -1
  44. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +2 -2
  45. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
  46. package/dist/m365/spfx/commands/project/project-upgrade/{upgrade-1.18.0-beta.1.js → upgrade-1.18.0-beta.5.js} +26 -26
  47. package/dist/m365/spfx/commands/project/project-upgrade.js +1 -1
  48. package/dist/m365/spfx/commands/spfx-doctor.js +76 -106
  49. package/dist/m365/spo/commands/app/SpoAppBaseCommand.js +27 -26
  50. package/dist/m365/spo/commands/app/app-add.js +9 -9
  51. package/dist/m365/spo/commands/file/file-add.js +13 -13
  52. package/dist/m365/spo/commands/file/file-checkin.js +1 -1
  53. package/dist/m365/spo/commands/file/file-checkout.js +1 -1
  54. package/dist/m365/spo/commands/file/file-copy.js +36 -4
  55. package/dist/m365/spo/commands/file/file-list.js +4 -4
  56. package/dist/m365/spo/commands/file/file-move.js +74 -98
  57. package/dist/m365/spo/commands/file/file-remove.js +6 -6
  58. package/dist/m365/spo/commands/file/file-rename.js +2 -2
  59. package/dist/m365/spo/commands/file/file-retentionlabel-ensure.js +1 -1
  60. package/dist/m365/spo/commands/file/file-retentionlabel-remove.js +1 -1
  61. package/dist/m365/spo/commands/file/file-roleassignment-add.js +1 -1
  62. package/dist/m365/spo/commands/file/file-roleassignment-remove.js +1 -1
  63. package/dist/m365/spo/commands/file/file-roleinheritance-break.js +1 -1
  64. package/dist/m365/spo/commands/file/file-roleinheritance-reset.js +1 -1
  65. package/dist/m365/spo/commands/file/file-version-clear.js +1 -1
  66. package/dist/m365/spo/commands/file/file-version-get.js +1 -1
  67. package/dist/m365/spo/commands/file/file-version-list.js +1 -1
  68. package/dist/m365/spo/commands/file/file-version-remove.js +1 -1
  69. package/dist/m365/spo/commands/file/file-version-restore.js +1 -1
  70. package/dist/m365/spo/commands/folder/folder-add.js +2 -4
  71. package/dist/m365/spo/commands/folder/folder-copy.js +89 -45
  72. package/dist/m365/spo/commands/folder/folder-get.js +1 -1
  73. package/dist/m365/spo/commands/folder/folder-list.js +2 -2
  74. package/dist/m365/spo/commands/folder/folder-move.js +89 -47
  75. package/dist/m365/spo/commands/folder/folder-remove.js +7 -4
  76. package/dist/m365/spo/commands/folder/folder-rename.js +13 -17
  77. package/dist/m365/spo/commands/folder/folder-retentionlabel-ensure.js +1 -1
  78. package/dist/m365/spo/commands/folder/folder-retentionlabel-remove.js +1 -1
  79. package/dist/m365/spo/commands/folder/folder-roleassignment-add.js +1 -1
  80. package/dist/m365/spo/commands/folder/folder-roleassignment-remove.js +1 -1
  81. package/dist/m365/spo/commands/folder/folder-roleinheritance-break.js +1 -1
  82. package/dist/m365/spo/commands/folder/folder-roleinheritance-reset.js +1 -1
  83. package/dist/m365/spo/commands/group/group-list.js +0 -1
  84. package/dist/m365/spo/commands/navigation/navigation-node-set.js +2 -2
  85. package/dist/m365/spo/commands/orgassetslibrary/orgassetslibrary-add.js +32 -3
  86. package/dist/m365/spo/commands/propertybag/propertybag-base.js +63 -59
  87. package/dist/m365/spo/commands/propertybag/propertybag-remove.js +28 -31
  88. package/dist/m365/spo/commands/site/FlowsPolicy.js +7 -0
  89. package/dist/m365/spo/commands/site/site-ensure.js +3 -3
  90. package/dist/m365/spo/commands/site/site-hubsite-disconnect.js +22 -22
  91. package/dist/m365/spo/commands/site/site-list.js +29 -39
  92. package/dist/m365/spo/commands/site/site-set.js +60 -49
  93. package/dist/m365/spo/commands/theme/theme-list.js +1 -9
  94. package/dist/m365/spo/commands/theme/theme-remove.js +24 -24
  95. package/dist/m365/spo/commands/theme/theme-set.js +0 -1
  96. package/dist/m365/spo/commands/user/user-remove.js +27 -27
  97. package/dist/m365/spo/commands/web/web-reindex.js +35 -42
  98. package/dist/m365/spo/commands/web/web-remove.js +21 -21
  99. package/dist/m365/spo/commands/web/web-roleassignment-add.js +16 -31
  100. package/dist/m365/spo/commands/web/web-roleassignment-remove.js +33 -44
  101. package/dist/m365/spo/commands/web/web-roleinheritance-break.js +18 -18
  102. package/dist/m365/spo/commands/web/web-roleinheritance-reset.js +19 -19
  103. package/dist/m365/yammer/commands/message/message-like-set.js +27 -28
  104. package/dist/m365/yammer/commands/message/message-list.js +62 -81
  105. package/dist/m365/yammer/commands/message/message-remove.js +18 -18
  106. package/dist/m365/yammer/commands/yammer-search.js +53 -69
  107. package/dist/utils/planner.js +4 -3
  108. package/dist/utils/spo.js +13 -54
  109. package/docs/docs/cmd/aad/{o365group/o365group-add.mdx → m365group/m365group-add.mdx} +13 -13
  110. package/docs/docs/cmd/aad/{o365group/o365group-conversation-list.mdx → m365group/m365group-conversation-list.mdx} +4 -4
  111. package/docs/docs/cmd/aad/{o365group/o365group-conversation-post-list.mdx → m365group/m365group-conversation-post-list.mdx} +8 -8
  112. package/docs/docs/cmd/aad/{o365group/o365group-get.mdx → m365group/m365group-get.mdx} +6 -6
  113. package/docs/docs/cmd/aad/{o365group/o365group-list.mdx → m365group/m365group-list.mdx} +12 -29
  114. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-clear.mdx → m365group/m365group-recyclebinitem-clear.mdx} +5 -5
  115. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-list.mdx → m365group/m365group-recyclebinitem-list.mdx} +8 -8
  116. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-remove.mdx → m365group/m365group-recyclebinitem-remove.mdx} +6 -6
  117. package/docs/docs/cmd/aad/{o365group/o365group-recyclebinitem-restore.mdx → m365group/m365group-recyclebinitem-restore.mdx} +6 -6
  118. package/docs/docs/cmd/aad/{o365group/o365group-remove.mdx → m365group/m365group-remove.mdx} +6 -6
  119. package/docs/docs/cmd/aad/{o365group/o365group-renew.mdx → m365group/m365group-renew.mdx} +4 -4
  120. package/docs/docs/cmd/aad/{o365group/o365group-report-activitycounts.mdx → m365group/m365group-report-activitycounts.mdx} +6 -6
  121. package/docs/docs/cmd/aad/{o365group/o365group-report-activitydetail.mdx → m365group/m365group-report-activitydetail.mdx} +7 -7
  122. package/docs/docs/cmd/aad/{o365group/o365group-report-activityfilecounts.mdx → m365group/m365group-report-activityfilecounts.mdx} +6 -6
  123. package/docs/docs/cmd/aad/{o365group/o365group-report-activitygroupcounts.mdx → m365group/m365group-report-activitygroupcounts.mdx} +6 -6
  124. package/docs/docs/cmd/aad/{o365group/o365group-report-activitystorage.mdx → m365group/m365group-report-activitystorage.mdx} +6 -6
  125. package/docs/docs/cmd/aad/{o365group/o365group-set.mdx → m365group/m365group-set.mdx} +8 -8
  126. package/docs/docs/cmd/aad/{o365group/o365group-teamify.mdx → m365group/m365group-teamify.mdx} +5 -5
  127. package/docs/docs/cmd/aad/{o365group/o365group-user-add.mdx → m365group/m365group-user-add.mdx} +5 -5
  128. package/docs/docs/cmd/aad/{o365group/o365group-user-list.mdx → m365group/m365group-user-list.mdx} +7 -7
  129. package/docs/docs/cmd/aad/{o365group/o365group-user-remove.mdx → m365group/m365group-user-remove.mdx} +5 -5
  130. package/docs/docs/cmd/aad/{o365group/o365group-user-set.mdx → m365group/m365group-user-set.mdx} +5 -5
  131. package/docs/docs/cmd/aad/user/user-set.mdx +1 -1
  132. package/docs/docs/cmd/cli/config/config-list.mdx +78 -0
  133. package/docs/docs/cmd/flow/flow-enable.mdx +2 -2
  134. package/docs/docs/cmd/login.mdx +6 -0
  135. package/docs/docs/cmd/pa/app/app-permission-ensure.mdx +85 -0
  136. package/docs/docs/cmd/pa/app/app-permission-remove.mdx +74 -0
  137. package/docs/docs/cmd/planner/plan/plan-add.mdx +1 -1
  138. package/docs/docs/cmd/pp/dataverse/dataverse-table-get.mdx +2 -2
  139. package/docs/docs/cmd/pp/dataverse/dataverse-table-list.mdx +2 -2
  140. package/docs/docs/cmd/pp/dataverse/dataverse-table-remove.mdx +3 -3
  141. package/docs/docs/cmd/spo/file/file-add.mdx +1 -1
  142. package/docs/docs/cmd/spo/file/file-checkin.mdx +1 -1
  143. package/docs/docs/cmd/spo/file/file-checkout-undo.mdx +1 -9
  144. package/docs/docs/cmd/spo/file/file-checkout.mdx +1 -1
  145. package/docs/docs/cmd/spo/file/file-copy.mdx +20 -16
  146. package/docs/docs/cmd/spo/file/file-get.mdx +1 -1
  147. package/docs/docs/cmd/spo/file/file-list.mdx +2 -2
  148. package/docs/docs/cmd/spo/file/file-move.mdx +36 -18
  149. package/docs/docs/cmd/spo/file/file-remove.mdx +8 -8
  150. package/docs/docs/cmd/spo/file/file-rename.mdx +3 -3
  151. package/docs/docs/cmd/spo/file/file-retentionlabel-ensure.mdx +2 -2
  152. package/docs/docs/cmd/spo/file/file-retentionlabel-remove.mdx +3 -3
  153. package/docs/docs/cmd/spo/file/file-roleassignment-add.mdx +1 -1
  154. package/docs/docs/cmd/spo/file/file-roleassignment-remove.mdx +1 -1
  155. package/docs/docs/cmd/spo/file/file-roleinheritance-break.mdx +1 -1
  156. package/docs/docs/cmd/spo/file/file-roleinheritance-reset.mdx +1 -1
  157. package/docs/docs/cmd/spo/file/file-sharinginfo-get.mdx +1 -1
  158. package/docs/docs/cmd/spo/file/file-sharinglink-add.mdx +1 -1
  159. package/docs/docs/cmd/spo/file/file-sharinglink-clear.mdx +1 -1
  160. package/docs/docs/cmd/spo/file/file-sharinglink-get.mdx +1 -1
  161. package/docs/docs/cmd/spo/file/file-sharinglink-list.mdx +1 -1
  162. package/docs/docs/cmd/spo/file/file-sharinglink-remove.mdx +1 -1
  163. package/docs/docs/cmd/spo/file/file-sharinglink-set.mdx +1 -1
  164. package/docs/docs/cmd/spo/file/file-version-clear.mdx +1 -1
  165. package/docs/docs/cmd/spo/file/file-version-get.mdx +1 -1
  166. package/docs/docs/cmd/spo/file/file-version-list.mdx +1 -1
  167. package/docs/docs/cmd/spo/file/file-version-remove.mdx +1 -1
  168. package/docs/docs/cmd/spo/file/file-version-restore.mdx +1 -1
  169. package/docs/docs/cmd/spo/folder/folder-add.mdx +76 -1
  170. package/docs/docs/cmd/spo/folder/folder-copy.mdx +39 -12
  171. package/docs/docs/cmd/spo/folder/folder-get.mdx +1 -1
  172. package/docs/docs/cmd/spo/folder/folder-list.mdx +1 -1
  173. package/docs/docs/cmd/spo/folder/folder-move.mdx +40 -13
  174. package/docs/docs/cmd/spo/folder/folder-remove.mdx +1 -1
  175. package/docs/docs/cmd/spo/folder/folder-rename.mdx +5 -1
  176. package/docs/docs/cmd/spo/folder/folder-retentionlabel-ensure.mdx +1 -1
  177. package/docs/docs/cmd/spo/folder/folder-retentionlabel-remove.mdx +1 -1
  178. package/docs/docs/cmd/spo/folder/folder-roleassignment-add.mdx +2 -2
  179. package/docs/docs/cmd/spo/folder/folder-roleassignment-remove.mdx +1 -1
  180. package/docs/docs/cmd/spo/folder/folder-roleinheritance-break.mdx +1 -1
  181. package/docs/docs/cmd/spo/folder/folder-roleinheritance-reset.mdx +1 -1
  182. package/docs/docs/cmd/spo/listitem/listitem-attachment-list.mdx +1 -1
  183. package/docs/docs/cmd/spo/orgassetslibrary/orgassetslibrary-add.mdx +14 -1
  184. package/docs/docs/cmd/spo/site/site-add.mdx +1 -1
  185. package/docs/docs/cmd/spo/site/site-ensure.mdx +1 -1
  186. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-add.mdx +1 -1
  187. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-list.mdx +1 -1
  188. package/docs/docs/cmd/spo/tenant/tenant-applicationcustomizer-remove.mdx +1 -1
  189. package/docs/docs/cmd/spo/tenant/tenant-commandset-add.mdx +1 -1
  190. package/docs/docs/cmd/spo/tenant/tenant-commandset-remove.mdx +1 -1
  191. package/docs/docs/cmd/spo/tenant/tenant-commandset-set.mdx +1 -1
  192. package/docs/docs/cmd/teams/team/team-add.mdx +1 -1
  193. package/docs/docs/cmd/yammer/network/network-list.mdx +1 -1
  194. package/npm-shrinkwrap.json +143 -89
  195. package/package.json +13 -13
  196. /package/dist/m365/aad/commands/{o365group → m365group}/GroupExtended.js +0 -0
@@ -6,7 +6,9 @@ export default {
6
6
  APP_REMOVE: `${prefix} app remove`,
7
7
  APP_CONSENT_SET: `${prefix} app consent set`,
8
8
  APP_OWNER_SET: `${prefix} app owner set`,
9
+ APP_PERMISSION_ENSURE: `${prefix} app permission ensure`,
9
10
  APP_PERMISSION_LIST: `${prefix} app permission list`,
11
+ APP_PERMISSION_REMOVE: `${prefix} app permission remove`,
10
12
  CONNECTOR_EXPORT: `${prefix} connector export`,
11
13
  CONNECTOR_LIST: `${prefix} connector list`,
12
14
  ENVIRONMENT_GET: `${prefix} environment get`,
@@ -59,8 +59,8 @@ class PlannerBucketAddCommand extends GraphCommand {
59
59
  const plan = await planner.getPlanByTitle(args.options.planTitle, groupId);
60
60
  return plan.id;
61
61
  }
62
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
63
- return plans[0].id;
62
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
63
+ return plan.id;
64
64
  }
65
65
  async getGroupId(args) {
66
66
  if (args.options.ownerGroupId) {
@@ -68,8 +68,8 @@ class PlannerBucketGetCommand extends GraphCommand {
68
68
  const plan = await planner.getPlanByTitle(planTitle, groupId);
69
69
  return plan.id;
70
70
  }
71
- const plans = await planner.getPlansByRosterId(rosterId);
72
- return plans[0].id;
71
+ const plan = await planner.getPlanByRosterId(rosterId);
72
+ return plan.id;
73
73
  }
74
74
  async getBucketById(id) {
75
75
  const requestOptions = {
@@ -47,8 +47,8 @@ class PlannerBucketListCommand extends GraphCommand {
47
47
  const plan = await planner.getPlanByTitle(args.options.planTitle, groupId);
48
48
  return plan.id;
49
49
  }
50
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
51
- return plans[0].id;
50
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
51
+ return plan.id;
52
52
  }
53
53
  async getGroupId(args) {
54
54
  if (args.options.ownerGroupId) {
@@ -98,8 +98,8 @@ class PlannerBucketRemoveCommand extends GraphCommand {
98
98
  const plan = await planner.getPlanByTitle(planTitle, groupId);
99
99
  return plan.id;
100
100
  }
101
- const plans = await planner.getPlansByRosterId(rosterId);
102
- return plans[0].id;
101
+ const plan = await planner.getPlanByRosterId(rosterId);
102
+ return plan.id;
103
103
  }
104
104
  async getGroupId(args) {
105
105
  const { ownerGroupId, ownerGroupName } = args.options;
@@ -89,8 +89,8 @@ class PlannerBucketSetCommand extends GraphCommand {
89
89
  const plan = await planner.getPlanByTitle(planTitle, groupId);
90
90
  return plan.id;
91
91
  }
92
- const plans = await planner.getPlansByRosterId(rosterId);
93
- return plans[0].id;
92
+ const plan = await planner.getPlanByRosterId(rosterId);
93
+ return plan.id;
94
94
  }
95
95
  async getGroupId(args) {
96
96
  const { ownerGroupId, ownerGroupName } = args.options;
@@ -38,8 +38,7 @@ class PlannerPlanGetCommand extends GraphCommand {
38
38
  else {
39
39
  let plan = {};
40
40
  if (args.options.rosterId) {
41
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
42
- plan = plans[0];
41
+ plan = await planner.getPlanByRosterId(args.options.rosterId);
43
42
  }
44
43
  else {
45
44
  let groupId = undefined;
@@ -29,17 +29,16 @@ class PlannerPlanListCommand extends GraphCommand {
29
29
  }
30
30
  async commandAction(logger, args) {
31
31
  try {
32
- let plannerPlans = null;
32
+ let plannerPlans = [];
33
33
  if (args.options.ownerGroupId || args.options.ownerGroupName) {
34
34
  const groupId = await this.getGroupId(args);
35
35
  plannerPlans = await planner.getPlansByGroupId(groupId);
36
36
  }
37
37
  else {
38
- plannerPlans = await planner.getPlansByRosterId(args.options.rosterId);
39
- }
40
- if (plannerPlans && plannerPlans.length > 0) {
41
- await logger.log(plannerPlans);
38
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
39
+ plannerPlans.push(plan);
42
40
  }
41
+ await logger.log(plannerPlans);
43
42
  }
44
43
  catch (err) {
45
44
  this.handleRejectedODataJsonPromise(err);
@@ -47,8 +47,8 @@ class PlannerPlanSetCommand extends GraphCommand {
47
47
  }
48
48
  let groupId = '';
49
49
  if (args.options.rosterId) {
50
- const plans = await planner.getPlansByRosterId(args.options.rosterId);
51
- return plans[0].id;
50
+ const plan = await planner.getPlanByRosterId(args.options.rosterId);
51
+ return plan.id;
52
52
  }
53
53
  else {
54
54
  groupId = await this.getGroupId(args);
@@ -18,4 +18,4 @@ export default [
18
18
  new FN002016_DEVDEP_types_react_dom('17'),
19
19
  new FN002019_DEVDEP_microsoft_rush_stack_compiler(['4.5'])
20
20
  ];
21
- //# sourceMappingURL=doctor-1.18.0-beta.1.js.map
21
+ //# sourceMappingURL=doctor-1.18.0-beta.5.js.map
@@ -67,7 +67,7 @@ class SpfxProjectDoctorCommand extends BaseProjectCommand {
67
67
  '1.17.2',
68
68
  '1.17.3',
69
69
  '1.17.4',
70
- '1.18.0-beta.1'
70
+ '1.18.0-beta.5'
71
71
  ];
72
72
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initTelemetry).call(this);
73
73
  __classPrivateFieldGet(this, _SpfxProjectDoctorCommand_instances, "m", _SpfxProjectDoctorCommand_initOptions).call(this);
@@ -42,7 +42,7 @@ export class PnPJsRule extends BasicDependencyRule {
42
42
  }
43
43
  ];
44
44
  }
45
- visit(project) {
45
+ async visit(project) {
46
46
  const findings = this.pnpModules
47
47
  .map(x => this.getModuleAndParents(project, x.key))
48
48
  .reduce((x, y) => [...x, ...y]);
@@ -67,7 +67,7 @@ export class PnPJsRule extends BasicDependencyRule {
67
67
  targetValue: 'require(\"tslib\");'
68
68
  })));
69
69
  }
70
- return Promise.resolve({ entries: findings, suggestions: fileEdits });
70
+ return { entries: findings, suggestions: fileEdits };
71
71
  }
72
72
  getEntryFilesList(project) {
73
73
  return project && project.manifests ? project.manifests.map(x => x.path.replace('.manifest.json', '.ts')) : [];
@@ -103,7 +103,7 @@ export default [
103
103
  'fixWith': 'symbol'
104
104
  },
105
105
  'Function': {
106
- 'message': 'The \\'Function\\' type accepts any function-like value.\nIt provides no type safety when calling the function, which can be a common source of bugs.\nIt also accepts things like class declarations, which will throw at runtime as they will not be called with \'new\'.\nIf you are expecting the function to accept certain arguments, you should explicitly define the function shape.'
106
+ 'message': 'The \\'Function\\' type accepts any function-like value.\\nIt provides no type safety when calling the function, which can be a common source of bugs.\\nIt also accepts things like class declarations, which will throw at runtime as they will not be called with \\'new\\'.\\nIf you are expecting the function to accept certain arguments, you should explicitly define the function shape.'
107
107
  }
108
108
  }
109
109
  }
@@ -27,33 +27,33 @@ import { FN002023_DEVDEP_microsoft_eslint_config_spfx } from './rules/FN002023_D
27
27
  import { FN010001_YORC_version } from './rules/FN010001_YORC_version.js';
28
28
  import { FN010010_YORC_sdkVersions_teams_js } from './rules/FN010010_YORC_sdkVersions_teams_js.js';
29
29
  export default [
30
- new FN001001_DEP_microsoft_sp_core_library('1.18.0-beta.1'),
31
- new FN001002_DEP_microsoft_sp_lodash_subset('1.18.0-beta.1'),
32
- new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.18.0-beta.1'),
33
- new FN001004_DEP_microsoft_sp_webpart_base('1.18.0-beta.1'),
34
- new FN001011_DEP_microsoft_sp_dialog('1.18.0-beta.1'),
35
- new FN001012_DEP_microsoft_sp_application_base('1.18.0-beta.1'),
36
- new FN001014_DEP_microsoft_sp_listview_extensibility('1.18.0-beta.1'),
37
- new FN001021_DEP_microsoft_sp_property_pane('1.18.0-beta.1'),
30
+ new FN001001_DEP_microsoft_sp_core_library('1.18.0-beta.5'),
31
+ new FN001002_DEP_microsoft_sp_lodash_subset('1.18.0-beta.5'),
32
+ new FN001003_DEP_microsoft_sp_office_ui_fabric_core('1.18.0-beta.5'),
33
+ new FN001004_DEP_microsoft_sp_webpart_base('1.18.0-beta.5'),
34
+ new FN001011_DEP_microsoft_sp_dialog('1.18.0-beta.5'),
35
+ new FN001012_DEP_microsoft_sp_application_base('1.18.0-beta.5'),
36
+ new FN001014_DEP_microsoft_sp_listview_extensibility('1.18.0-beta.5'),
37
+ new FN001021_DEP_microsoft_sp_property_pane('1.18.0-beta.5'),
38
38
  new FN001022_DEP_office_ui_fabric_react('', false),
39
- new FN001023_DEP_microsoft_sp_component_base('1.18.0-beta.1'),
40
- new FN001024_DEP_microsoft_sp_diagnostics('1.18.0-beta.1'),
41
- new FN001025_DEP_microsoft_sp_dynamic_data('1.18.0-beta.1'),
42
- new FN001026_DEP_microsoft_sp_extension_base('1.18.0-beta.1'),
43
- new FN001027_DEP_microsoft_sp_http('1.18.0-beta.1'),
44
- new FN001028_DEP_microsoft_sp_list_subscription('1.18.0-beta.1'),
45
- new FN001029_DEP_microsoft_sp_loader('1.18.0-beta.1'),
46
- new FN001030_DEP_microsoft_sp_module_interfaces('1.18.0-beta.1'),
47
- new FN001031_DEP_microsoft_sp_odata_types('1.18.0-beta.1'),
48
- new FN001032_DEP_microsoft_sp_page_context('1.18.0-beta.1'),
39
+ new FN001023_DEP_microsoft_sp_component_base('1.18.0-beta.5'),
40
+ new FN001024_DEP_microsoft_sp_diagnostics('1.18.0-beta.5'),
41
+ new FN001025_DEP_microsoft_sp_dynamic_data('1.18.0-beta.5'),
42
+ new FN001026_DEP_microsoft_sp_extension_base('1.18.0-beta.5'),
43
+ new FN001027_DEP_microsoft_sp_http('1.18.0-beta.5'),
44
+ new FN001028_DEP_microsoft_sp_list_subscription('1.18.0-beta.5'),
45
+ new FN001029_DEP_microsoft_sp_loader('1.18.0-beta.5'),
46
+ new FN001030_DEP_microsoft_sp_module_interfaces('1.18.0-beta.5'),
47
+ new FN001031_DEP_microsoft_sp_odata_types('1.18.0-beta.5'),
48
+ new FN001032_DEP_microsoft_sp_page_context('1.18.0-beta.5'),
49
49
  new FN001035_DEP_fluentui_react('8.106.4'),
50
- new FN001013_DEP_microsoft_decorators('1.18.0-beta.1'),
51
- new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.18.0-beta.1'),
52
- new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.18.0-beta.1'),
53
- new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.18.0-beta.1'),
54
- new FN002001_DEVDEP_microsoft_sp_build_web('1.18.0-beta.1'),
55
- new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.18.0-beta.1'),
56
- new FN010001_YORC_version('1.18.0-beta.1'),
50
+ new FN001013_DEP_microsoft_decorators('1.18.0-beta.5'),
51
+ new FN001034_DEP_microsoft_sp_adaptive_card_extension_base('1.18.0-beta.5'),
52
+ new FN002022_DEVDEP_microsoft_eslint_plugin_spfx('1.18.0-beta.5'),
53
+ new FN002023_DEVDEP_microsoft_eslint_config_spfx('1.18.0-beta.5'),
54
+ new FN002001_DEVDEP_microsoft_sp_build_web('1.18.0-beta.5'),
55
+ new FN002002_DEVDEP_microsoft_sp_module_interfaces('1.18.0-beta.5'),
56
+ new FN010001_YORC_version('1.18.0-beta.5'),
57
57
  new FN010010_YORC_sdkVersions_teams_js('2.12.0')
58
58
  ];
59
- //# sourceMappingURL=upgrade-1.18.0-beta.1.js.map
59
+ //# sourceMappingURL=upgrade-1.18.0-beta.5.js.map
@@ -71,7 +71,7 @@ class SpfxProjectUpgradeCommand extends BaseProjectCommand {
71
71
  '1.17.2',
72
72
  '1.17.3',
73
73
  '1.17.4',
74
- '1.18.0-beta.1'
74
+ '1.18.0-beta.5'
75
75
  ];
76
76
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initTelemetry).call(this);
77
77
  __classPrivateFieldGet(this, _SpfxProjectUpgradeCommand_instances, "m", _SpfxProjectUpgradeCommand_initOptions).call(this);
@@ -524,14 +524,14 @@ class SpfxDoctorCommand extends BaseProjectCommand {
524
524
  fix: 'npm i -g yo@4'
525
525
  }
526
526
  },
527
- '1.18.0-beta.1': {
527
+ '1.18.0-beta.5': {
528
528
  gulpCli: {
529
529
  range: '^1 || ^2',
530
530
  fix: 'npm i -g gulp-cli@2'
531
531
  },
532
532
  node: {
533
- range: '>=16.13.0 <17.0.0',
534
- fix: 'Install Node.js >=16.13.0 <17.0.0'
533
+ range: '>=16.14.0 <17.0.0',
534
+ fix: 'Install Node.js >=16.14.0 <17.0.0'
535
535
  },
536
536
  sp: SharePointVersion.SPO,
537
537
  yo: {
@@ -603,31 +603,21 @@ class SpfxDoctorCommand extends BaseProjectCommand {
603
603
  this.handleRejectedPromise(err);
604
604
  }
605
605
  }
606
- checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger) {
607
- return new Promise(async (resolve, reject) => {
608
- if (args.options.env) {
609
- const sp = this.spVersionStringToEnum(args.options.env);
610
- if ((prerequisites.sp & sp) === sp) {
611
- await logger.log(formatting.getStatus(CheckStatus.Success, `Supported in ${SharePointVersion[sp]}`));
612
- resolve();
613
- }
614
- else {
615
- await logger.log(formatting.getStatus(CheckStatus.Failure, `Not supported in ${SharePointVersion[sp]}`));
616
- fixes.push(`Use SharePoint Framework v${(sp === SharePointVersion.SP2016 ? '1.1' : '1.4.1')}`);
617
- reject(`SharePoint Framework v${spfxVersion} is not supported in ${SharePointVersion[sp]}`);
618
- }
619
- }
620
- else {
621
- resolve();
606
+ async checkSharePointCompatibility(spfxVersion, prerequisites, args, fixes, logger) {
607
+ if (args.options.env) {
608
+ const sp = this.spVersionStringToEnum(args.options.env);
609
+ if ((prerequisites.sp & sp) === sp) {
610
+ await logger.log(formatting.getStatus(CheckStatus.Success, `Supported in ${SharePointVersion[sp]}`));
611
+ return;
622
612
  }
623
- });
613
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `Not supported in ${SharePointVersion[sp]}`));
614
+ fixes.push(`Use SharePoint Framework v${(sp === SharePointVersion.SP2016 ? '1.1' : '1.4.1')}`);
615
+ throw `SharePoint Framework v${spfxVersion} is not supported in ${SharePointVersion[sp]}`;
616
+ }
624
617
  }
625
- checkNodeVersion(prerequisites, fixes, logger) {
626
- return Promise
627
- .resolve(this.getNodeVersion())
628
- .then((nodeVersion) => {
629
- this.checkStatus('Node', nodeVersion, prerequisites.node, OptionalOrRequired.Required, fixes, logger);
630
- });
618
+ async checkNodeVersion(prerequisites, fixes, logger) {
619
+ const nodeVersion = this.getNodeVersion();
620
+ this.checkStatus('Node', nodeVersion, prerequisites.node, OptionalOrRequired.Required, fixes, logger);
631
621
  }
632
622
  async checkSharePointFrameworkVersion(spfxVersionRequested, fixes, logger) {
633
623
  let spfxVersionDetected = await this.getSPFxVersionFromYoRcFile(logger);
@@ -646,54 +636,42 @@ class SpfxDoctorCommand extends BaseProjectCommand {
646
636
  fixes.push(versionCheck.fix);
647
637
  }
648
638
  }
649
- checkYo(prerequisites, fixes, logger) {
650
- return this
651
- .getPackageVersion('yo', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
652
- .then(async (yoVersion) => {
653
- if (yoVersion) {
654
- this.checkStatus('yo', yoVersion, prerequisites.yo, OptionalOrRequired.Required, fixes, logger);
655
- }
656
- else {
657
- await logger.log(formatting.getStatus(CheckStatus.Failure, `yo not found`));
658
- fixes.push(prerequisites.yo.fix);
659
- }
660
- });
639
+ async checkYo(prerequisites, fixes, logger) {
640
+ const yoVersion = await this.getPackageVersion('yo', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
641
+ if (yoVersion) {
642
+ this.checkStatus('yo', yoVersion, prerequisites.yo, OptionalOrRequired.Required, fixes, logger);
643
+ }
644
+ else {
645
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `yo not found`));
646
+ fixes.push(prerequisites.yo.fix);
647
+ }
661
648
  }
662
- checkGulpCli(prerequisites, fixes, logger) {
663
- return this
664
- .getPackageVersion('gulp-cli', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
665
- .then(async (gulpCliVersion) => {
666
- if (gulpCliVersion) {
667
- this.checkStatus('gulp-cli', gulpCliVersion, prerequisites.gulpCli, OptionalOrRequired.Required, fixes, logger);
668
- }
669
- else {
670
- await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp-cli not found`));
671
- fixes.push(prerequisites.gulpCli.fix);
672
- }
673
- });
649
+ async checkGulpCli(prerequisites, fixes, logger) {
650
+ const gulpCliVersion = await this.getPackageVersion('gulp-cli', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
651
+ if (gulpCliVersion) {
652
+ this.checkStatus('gulp-cli', gulpCliVersion, prerequisites.gulpCli, OptionalOrRequired.Required, fixes, logger);
653
+ }
654
+ else {
655
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp-cli not found`));
656
+ fixes.push(prerequisites.gulpCli.fix);
657
+ }
674
658
  }
675
- checkGulp(fixes, logger) {
676
- return this
677
- .getPackageVersion('gulp', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger)
678
- .then(async (gulpVersion) => {
679
- if (gulpVersion) {
680
- await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp should be removed`));
681
- fixes.push('npm un -g gulp');
682
- }
683
- });
659
+ async checkGulp(fixes, logger) {
660
+ const gulpVersion = await this.getPackageVersion('gulp', PackageSearchMode.GlobalOnly, HandlePromise.Continue, logger);
661
+ if (gulpVersion) {
662
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `gulp should be removed`));
663
+ fixes.push('npm un -g gulp');
664
+ }
684
665
  }
685
- checkTypeScript(fixes, logger) {
686
- return this
687
- .getPackageVersion('typescript', PackageSearchMode.LocalOnly, HandlePromise.Continue, logger)
688
- .then(async (typeScriptVersion) => {
689
- if (typeScriptVersion) {
690
- await logger.log(formatting.getStatus(CheckStatus.Failure, `typescript v${typeScriptVersion} installed in the project`));
691
- fixes.push('npm un typescript');
692
- }
693
- else {
694
- await logger.log(formatting.getStatus(CheckStatus.Success, `bundled typescript used`));
695
- }
696
- });
666
+ async checkTypeScript(fixes, logger) {
667
+ const typeScriptVersion = await this.getPackageVersion('typescript', PackageSearchMode.LocalOnly, HandlePromise.Continue, logger);
668
+ if (typeScriptVersion) {
669
+ await logger.log(formatting.getStatus(CheckStatus.Failure, `typescript v${typeScriptVersion} installed in the project`));
670
+ fixes.push('npm un typescript');
671
+ }
672
+ else {
673
+ await logger.log(formatting.getStatus(CheckStatus.Success, `bundled typescript used`));
674
+ }
697
675
  }
698
676
  spVersionStringToEnum(sp) {
699
677
  return SharePointVersion[sp.toUpperCase()];
@@ -742,43 +720,35 @@ class SpfxDoctorCommand extends BaseProjectCommand {
742
720
  }
743
721
  }
744
722
  }
745
- getPackageVersion(packageName, searchMode, handlePromise, logger) {
746
- return new Promise((resolve, reject) => {
747
- const args = ['ls', packageName, '--depth=0', '--json'];
748
- if (searchMode === PackageSearchMode.GlobalOnly) {
723
+ async getPackageVersion(packageName, searchMode, handlePromise, logger) {
724
+ const args = ['ls', packageName, '--depth=0', '--json'];
725
+ if (searchMode === PackageSearchMode.GlobalOnly) {
726
+ args.push('-g');
727
+ }
728
+ let version;
729
+ try {
730
+ version = await this.getPackageVersionFromNpm(args, logger);
731
+ }
732
+ catch {
733
+ if (searchMode === PackageSearchMode.LocalAndGlobal) {
749
734
  args.push('-g');
735
+ version = await this.getPackageVersionFromNpm(args, logger);
750
736
  }
751
- this
752
- .getPackageVersionFromNpm(args, logger)
753
- .then((version) => {
754
- return Promise.resolve(version);
755
- })
756
- .catch(() => {
757
- if (searchMode === PackageSearchMode.LocalAndGlobal) {
758
- args.push('-g');
759
- return this.getPackageVersionFromNpm(args, logger);
760
- }
761
- else {
762
- return Promise.resolve('');
763
- }
764
- })
765
- .then((version) => {
766
- if (version) {
767
- resolve(version);
768
- }
769
- else {
770
- if (handlePromise === HandlePromise.Continue) {
771
- resolve('');
772
- }
773
- else {
774
- reject();
775
- }
776
- }
777
- })
778
- .catch((err) => {
779
- reject(err);
780
- });
781
- });
737
+ else {
738
+ version = '';
739
+ }
740
+ }
741
+ if (version) {
742
+ return version;
743
+ }
744
+ else {
745
+ if (handlePromise === HandlePromise.Continue) {
746
+ return '';
747
+ }
748
+ else {
749
+ throw new Error();
750
+ }
751
+ }
782
752
  }
783
753
  getPackageVersionFromNpm(args, logger) {
784
754
  return new Promise(async (resolve, reject) => {
@@ -1,33 +1,34 @@
1
1
  import request from '../../../../request.js';
2
2
  import SpoCommand from '../../../base/SpoCommand.js';
3
3
  export class SpoAppBaseCommand extends SpoCommand {
4
- getAppCatalogSiteUrl(logger, authSiteUrl, args) {
5
- return new Promise((resolve, reject) => {
6
- if (args.options.appCatalogScope === 'sitecollection') {
7
- return resolve(args.options.appCatalogUrl.toLowerCase().replace('/appcatalog', ''));
4
+ async getAppCatalogSiteUrl(logger, authSiteUrl, args) {
5
+ if (args.options.appCatalogScope === 'sitecollection') {
6
+ // trim trailing slashes if there are any
7
+ const appCatalogUrl = args.options.appCatalogUrl.replace(/\/$/, '');
8
+ const appCatalogUrlChunks = appCatalogUrl.split('/');
9
+ // Trim the last part of the URL if it ends on '/appcatalog', but don't trim it if the site URL is called like that (/sites/appcatalog).
10
+ if (appCatalogUrl.toLowerCase().endsWith('/appcatalog') && appCatalogUrlChunks.length !== 5) {
11
+ return appCatalogUrl.substring(0, appCatalogUrl.lastIndexOf('/'));
8
12
  }
9
- if (args.options.appCatalogUrl) {
10
- return resolve(args.options.appCatalogUrl);
11
- }
12
- const requestOptions = {
13
- url: `${authSiteUrl}/_api/SP_TenantSettings_Current`,
14
- headers: {
15
- accept: 'application/json;odata=nometadata'
16
- },
17
- responseType: 'json'
18
- };
19
- request
20
- .get(requestOptions)
21
- .then((res) => {
22
- if (res.CorporateCatalogUrl) {
23
- return resolve(res.CorporateCatalogUrl);
24
- }
25
- reject('Tenant app catalog is not configured.');
26
- })
27
- .catch((err) => {
28
- reject(err);
29
- });
30
- });
13
+ }
14
+ if (args.options.appCatalogUrl) {
15
+ return args.options.appCatalogUrl.replace(/\/$/, '');
16
+ }
17
+ if (this.verbose) {
18
+ await logger.logToStderr('Getting tenant app catalog url...');
19
+ }
20
+ const requestOptions = {
21
+ url: `${authSiteUrl}/_api/SP_TenantSettings_Current`,
22
+ headers: {
23
+ accept: 'application/json;odata=nometadata'
24
+ },
25
+ responseType: 'json'
26
+ };
27
+ const response = await request.get(requestOptions);
28
+ if (response.CorporateCatalogUrl) {
29
+ return response.CorporateCatalogUrl;
30
+ }
31
+ throw new Error('Tenant app catalog is not configured.');
31
32
  }
32
33
  }
33
34
  //# sourceMappingURL=SpoAppBaseCommand.js.map
@@ -22,6 +22,7 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
22
22
  constructor() {
23
23
  super();
24
24
  _SpoAppAddCommand_instances.add(this);
25
+ this.appCatalogScopeOptions = ['tenant', 'sitecollection'];
25
26
  __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initTelemetry).call(this);
26
27
  __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initOptions).call(this);
27
28
  __classPrivateFieldGet(this, _SpoAppAddCommand_instances, "m", _SpoAppAddCommand_initValidators).call(this);
@@ -62,9 +63,9 @@ class SpoAppAddCommand extends SpoAppBaseCommand {
62
63
  _SpoAppAddCommand_instances = new WeakSet(), _SpoAppAddCommand_initTelemetry = function _SpoAppAddCommand_initTelemetry() {
63
64
  this.telemetry.push((args) => {
64
65
  Object.assign(this.telemetryProperties, {
65
- overwrite: (!(!args.options.overwrite)).toString(),
66
+ overwrite: !!args.options.overwrite,
66
67
  appCatalogScope: args.options.appCatalogScope || 'tenant',
67
- appCatalogUrl: (!(!args.options.appCatalogUrl)).toString()
68
+ appCatalogUrl: typeof args.options.appCatalogUrl !== 'undefined'
68
69
  });
69
70
  });
70
71
  }, _SpoAppAddCommand_initOptions = function _SpoAppAddCommand_initOptions() {
@@ -72,7 +73,7 @@ _SpoAppAddCommand_instances = new WeakSet(), _SpoAppAddCommand_initTelemetry = f
72
73
  option: '-p, --filePath <filePath>'
73
74
  }, {
74
75
  option: '-s, --appCatalogScope [appCatalogScope]',
75
- autocomplete: ['tenant', 'sitecollection']
76
+ autocomplete: this.appCatalogScopeOptions
76
77
  }, {
77
78
  option: '-u, --appCatalogUrl [appCatalogUrl]'
78
79
  }, {
@@ -80,14 +81,13 @@ _SpoAppAddCommand_instances = new WeakSet(), _SpoAppAddCommand_initTelemetry = f
80
81
  });
81
82
  }, _SpoAppAddCommand_initValidators = function _SpoAppAddCommand_initValidators() {
82
83
  this.validators.push(async (args) => {
83
- // verify either 'tenant' or 'sitecollection' specified if scope provided
84
84
  if (args.options.appCatalogScope) {
85
- const testScope = args.options.appCatalogScope.toLowerCase();
86
- if (!(testScope === 'tenant' || testScope === 'sitecollection')) {
87
- return `appCatalogScope must be either 'tenant' or 'sitecollection'`;
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
88
  }
89
- if (testScope === 'sitecollection' && !args.options.appCatalogUrl) {
90
- return `You must specify appCatalogUrl when the appCatalogScope is sitecollection`;
89
+ if (appCatalogScope === 'sitecollection' && !args.options.appCatalogUrl) {
90
+ return `You must specify appCatalogUrl when appCatalogScope is sitecollection`;
91
91
  }
92
92
  }
93
93
  const fullPath = path.resolve(args.options.filePath);