@pnp/cli-microsoft365 7.5.0-beta.d4d820f → 7.6.0-beta.443bfd8

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 (191) hide show
  1. package/.devcontainer/Dockerfile +2 -2
  2. package/.eslintrc.cjs +9 -2
  3. package/.mocharc.json +3 -5
  4. package/Dockerfile +2 -5
  5. package/README.md +2 -2
  6. package/allCommands.json +1 -1
  7. package/allCommandsFull.json +1 -1
  8. package/dist/Auth.js +181 -77
  9. package/dist/AuthServer.js +3 -3
  10. package/dist/Command.js +8 -5
  11. package/dist/auth/FileTokenStorage.js +4 -1
  12. package/dist/cli/cli.js +1 -1
  13. package/dist/m365/base/AppCommand.js +2 -2
  14. package/dist/m365/base/PowerAppsCommand.js +2 -2
  15. package/dist/m365/base/PowerAutomateCommand.js +2 -2
  16. package/dist/m365/base/PowerPlatformCommand.js +2 -2
  17. package/dist/m365/base/SpoCommand.js +3 -3
  18. package/dist/m365/base/{YammerCommand.js → VivaEngageCommand.js} +2 -2
  19. package/dist/m365/cli/commands/cli-consent.js +5 -3
  20. package/dist/m365/cli/commands/cli-doctor.js +5 -5
  21. package/dist/m365/commands/ConnectionDetails.js +2 -0
  22. package/dist/m365/commands/login.js +26 -48
  23. package/dist/m365/commands/logout.js +2 -2
  24. package/dist/m365/commands/request.js +2 -2
  25. package/dist/m365/commands/status.js +15 -23
  26. package/dist/m365/connection/commands/connection-list.js +47 -0
  27. package/dist/m365/connection/commands/connection-remove.js +67 -0
  28. package/dist/m365/connection/commands/connection-set.js +56 -0
  29. package/dist/m365/connection/commands/connection-use.js +51 -0
  30. package/dist/m365/connection/commands.js +8 -0
  31. package/dist/m365/entra/aadCommands.js +3 -0
  32. package/dist/m365/entra/commands/administrativeunit/administrativeunit-member-remove.js +153 -0
  33. package/dist/m365/entra/commands/app/app-add.js +2 -2
  34. package/dist/m365/entra/commands/app/app-get.js +1 -1
  35. package/dist/m365/entra/commands/app/app-list.js +1 -1
  36. package/dist/m365/entra/commands/app/app-permission-add.js +1 -1
  37. package/dist/m365/entra/commands/app/app-permission-list.js +182 -0
  38. package/dist/m365/entra/commands/app/app-remove.js +1 -1
  39. package/dist/m365/entra/commands/app/app-role-add.js +1 -1
  40. package/dist/m365/entra/commands/app/app-role-list.js +1 -1
  41. package/dist/m365/entra/commands/app/app-role-remove.js +1 -1
  42. package/dist/m365/entra/commands/app/app-set.js +1 -1
  43. package/dist/m365/entra/commands/{sp/sp-add.js → enterpriseapp/enterpriseapp-add.js} +18 -18
  44. package/dist/m365/entra/commands/{sp/sp-get.js → enterpriseapp/enterpriseapp-get.js} +19 -19
  45. package/dist/m365/entra/commands/{sp/sp-list.js → enterpriseapp/enterpriseapp-list.js} +13 -13
  46. package/dist/m365/entra/commands/group/group-add.js +224 -0
  47. package/dist/m365/entra/commands/group/group-user-add.js +145 -0
  48. package/dist/m365/entra/commands/m365group/m365group-report-activitygroupcounts.js +1 -1
  49. package/dist/m365/entra/commands/user/user-get.js +38 -38
  50. package/dist/m365/entra/commands/user/user-license-list.js +1 -1
  51. package/dist/m365/entra/commands/user/user-registrationdetails-list.js +224 -0
  52. package/dist/m365/entra/commands/user/user-set.js +2 -2
  53. package/dist/m365/entra/commands.js +17 -0
  54. package/dist/m365/external/commands/connection/connection-doctor.js +2 -1
  55. package/dist/m365/file/commands/convert/convert-pdf.js +1 -1
  56. package/dist/m365/file/commands/file-copy.js +151 -0
  57. package/dist/m365/file/commands.js +1 -0
  58. package/dist/m365/outlook/commands/mail/mail-send.js +1 -1
  59. package/dist/m365/outlook/commands/message/message-get.js +1 -1
  60. package/dist/m365/pa/commands/app/app-permission-ensure.js +1 -1
  61. package/dist/m365/pa/commands/app/app-permission-remove.js +1 -1
  62. package/dist/m365/planner/commands/roster/roster-plan-list.js +1 -1
  63. package/dist/m365/purview/commands/auditlog/auditlog-list.js +1 -1
  64. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-get.js +1 -1
  65. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-list.js +1 -1
  66. package/dist/m365/purview/commands/sensitivitylabel/sensitivitylabel-policysettings-list.js +1 -1
  67. package/dist/m365/purview/commands/threatassessment/threatassessment-add.js +123 -0
  68. package/dist/m365/purview/commands/threatassessment/threatassessment-list.js +104 -0
  69. package/dist/m365/purview/commands.js +3 -1
  70. package/dist/m365/spfx/commands/project/DeployWorkflow.js +115 -3
  71. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +183 -0
  72. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-model.js +2 -0
  73. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +3 -4
  74. package/dist/m365/spfx/commands.js +1 -0
  75. package/dist/m365/spo/commands/spo-get.js +1 -1
  76. package/dist/m365/spo/commands/spo-search.js +52 -22
  77. package/dist/m365/spo/commands/spo-set.js +1 -1
  78. package/dist/m365/spo/commands/user/user-remove.js +93 -16
  79. package/dist/m365/teams/commands/chat/chat-get.js +1 -1
  80. package/dist/m365/teams/commands/chat/chat-list.js +1 -1
  81. package/dist/m365/teams/commands/chat/chat-message-send.js +1 -1
  82. package/dist/m365/teams/commands/meeting/meeting-add.js +1 -1
  83. package/dist/m365/teams/commands/meeting/meeting-attendancereport-list.js +1 -1
  84. package/dist/m365/teams/commands/meeting/meeting-get.js +1 -1
  85. package/dist/m365/teams/commands/meeting/meeting-list.js +2 -2
  86. package/dist/m365/teams/commands/meeting/meeting-transcript-list.js +1 -1
  87. package/dist/m365/tenant/commands/id/id-get.js +1 -1
  88. package/dist/m365/tenant/commands/info/info-get.js +1 -1
  89. package/dist/m365/util/commands/accesstoken/accesstoken-get.js +3 -3
  90. package/dist/m365/{yammer/commands/group/group-list.js → viva/commands/engage/engage-group-list.js} +19 -14
  91. package/dist/m365/{yammer/commands/group/group-user-add.js → viva/commands/engage/engage-group-user-add.js} +19 -14
  92. package/dist/m365/{yammer/commands/group/group-user-remove.js → viva/commands/engage/engage-group-user-remove.js} +19 -14
  93. package/dist/m365/{yammer/commands/message/message-add.js → viva/commands/engage/engage-message-add.js} +19 -14
  94. package/dist/m365/{yammer/commands/message/message-get.js → viva/commands/engage/engage-message-get.js} +17 -12
  95. package/dist/m365/{yammer/commands/message/message-like-set.js → viva/commands/engage/engage-message-like-set.js} +21 -16
  96. package/dist/m365/{yammer/commands/message/message-list.js → viva/commands/engage/engage-message-list.js} +21 -16
  97. package/dist/m365/{yammer/commands/message/message-remove.js → viva/commands/engage/engage-message-remove.js} +20 -15
  98. package/dist/m365/{yammer/commands/network/network-list.js → viva/commands/engage/engage-network-list.js} +16 -11
  99. package/dist/m365/viva/commands/engage/engage-report-activitycounts.js +23 -0
  100. package/dist/m365/viva/commands/engage/engage-report-activityusercounts.js +23 -0
  101. package/dist/m365/viva/commands/engage/engage-report-activityuserdetail.js +23 -0
  102. package/dist/m365/viva/commands/engage/engage-report-deviceusagedistributionusercounts.js +23 -0
  103. package/dist/m365/viva/commands/engage/engage-report-deviceusageusercounts.js +23 -0
  104. package/dist/m365/viva/commands/engage/engage-report-deviceusageuserdetail.js +23 -0
  105. package/dist/m365/viva/commands/engage/engage-report-groupsactivitycounts.js +23 -0
  106. package/dist/m365/viva/commands/engage/engage-report-groupsactivitydetail.js +23 -0
  107. package/dist/m365/viva/commands/engage/engage-report-groupsactivitygroupcounts.js +23 -0
  108. package/dist/m365/{yammer/commands/yammer-search.js → viva/commands/engage/engage-search.js} +23 -18
  109. package/dist/m365/{yammer/commands/user/user-get.js → viva/commands/engage/engage-user-get.js} +18 -13
  110. package/dist/m365/{yammer/commands/user/user-list.js → viva/commands/engage/engage-user-list.js} +18 -13
  111. package/dist/m365/{yammer/commands.js → viva/commands/engage/yammerCommands.js} +1 -1
  112. package/dist/m365/viva/commands.js +22 -1
  113. package/dist/request.js +1 -1
  114. package/dist/utils/entraUser.js +36 -0
  115. package/dist/utils/spo.js +36 -14
  116. package/dist/utils/urlUtil.js +31 -0
  117. package/dist/utils/validation.js +8 -0
  118. package/docs/docs/cmd/cli/cli-consent.mdx +9 -9
  119. package/docs/docs/cmd/connection/connection-list.mdx +100 -0
  120. package/docs/docs/cmd/connection/connection-remove.mdx +45 -0
  121. package/docs/docs/cmd/connection/connection-set.mdx +39 -0
  122. package/docs/docs/cmd/connection/connection-use.mdx +98 -0
  123. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +5 -3
  124. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-remove.mdx +107 -0
  125. package/docs/docs/cmd/entra/app/app-add.mdx +2 -1
  126. package/docs/docs/cmd/entra/app/app-get.mdx +1 -0
  127. package/docs/docs/cmd/entra/app/app-list.mdx +1 -0
  128. package/docs/docs/cmd/entra/app/app-permission-add.mdx +1 -0
  129. package/docs/docs/cmd/entra/app/app-permission-list.mdx +105 -0
  130. package/docs/docs/cmd/entra/app/app-remove.mdx +1 -0
  131. package/docs/docs/cmd/entra/app/app-role-add.mdx +1 -0
  132. package/docs/docs/cmd/entra/app/app-role-list.mdx +1 -0
  133. package/docs/docs/cmd/entra/app/app-role-remove.mdx +1 -0
  134. package/docs/docs/cmd/entra/app/app-set.mdx +1 -0
  135. package/docs/docs/cmd/entra/{sp/sp-add.mdx → enterpriseapp/enterpriseapp-add.mdx} +16 -15
  136. package/docs/docs/cmd/entra/{sp/sp-get.mdx → enterpriseapp/enterpriseapp-get.mdx} +15 -14
  137. package/docs/docs/cmd/entra/{sp/sp-list.mdx → enterpriseapp/enterpriseapp-list.mdx} +22 -21
  138. package/docs/docs/cmd/entra/group/group-add.mdx +231 -0
  139. package/docs/docs/cmd/entra/group/group-user-add.mdx +62 -0
  140. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +1 -1
  141. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +3 -3
  142. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +1 -1
  143. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +246 -0
  144. package/docs/docs/cmd/external/item/item-add.mdx +1 -1
  145. package/docs/docs/cmd/file/convert/convert-pdf.mdx +4 -0
  146. package/docs/docs/cmd/file/file-add.mdx +4 -0
  147. package/docs/docs/cmd/file/file-copy.mdx +68 -0
  148. package/docs/docs/cmd/file/file-list.mdx +100 -0
  149. package/docs/docs/cmd/login.mdx +15 -0
  150. package/docs/docs/cmd/purview/threatassessment/threatassessment-add.mdx +131 -0
  151. package/docs/docs/cmd/purview/threatassessment/threatassessment-list.mdx +110 -0
  152. package/docs/docs/cmd/setup.mdx +4 -0
  153. package/docs/docs/cmd/spfx/project/project-azuredevops-pipeline-add.mdx +87 -0
  154. package/docs/docs/cmd/spo/list/list-webhook-set.mdx +1 -1
  155. package/docs/docs/cmd/spo/spo-search.mdx +6 -2
  156. package/docs/docs/cmd/spo/theme/theme-set.mdx +14 -2
  157. package/docs/docs/cmd/spo/user/user-remove.mdx +40 -9
  158. package/docs/docs/cmd/{yammer/group/group-list.mdx → viva/engage/engage-group-list.mdx} +13 -13
  159. package/docs/docs/cmd/{yammer/group/group-user-add.mdx → viva/engage/engage-group-user-add.mdx} +7 -7
  160. package/docs/docs/cmd/{yammer/group/group-user-remove.mdx → viva/engage/engage-group-user-remove.mdx} +10 -10
  161. package/docs/docs/cmd/{yammer/message/message-add.mdx → viva/engage/engage-message-add.mdx} +12 -13
  162. package/docs/docs/cmd/{yammer/message/message-get.mdx → viva/engage/engage-message-get.mdx} +10 -10
  163. package/docs/docs/cmd/{yammer/message/message-like-set.mdx → viva/engage/engage-message-like-set.mdx} +10 -10
  164. package/docs/docs/cmd/{yammer/message/message-list.mdx → viva/engage/engage-message-list.mdx} +21 -21
  165. package/docs/docs/cmd/{yammer/message/message-remove.mdx → viva/engage/engage-message-remove.mdx} +10 -10
  166. package/docs/docs/cmd/{yammer/network/network-list.mdx → viva/engage/engage-network-list.mdx} +6 -6
  167. package/docs/docs/cmd/{yammer/report/report-activitycounts.mdx → viva/engage/engage-report-activitycounts.mdx} +9 -9
  168. package/docs/docs/cmd/{yammer/report/report-activityusercounts.mdx → viva/engage/engage-report-activityusercounts.mdx} +9 -9
  169. package/docs/docs/cmd/{yammer/report/report-activityuserdetail.mdx → viva/engage/engage-report-activityuserdetail.mdx} +11 -12
  170. package/docs/docs/cmd/{yammer/report/report-deviceusagedistributionusercounts.mdx → viva/engage/engage-report-deviceusagedistributionusercounts.mdx} +5 -5
  171. package/docs/docs/cmd/{yammer/report/report-deviceusageusercounts.mdx → viva/engage/engage-report-deviceusageusercounts.mdx} +5 -5
  172. package/docs/docs/cmd/{yammer/report/report-deviceusageuserdetail.mdx → viva/engage/engage-report-deviceusageuserdetail.mdx} +11 -11
  173. package/docs/docs/cmd/{yammer/report/report-groupsactivitycounts.mdx → viva/engage/engage-report-groupsactivitycounts.mdx} +9 -9
  174. package/docs/docs/cmd/{yammer/report/report-groupsactivitydetail.mdx → viva/engage/engage-report-groupsactivitydetail.mdx} +11 -11
  175. package/docs/docs/cmd/{yammer/report/report-groupsactivitygroupcounts.mdx → viva/engage/engage-report-groupsactivitygroupcounts.mdx} +5 -5
  176. package/docs/docs/cmd/{yammer/yammer-search.mdx → viva/engage/engage-search.mdx} +10 -10
  177. package/docs/docs/cmd/{yammer/user/user-get.mdx → viva/engage/engage-user-get.mdx} +8 -8
  178. package/docs/docs/cmd/{yammer/user/user-list.mdx → viva/engage/engage-user-list.mdx} +11 -11
  179. package/npm-shrinkwrap.json +230 -168
  180. package/package.json +20 -19
  181. package/dist/m365/base/AzmgmtCommand.js +0 -18
  182. package/dist/m365/base/AzmgmtItemsListCommand.js +0 -41
  183. package/dist/m365/yammer/commands/report/report-activitycounts.js +0 -15
  184. package/dist/m365/yammer/commands/report/report-activityusercounts.js +0 -15
  185. package/dist/m365/yammer/commands/report/report-activityuserdetail.js +0 -15
  186. package/dist/m365/yammer/commands/report/report-deviceusagedistributionusercounts.js +0 -15
  187. package/dist/m365/yammer/commands/report/report-deviceusageusercounts.js +0 -15
  188. package/dist/m365/yammer/commands/report/report-deviceusageuserdetail.js +0 -15
  189. package/dist/m365/yammer/commands/report/report-groupsactivitycounts.js +0 -15
  190. package/dist/m365/yammer/commands/report/report-groupsactivitydetail.js +0 -15
  191. package/dist/m365/yammer/commands/report/report-groupsactivitygroupcounts.js +0 -15
@@ -38,16 +38,15 @@ class SpoSearchCommand extends SpoCommand {
38
38
  if (this.verbose) {
39
39
  await logger.logToStderr(`Executing search query '${args.options.queryText}' on site at ${webUrl}...`);
40
40
  }
41
- const startRow = args.options.startRow ? args.options.startRow : 0;
42
- const results = await this.executeSearchQuery(logger, args, webUrl, [], startRow);
41
+ const results = await this.executeSearchQuery(logger, args, webUrl, []);
43
42
  this.printResults(logger, args, results);
44
43
  }
45
44
  catch (err) {
46
45
  this.handleRejectedODataJsonPromise(err);
47
46
  }
48
47
  }
49
- async executeSearchQuery(logger, args, webUrl, resultSet, startRow) {
50
- const requestUrl = await this.getRequestUrl(webUrl, logger, args, startRow);
48
+ async executeSearchQuery(logger, args, webUrl, resultSet, lastDocId = '0') {
49
+ const requestUrl = await this.getRequestUrl(webUrl, logger, args, lastDocId);
51
50
  const requestOptions = {
52
51
  url: requestUrl,
53
52
  headers: {
@@ -57,26 +56,36 @@ class SpoSearchCommand extends SpoCommand {
57
56
  };
58
57
  const searchResult = await request.get(requestOptions);
59
58
  resultSet.push(searchResult);
60
- if (args.options.allResults && startRow + searchResult.PrimaryQueryResult.RelevantResults.RowCount < searchResult.PrimaryQueryResult.RelevantResults.TotalRows) {
61
- const nextStartRow = startRow + searchResult.PrimaryQueryResult.RelevantResults.RowCount;
62
- return this.executeSearchQuery(logger, args, webUrl, resultSet, nextStartRow);
59
+ const rowLimit = args.options.rowLimit ? args.options.rowLimit : 500;
60
+ if (args.options.allResults && searchResult.PrimaryQueryResult.RelevantResults.RowCount === rowLimit) {
61
+ if (this.verbose) {
62
+ await logger.logToStderr(`Processing search query, retrieved ${resultSet.length * searchResult.PrimaryQueryResult.RelevantResults.RowCount} of ${resultSet[0].PrimaryQueryResult.RelevantResults.TotalRows} items...`);
63
+ }
64
+ // When running in allResults mode, paging is done using the DocId property
65
+ // This is a more stable way than using the StartRow property.
66
+ // Explanation: https://learn.microsoft.com/sharepoint/dev/general-development/pagination-for-large-result-sets
67
+ const lastRow = searchResult.PrimaryQueryResult.RelevantResults.Table.Rows[searchResult.PrimaryQueryResult.RelevantResults.RowCount - 1];
68
+ const newLastDocId = lastRow.Cells.filter(cell => cell.Key === 'DocId')[0].Value;
69
+ return this.executeSearchQuery(logger, args, webUrl, resultSet, newLastDocId);
63
70
  }
64
71
  return resultSet;
65
72
  }
66
- async getRequestUrl(webUrl, logger, args, startRow) {
73
+ async getRequestUrl(webUrl, logger, args, lastDocId) {
67
74
  // get the list of selected properties
68
75
  const selectPropertiesArray = this.getSelectPropertiesArray(args);
76
+ // get the sort list
77
+ const sortList = this.getSortList(args);
69
78
  // transform arg data to query string parameters
70
- const propertySelectRequestString = `&selectproperties='${formatting.encodeQueryParameter(selectPropertiesArray.join(","))}'`;
71
- const startRowRequestString = `&startrow=${startRow ? startRow : 0}`;
72
- const rowLimitRequestString = args.options.rowLimit ? `&rowlimit=${args.options.rowLimit}` : ``;
79
+ const propertySelectRequestString = `&selectproperties='${formatting.encodeQueryParameter(selectPropertiesArray.join(','))}'`;
80
+ const startRowRequestString = `&startrow=${args.options.startRow ? args.options.startRow : 0}`;
81
+ const rowLimitRequestString = args.options.rowLimit ? `&rowlimit=${args.options.rowLimit}` : (args.options.allResults ? `&rowlimit=500` : '');
73
82
  const sourceIdRequestString = args.options.sourceId ? `&sourceid='${args.options.sourceId}'` : ``;
74
- const trimDuplicatesRequestString = `&trimduplicates=${args.options.trimDuplicates ? args.options.trimDuplicates : "false"}`;
75
- const enableStemmingRequestString = `&enablestemming=${typeof (args.options.enableStemming) === 'undefined' ? "true" : args.options.enableStemming}`;
83
+ const trimDuplicatesRequestString = `&trimduplicates=${args.options.trimDuplicates ? args.options.trimDuplicates : 'false'}`;
84
+ const enableStemmingRequestString = `&enablestemming=${typeof (args.options.enableStemming) === 'undefined' ? 'true' : args.options.enableStemming}`;
76
85
  const cultureRequestString = args.options.culture ? `&culture=${args.options.culture}` : ``;
77
86
  const refinementFiltersRequestString = args.options.refinementFilters ? `&refinementfilters='${args.options.refinementFilters}'` : ``;
78
87
  const queryTemplateRequestString = args.options.queryTemplate ? `&querytemplate='${args.options.queryTemplate}'` : ``;
79
- const sortListRequestString = args.options.sortList ? `&sortList='${formatting.encodeQueryParameter(args.options.sortList)}'` : ``;
88
+ const sortListRequestString = sortList ? `&sortList='${sortList}'` : ``;
80
89
  const rankingModelIdRequestString = args.options.rankingModelId ? `&rankingmodelid='${args.options.rankingModelId}'` : ``;
81
90
  const propertiesRequestString = this.getPropertiesRequestString(args);
82
91
  const refinersRequestString = args.options.refiners ? `&refiners='${args.options.refiners}'` : ``;
@@ -86,8 +95,9 @@ class SpoSearchCommand extends SpoCommand {
86
95
  const processBestBetsRequestString = typeof (args.options.processBestBets) === 'undefined' ? `` : `&processbestbets=${args.options.processBestBets}`;
87
96
  const enableQueryRulesRequestString = typeof (args.options.enableQueryRules) === 'undefined' ? `` : `&enablequeryrules=${args.options.enableQueryRules}`;
88
97
  const processPersonalFavoritesRequestString = typeof (args.options.processPersonalFavorites) === 'undefined' ? `` : `&processpersonalfavorites=${args.options.processPersonalFavorites}`;
98
+ const indexDocIdQueryText = args.options.allResults ? ` IndexDocId>${lastDocId}` : '';
89
99
  // construct single requestUrl
90
- const requestUrl = `${webUrl}/_api/search/query?querytext='${args.options.queryText}'`.concat(propertySelectRequestString, startRowRequestString, rowLimitRequestString, sourceIdRequestString, trimDuplicatesRequestString, enableStemmingRequestString, cultureRequestString, refinementFiltersRequestString, queryTemplateRequestString, sortListRequestString, rankingModelIdRequestString, propertiesRequestString, refinersRequestString, hiddenConstraintsRequestString, clientTypeRequestString, enablePhoneticRequestString, processBestBetsRequestString, enableQueryRulesRequestString, processPersonalFavoritesRequestString);
100
+ const requestUrl = `${webUrl}/_api/search/query?querytext='${args.options.queryText}${indexDocIdQueryText}'`.concat(propertySelectRequestString, startRowRequestString, rowLimitRequestString, sourceIdRequestString, trimDuplicatesRequestString, enableStemmingRequestString, cultureRequestString, refinementFiltersRequestString, queryTemplateRequestString, sortListRequestString, rankingModelIdRequestString, propertiesRequestString, refinersRequestString, hiddenConstraintsRequestString, clientTypeRequestString, enablePhoneticRequestString, processBestBetsRequestString, enableQueryRulesRequestString, processPersonalFavoritesRequestString);
91
101
  if (this.debug) {
92
102
  await logger.logToStderr(`RequestURL: ${requestUrl}`);
93
103
  }
@@ -96,7 +106,7 @@ class SpoSearchCommand extends SpoCommand {
96
106
  getPropertiesRequestString(args) {
97
107
  let properties = args.options.properties ? args.options.properties : '';
98
108
  if (args.options.sourceName) {
99
- if (properties && !properties.endsWith(",")) {
109
+ if (properties && !properties.endsWith(',')) {
100
110
  properties += `,`;
101
111
  }
102
112
  properties += `SourceName:${args.options.sourceName},SourceLevel:SPSite`;
@@ -104,9 +114,26 @@ class SpoSearchCommand extends SpoCommand {
104
114
  return properties ? `&properties='${properties}'` : ``;
105
115
  }
106
116
  getSelectPropertiesArray(args) {
107
- return args.options.selectProperties
108
- ? args.options.selectProperties.split(",")
109
- : ["Title", "OriginalPath"];
117
+ const selectProperties = args.options.selectProperties
118
+ ? args.options.selectProperties.split(',')
119
+ : ['Title', 'OriginalPath'];
120
+ if (args.options.allResults) {
121
+ selectProperties.filter(p => p.toLowerCase() !== 'docid').push('DocId');
122
+ }
123
+ return selectProperties;
124
+ }
125
+ getSortList(args) {
126
+ const sortList = [];
127
+ if (args.options.allResults) {
128
+ sortList.push(formatting.encodeQueryParameter('[DocId]:ascending'));
129
+ }
130
+ if (args.options.sortList) {
131
+ const sortListArray = args.options.sortList.split(',');
132
+ sortListArray.forEach(sortItem => {
133
+ sortList.push(formatting.encodeQueryParameter(sortItem));
134
+ });
135
+ }
136
+ return sortList.join(',');
110
137
  }
111
138
  async printResults(logger, args, results) {
112
139
  if (args.options.rawOutput) {
@@ -116,9 +143,9 @@ class SpoSearchCommand extends SpoCommand {
116
143
  await logger.log(this.getParsedOutput(args, results));
117
144
  }
118
145
  if (!args.options.output || cli.shouldTrimOutput(args.options.output)) {
119
- await logger.log("# Rows: " + results[results.length - 1].PrimaryQueryResult.RelevantResults.TotalRows);
120
- await logger.log("# Rows (Including duplicates): " + results[results.length - 1].PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates);
121
- await logger.log("Elapsed Time: " + this.getElapsedTime(results));
146
+ await logger.log('# Rows: ' + results[results.length - 1].PrimaryQueryResult.RelevantResults.TotalRows);
147
+ await logger.log('# Rows (Including duplicates): ' + results[results.length - 1].PrimaryQueryResult.RelevantResults.TotalRowsIncludingDuplicates);
148
+ await logger.log('Elapsed Time: ' + this.getElapsedTime(results));
122
149
  }
123
150
  }
124
151
  getElapsedTime(results) {
@@ -245,6 +272,9 @@ _SpoSearchCommand_instances = new WeakSet(), _SpoSearchCommand_initTelemetry = f
245
272
  if (args.options.startRow && !isNumber(args.options.startRow)) {
246
273
  return `${args.options.startRow} is not a valid number`;
247
274
  }
275
+ if (args.options.startRow && args.options.allResults) {
276
+ return 'You cannot specify startRow when allResults is set';
277
+ }
248
278
  if (args.options.culture && !isNumber(args.options.culture)) {
249
279
  return `${args.options.culture} is not a valid number`;
250
280
  }
@@ -22,7 +22,7 @@ class SpoSetCommand extends SpoCommand {
22
22
  __classPrivateFieldGet(this, _SpoSetCommand_instances, "m", _SpoSetCommand_initValidators).call(this);
23
23
  }
24
24
  async commandAction(logger, args) {
25
- auth.service.spoUrl = args.options.url;
25
+ auth.connection.spoUrl = args.options.url;
26
26
  try {
27
27
  await auth.storeConnectionInfo();
28
28
  }
@@ -5,11 +5,14 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
5
5
  };
6
6
  var _SpoUserRemoveCommand_instances, _SpoUserRemoveCommand_initTelemetry, _SpoUserRemoveCommand_initOptions, _SpoUserRemoveCommand_initValidators, _SpoUserRemoveCommand_initOptionSets;
7
7
  import { cli } from '../../../../cli/cli.js';
8
+ import { spo } from '../../../../utils/spo.js';
8
9
  import request from '../../../../request.js';
10
+ import { entraGroup } from '../../../../utils/entraGroup.js';
9
11
  import { formatting } from '../../../../utils/formatting.js';
10
12
  import { validation } from '../../../../utils/validation.js';
11
13
  import SpoCommand from '../../../base/SpoCommand.js';
12
14
  import commands from '../../commands.js';
15
+ ;
13
16
  class SpoUserRemoveCommand extends SpoCommand {
14
17
  get name() {
15
18
  return commands.USER_REMOVE;
@@ -40,13 +43,58 @@ class SpoUserRemoveCommand extends SpoCommand {
40
43
  if (this.verbose) {
41
44
  await logger.logToStderr(`Removing user from subsite ${options.webUrl} ...`);
42
45
  }
43
- let requestUrl = `${encodeURI(options.webUrl)}/_api/web/siteusers/`;
44
- if (options.id) {
45
- requestUrl += `removebyid(${options.id})`;
46
+ try {
47
+ let requestUrl = `${encodeURI(options.webUrl)}/_api/web/siteusers/`;
48
+ if (options.id) {
49
+ requestUrl += `removebyid(${options.id})`;
50
+ }
51
+ else if (options.loginName) {
52
+ requestUrl += `removeByLoginName('${formatting.encodeQueryParameter(options.loginName)}')`;
53
+ }
54
+ else if (options.email) {
55
+ const user = await spo.getUserByEmail(options.webUrl, options.email, logger, this.verbose);
56
+ requestUrl += `removebyid(${user.Id})`;
57
+ }
58
+ else if (options.userName) {
59
+ const user = await this.getUser(options);
60
+ if (!user) {
61
+ throw new Error(`User not found: ${options.userName}`);
62
+ }
63
+ if (this.verbose) {
64
+ await logger.logToStderr(`Removing user ${user.Title} ...`);
65
+ }
66
+ requestUrl += `removebyid(${user.Id})`;
67
+ }
68
+ else if (options.entraGroupId || options.entraGroupName) {
69
+ const entraGroup = await this.getEntraGroup(options);
70
+ if (this.verbose) {
71
+ await logger.logToStderr(`Removing entra group ${entraGroup?.displayName} ...`);
72
+ }
73
+ //for entra groups, M365 groups have an associated email and security groups don't
74
+ if (entraGroup?.mail) {
75
+ //M365 group is prefixed with c:0o.c|federateddirectoryclaimprovider
76
+ requestUrl += `removeByLoginName('c:0o.c|federateddirectoryclaimprovider|${entraGroup.id}')`;
77
+ }
78
+ else {
79
+ //security group is prefixed with c:0t.c|tenant
80
+ requestUrl += `removeByLoginName('c:0t.c|tenant|${entraGroup?.id}')`;
81
+ }
82
+ }
83
+ const requestOptions = {
84
+ url: requestUrl,
85
+ headers: {
86
+ accept: 'application/json;odata=nometadata'
87
+ },
88
+ responseType: 'json'
89
+ };
90
+ await request.post(requestOptions);
46
91
  }
47
- else if (options.loginName) {
48
- requestUrl += `removeByLoginName('${formatting.encodeQueryParameter(options.loginName)}')`;
92
+ catch (err) {
93
+ this.handleRejectedODataJsonPromise(err);
49
94
  }
95
+ }
96
+ async getUser(options) {
97
+ const requestUrl = `${options.webUrl}/_api/web/siteusers?$filter=UserPrincipalName eq ('${formatting.encodeQueryParameter(options.userName)}')`;
50
98
  const requestOptions = {
51
99
  url: requestUrl,
52
100
  headers: {
@@ -54,20 +102,23 @@ class SpoUserRemoveCommand extends SpoCommand {
54
102
  },
55
103
  responseType: 'json'
56
104
  };
57
- try {
58
- await request.post(requestOptions);
59
- }
60
- catch (err) {
61
- this.handleRejectedODataJsonPromise(err);
62
- }
105
+ const userInstance = await request.get(requestOptions);
106
+ return userInstance.value[0];
107
+ }
108
+ async getEntraGroup(options) {
109
+ return options.entraGroupId ? await entraGroup.getGroupById(options.entraGroupId) : await entraGroup.getGroupByDisplayName(options.entraGroupName);
63
110
  }
64
111
  }
65
112
  _SpoUserRemoveCommand_instances = new WeakSet(), _SpoUserRemoveCommand_initTelemetry = function _SpoUserRemoveCommand_initTelemetry() {
66
113
  this.telemetry.push((args) => {
67
114
  Object.assign(this.telemetryProperties, {
68
- id: (!(!args.options.id)).toString(),
69
- loginName: (!(!args.options.loginName)).toString(),
70
- force: (!(!args.options.force)).toString()
115
+ id: typeof args.options.id !== 'undefined',
116
+ loginName: typeof args.options.loginName !== 'undefined',
117
+ email: typeof args.options.email !== 'undefined',
118
+ userName: typeof args.options.userName !== 'undefined',
119
+ entraGroupId: typeof args.options.entraGroupId !== 'undefined',
120
+ entraGroupName: typeof args.options.entraGroupName !== 'undefined',
121
+ force: !!args.options.force
71
122
  });
72
123
  });
73
124
  }, _SpoUserRemoveCommand_initOptions = function _SpoUserRemoveCommand_initOptions() {
@@ -77,15 +128,41 @@ _SpoUserRemoveCommand_instances = new WeakSet(), _SpoUserRemoveCommand_initTelem
77
128
  option: '-i, --id [id]'
78
129
  }, {
79
130
  option: '--loginName [loginName]'
131
+ }, {
132
+ option: '--email [email]'
133
+ }, {
134
+ option: '--userName [userName]'
135
+ }, {
136
+ option: '--entraGroupId [entraGroupId]'
137
+ }, {
138
+ option: '--entraGroupName [entraGroupName]'
80
139
  }, {
81
140
  option: '-f, --force'
82
141
  });
83
142
  }, _SpoUserRemoveCommand_initValidators = function _SpoUserRemoveCommand_initValidators() {
84
143
  this.validators.push(async (args) => {
85
- return validation.isValidSharePointUrl(args.options.webUrl);
144
+ const isValidSharePointUrl = validation.isValidSharePointUrl(args.options.webUrl);
145
+ if (isValidSharePointUrl !== true) {
146
+ return isValidSharePointUrl;
147
+ }
148
+ if (args.options.id && isNaN(parseInt(args.options.id))) {
149
+ return `Specified id ${args.options.id} is not a number`;
150
+ }
151
+ if (args.options.entraGroupId && !validation.isValidGuid(args.options.entraGroupId)) {
152
+ return `${args.options.entraId} is not a valid GUID.`;
153
+ }
154
+ if (args.options.userName && !validation.isValidUserPrincipalName(args.options.userName)) {
155
+ return `${args.options.userName} is not a valid userName.`;
156
+ }
157
+ if (args.options.email && !validation.isValidUserPrincipalName(args.options.email)) {
158
+ return `${args.options.email} is not a valid email.`;
159
+ }
160
+ return true;
86
161
  });
87
162
  }, _SpoUserRemoveCommand_initOptionSets = function _SpoUserRemoveCommand_initOptionSets() {
88
- this.optionSets.push({ options: ['id', 'loginName'] });
163
+ this.optionSets.push({
164
+ options: ['id', 'loginName', 'email', 'userName', 'entraGroupId', 'entraGroupName']
165
+ });
89
166
  };
90
167
  export default new SpoUserRemoveCommand();
91
168
  //# sourceMappingURL=user-remove.js.map
@@ -58,7 +58,7 @@ class TeamsChatGetCommand extends GraphCommand {
58
58
  }
59
59
  async getChatIdByParticipants(participantsString) {
60
60
  const participants = participantsString.trim().toLowerCase().split(',').filter(e => e && e !== '');
61
- const currentUserEmail = accessToken.getUserNameFromAccessToken(auth.service.accessTokens[this.resource].accessToken).toLowerCase();
61
+ const currentUserEmail = accessToken.getUserNameFromAccessToken(auth.connection.accessTokens[this.resource].accessToken).toLowerCase();
62
62
  const existingChats = await chatUtil.findExistingChatsByParticipants([currentUserEmail, ...participants]);
63
63
  if (!existingChats || existingChats.length === 0) {
64
64
  throw 'No chat conversation was found with these participants.';
@@ -29,7 +29,7 @@ class TeamsChatListCommand extends GraphCommand {
29
29
  __classPrivateFieldGet(this, _TeamsChatListCommand_instances, "m", _TeamsChatListCommand_initValidators).call(this);
30
30
  }
31
31
  async commandAction(logger, args) {
32
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
32
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
33
33
  if (isAppOnlyAccessToken && !args.options.userId && !args.options.userName) {
34
34
  throw `The option 'userId' or 'userName' is required when obtaining chats using app only permissions`;
35
35
  }
@@ -47,7 +47,7 @@ class TeamsChatMessageSendCommand extends GraphCommand {
47
47
  }
48
48
  async ensureChatIdByUserEmails(userEmailsOption) {
49
49
  const userEmails = userEmailsOption.trim().toLowerCase().split(',').filter(e => e && e !== '');
50
- const currentUserEmail = accessToken.getUserNameFromAccessToken(auth.service.accessTokens[this.resource].accessToken).toLowerCase();
50
+ const currentUserEmail = accessToken.getUserNameFromAccessToken(auth.connection.accessTokens[this.resource].accessToken).toLowerCase();
51
51
  const existingChats = await chatUtil.findExistingChatsByParticipants([currentUserEmail, ...userEmails]);
52
52
  if (!existingChats || existingChats.length === 0) {
53
53
  const chat = await this.createConversation([currentUserEmail, ...userEmails]);
@@ -27,7 +27,7 @@ class TeamsMeetingAddCommand extends GraphCommand {
27
27
  }
28
28
  async commandAction(logger, args) {
29
29
  try {
30
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
30
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
31
31
  if (isAppOnlyAccessToken && !args.options.organizerEmail) {
32
32
  throw `The option 'organizerEmail' is required when creating a meeting using app only permissions`;
33
33
  }
@@ -30,7 +30,7 @@ class TeamsMeetingAttendancereportListCommand extends GraphCommand {
30
30
  __classPrivateFieldGet(this, _TeamsMeetingAttendancereportListCommand_instances, "m", _TeamsMeetingAttendancereportListCommand_initValidators).call(this);
31
31
  }
32
32
  async commandAction(logger, args) {
33
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
33
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
34
34
  if (isAppOnlyAccessToken && !args.options.userId && !args.options.userName && !args.options.email) {
35
35
  this.handleError(`The option 'userId', 'userName' or 'email' is required when retrieving meeting attendance report using app only permissions`);
36
36
  }
@@ -27,7 +27,7 @@ class TeamsMeetingGetCommand extends GraphCommand {
27
27
  __classPrivateFieldGet(this, _TeamsMeetingGetCommand_instances, "m", _TeamsMeetingGetCommand_initValidators).call(this);
28
28
  }
29
29
  async commandAction(logger, args) {
30
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
30
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
31
31
  if (isAppOnlyAccessToken) {
32
32
  if (!args.options.userId && !args.options.userName && !args.options.email) {
33
33
  this.handleError(`The option 'userId', 'userName' or 'email' is required when retrieving meetings using app only permissions`);
@@ -32,7 +32,7 @@ class TeamsMeetingListCommand extends GraphCommand {
32
32
  }
33
33
  async commandAction(logger, args) {
34
34
  try {
35
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
35
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
36
36
  if (isAppOnlyAccessToken && !args.options.userId && !args.options.userName && !args.options.email) {
37
37
  throw `The option 'userId', 'userName' or 'email' is required when retrieving meetings using app only permissions`;
38
38
  }
@@ -40,7 +40,7 @@ class TeamsMeetingListCommand extends GraphCommand {
40
40
  throw `The options 'userId', 'userName' and 'email' cannot be used when retrieving meetings using delegated permissions`;
41
41
  }
42
42
  if (this.verbose) {
43
- await logger.logToStderr(`Retrieving meetings for user: ${args.options.userId || args.options.userName || args.options.email || accessToken.getUserNameFromAccessToken(auth.service.accessTokens[this.resource].accessToken)}...`);
43
+ await logger.logToStderr(`Retrieving meetings for user: ${args.options.userId || args.options.userName || args.options.email || accessToken.getUserNameFromAccessToken(auth.connection.accessTokens[this.resource].accessToken)}...`);
44
44
  }
45
45
  const graphBaseUrl = await this.getGraphBaseUrl(args.options);
46
46
  const meetingUrls = await this.getMeetingJoinUrls(graphBaseUrl, args.options);
@@ -31,7 +31,7 @@ class TeamsMeetingTranscriptListCommand extends GraphCommand {
31
31
  }
32
32
  async commandAction(logger, args) {
33
33
  try {
34
- const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.service.accessTokens[this.resource].accessToken);
34
+ const isAppOnlyAccessToken = accessToken.isAppOnlyAccessToken(auth.connection.accessTokens[this.resource].accessToken);
35
35
  if (this.verbose) {
36
36
  await logger.logToStderr(`Retrieving transcript list for the given meeting...`);
37
37
  }
@@ -25,7 +25,7 @@ class TenantIdGetCommand extends Command {
25
25
  async commandAction(logger, args) {
26
26
  let domainName = args.options.domainName;
27
27
  if (!domainName) {
28
- const userName = accessToken.getUserNameFromAccessToken(auth.service.accessTokens[auth.defaultResource].accessToken);
28
+ const userName = accessToken.getUserNameFromAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
29
29
  domainName = userName.split('@')[1];
30
30
  }
31
31
  const requestOptions = {
@@ -29,7 +29,7 @@ class TenantInfoGetCommand extends GraphCommand {
29
29
  let domainName = args.options.domainName;
30
30
  const tenantId = args.options.tenantId;
31
31
  if (!domainName && !tenantId) {
32
- const userName = accessToken.getUserNameFromAccessToken(auth.service.accessTokens[auth.defaultResource].accessToken);
32
+ const userName = accessToken.getUserNameFromAccessToken(auth.connection.accessTokens[auth.defaultResource].accessToken);
33
33
  domainName = userName.split('@')[1];
34
34
  }
35
35
  let requestUrl = `${this.resource}/v1.0/tenantRelationships/`;
@@ -23,15 +23,15 @@ class UtilAccessTokenGetCommand extends Command {
23
23
  async commandAction(logger, args) {
24
24
  let resource = args.options.resource;
25
25
  if (resource.toLowerCase() === 'sharepoint') {
26
- if (auth.service.spoUrl) {
27
- resource = auth.service.spoUrl;
26
+ if (auth.connection.spoUrl) {
27
+ resource = auth.connection.spoUrl;
28
28
  }
29
29
  else {
30
30
  throw `SharePoint URL undefined. Use the 'm365 spo set --url https://contoso.sharepoint.com' command to set the URL`;
31
31
  }
32
32
  }
33
33
  else if (resource.toLowerCase() === 'graph') {
34
- resource = Auth.getEndpointForResource('https://graph.microsoft.com', auth.service.cloudType);
34
+ resource = Auth.getEndpointForResource('https://graph.microsoft.com', auth.connection.cloudType);
35
35
  }
36
36
  try {
37
37
  const accessToken = await auth.ensureAccessToken(resource, logger, this.debug, args.options.new);
@@ -3,24 +3,28 @@ 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 _YammerGroupListCommand_instances, _YammerGroupListCommand_initTelemetry, _YammerGroupListCommand_initOptions, _YammerGroupListCommand_initValidators;
6
+ var _VivaEngageGroupListCommand_instances, _VivaEngageGroupListCommand_initTelemetry, _VivaEngageGroupListCommand_initOptions, _VivaEngageGroupListCommand_initValidators;
7
7
  import request from '../../../../request.js';
8
- import YammerCommand from '../../../base/YammerCommand.js';
8
+ import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
9
9
  import commands from '../../commands.js';
10
- class YammerGroupListCommand extends YammerCommand {
10
+ import yammerCommands from './yammerCommands.js';
11
+ class VivaEngageGroupListCommand extends VivaEngageCommand {
11
12
  get name() {
12
- return commands.GROUP_LIST;
13
+ return commands.ENGAGE_GROUP_LIST;
13
14
  }
14
15
  get description() {
15
- return 'Returns the list of groups in a Yammer network or the groups for a specific user';
16
+ return 'Returns the list of groups in a Viva Engage network or the groups for a specific user';
17
+ }
18
+ alias() {
19
+ return [yammerCommands.GROUP_LIST];
16
20
  }
17
21
  constructor() {
18
22
  super();
19
- _YammerGroupListCommand_instances.add(this);
23
+ _VivaEngageGroupListCommand_instances.add(this);
20
24
  this.items = [];
21
- __classPrivateFieldGet(this, _YammerGroupListCommand_instances, "m", _YammerGroupListCommand_initTelemetry).call(this);
22
- __classPrivateFieldGet(this, _YammerGroupListCommand_instances, "m", _YammerGroupListCommand_initOptions).call(this);
23
- __classPrivateFieldGet(this, _YammerGroupListCommand_instances, "m", _YammerGroupListCommand_initValidators).call(this);
25
+ __classPrivateFieldGet(this, _VivaEngageGroupListCommand_instances, "m", _VivaEngageGroupListCommand_initTelemetry).call(this);
26
+ __classPrivateFieldGet(this, _VivaEngageGroupListCommand_instances, "m", _VivaEngageGroupListCommand_initOptions).call(this);
27
+ __classPrivateFieldGet(this, _VivaEngageGroupListCommand_instances, "m", _VivaEngageGroupListCommand_initValidators).call(this);
24
28
  }
25
29
  defaultProperties() {
26
30
  return ['id', 'name', 'email', 'privacy', 'external', 'moderated'];
@@ -55,6 +59,7 @@ class YammerGroupListCommand extends YammerCommand {
55
59
  }
56
60
  }
57
61
  async commandAction(logger, args) {
62
+ await this.showDeprecationWarning(logger, this.alias()[0], this.name);
58
63
  this.items = []; // this will reset the items array in interactive mode
59
64
  try {
60
65
  await this.getAllItems(logger, args, 1);
@@ -65,20 +70,20 @@ class YammerGroupListCommand extends YammerCommand {
65
70
  }
66
71
  }
67
72
  }
68
- _YammerGroupListCommand_instances = new WeakSet(), _YammerGroupListCommand_initTelemetry = function _YammerGroupListCommand_initTelemetry() {
73
+ _VivaEngageGroupListCommand_instances = new WeakSet(), _VivaEngageGroupListCommand_initTelemetry = function _VivaEngageGroupListCommand_initTelemetry() {
69
74
  this.telemetry.push((args) => {
70
75
  Object.assign(this.telemetryProperties, {
71
76
  userId: args.options.userId !== undefined,
72
77
  limit: args.options.limit !== undefined
73
78
  });
74
79
  });
75
- }, _YammerGroupListCommand_initOptions = function _YammerGroupListCommand_initOptions() {
80
+ }, _VivaEngageGroupListCommand_initOptions = function _VivaEngageGroupListCommand_initOptions() {
76
81
  this.options.unshift({
77
82
  option: '--userId [userId]'
78
83
  }, {
79
84
  option: '--limit [limit]'
80
85
  });
81
- }, _YammerGroupListCommand_initValidators = function _YammerGroupListCommand_initValidators() {
86
+ }, _VivaEngageGroupListCommand_initValidators = function _VivaEngageGroupListCommand_initValidators() {
82
87
  this.validators.push(async (args) => {
83
88
  if (args.options.userId && typeof args.options.userId !== 'number') {
84
89
  return `${args.options.userId} is not a number`;
@@ -89,5 +94,5 @@ _YammerGroupListCommand_instances = new WeakSet(), _YammerGroupListCommand_initT
89
94
  return true;
90
95
  });
91
96
  };
92
- export default new YammerGroupListCommand();
93
- //# sourceMappingURL=group-list.js.map
97
+ export default new VivaEngageGroupListCommand();
98
+ //# sourceMappingURL=engage-group-list.js.map
@@ -3,25 +3,30 @@ 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 _YammerGroupUserAddCommand_instances, _YammerGroupUserAddCommand_initTelemetry, _YammerGroupUserAddCommand_initOptions, _YammerGroupUserAddCommand_initValidators;
6
+ var _VivaEngageGroupUserAddCommand_instances, _VivaEngageGroupUserAddCommand_initTelemetry, _VivaEngageGroupUserAddCommand_initOptions, _VivaEngageGroupUserAddCommand_initValidators;
7
7
  import request from '../../../../request.js';
8
- import YammerCommand from '../../../base/YammerCommand.js';
8
+ import VivaEngageCommand from '../../../base/VivaEngageCommand.js';
9
9
  import commands from '../../commands.js';
10
- class YammerGroupUserAddCommand extends YammerCommand {
10
+ import yammerCommands from './yammerCommands.js';
11
+ class VivaEngageGroupUserAddCommand extends VivaEngageCommand {
11
12
  get name() {
12
- return commands.GROUP_USER_ADD;
13
+ return commands.ENGAGE_GROUP_USER_ADD;
13
14
  }
14
15
  get description() {
15
- return 'Adds a user to a Yammer Group';
16
+ return 'Adds a user to a Viva Engage Group';
17
+ }
18
+ alias() {
19
+ return [yammerCommands.GROUP_USER_ADD];
16
20
  }
17
21
  constructor() {
18
22
  super();
19
- _YammerGroupUserAddCommand_instances.add(this);
20
- __classPrivateFieldGet(this, _YammerGroupUserAddCommand_instances, "m", _YammerGroupUserAddCommand_initTelemetry).call(this);
21
- __classPrivateFieldGet(this, _YammerGroupUserAddCommand_instances, "m", _YammerGroupUserAddCommand_initOptions).call(this);
22
- __classPrivateFieldGet(this, _YammerGroupUserAddCommand_instances, "m", _YammerGroupUserAddCommand_initValidators).call(this);
23
+ _VivaEngageGroupUserAddCommand_instances.add(this);
24
+ __classPrivateFieldGet(this, _VivaEngageGroupUserAddCommand_instances, "m", _VivaEngageGroupUserAddCommand_initTelemetry).call(this);
25
+ __classPrivateFieldGet(this, _VivaEngageGroupUserAddCommand_instances, "m", _VivaEngageGroupUserAddCommand_initOptions).call(this);
26
+ __classPrivateFieldGet(this, _VivaEngageGroupUserAddCommand_instances, "m", _VivaEngageGroupUserAddCommand_initValidators).call(this);
23
27
  }
24
28
  async commandAction(logger, args) {
29
+ await this.showDeprecationWarning(logger, this.alias()[0], this.name);
25
30
  const requestOptions = {
26
31
  url: `${this.resource}/v1/group_memberships.json`,
27
32
  headers: {
@@ -43,14 +48,14 @@ class YammerGroupUserAddCommand extends YammerCommand {
43
48
  }
44
49
  }
45
50
  }
46
- _YammerGroupUserAddCommand_instances = new WeakSet(), _YammerGroupUserAddCommand_initTelemetry = function _YammerGroupUserAddCommand_initTelemetry() {
51
+ _VivaEngageGroupUserAddCommand_instances = new WeakSet(), _VivaEngageGroupUserAddCommand_initTelemetry = function _VivaEngageGroupUserAddCommand_initTelemetry() {
47
52
  this.telemetry.push((args) => {
48
53
  Object.assign(this.telemetryProperties, {
49
54
  id: typeof args.options.id !== 'undefined',
50
55
  email: typeof args.options.email !== 'undefined'
51
56
  });
52
57
  });
53
- }, _YammerGroupUserAddCommand_initOptions = function _YammerGroupUserAddCommand_initOptions() {
58
+ }, _VivaEngageGroupUserAddCommand_initOptions = function _VivaEngageGroupUserAddCommand_initOptions() {
54
59
  this.options.unshift({
55
60
  option: '--groupId <groupId>'
56
61
  }, {
@@ -58,7 +63,7 @@ _YammerGroupUserAddCommand_instances = new WeakSet(), _YammerGroupUserAddCommand
58
63
  }, {
59
64
  option: '--email [email]'
60
65
  });
61
- }, _YammerGroupUserAddCommand_initValidators = function _YammerGroupUserAddCommand_initValidators() {
66
+ }, _VivaEngageGroupUserAddCommand_initValidators = function _VivaEngageGroupUserAddCommand_initValidators() {
62
67
  this.validators.push(async (args) => {
63
68
  if (typeof args.options.groupId !== 'number') {
64
69
  return `${args.options.groupId} is not a number`;
@@ -69,5 +74,5 @@ _YammerGroupUserAddCommand_instances = new WeakSet(), _YammerGroupUserAddCommand
69
74
  return true;
70
75
  });
71
76
  };
72
- export default new YammerGroupUserAddCommand();
73
- //# sourceMappingURL=group-user-add.js.map
77
+ export default new VivaEngageGroupUserAddCommand();
78
+ //# sourceMappingURL=engage-group-user-add.js.map