@pnp/cli-microsoft365 11.1.0-beta.317d8bb → 11.1.0-beta.53bc672

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 (182) hide show
  1. package/.devproxy/api-specs/sharepoint.yaml +23 -0
  2. package/allCommands.json +1 -1
  3. package/allCommandsFull.json +1 -1
  4. package/dist/Auth.js +10 -7
  5. package/dist/Command.js +2 -2
  6. package/dist/auth/msalCachePlugin.js +6 -2
  7. package/dist/autocomplete.js +6 -2
  8. package/dist/chili/chili.js +2 -1
  9. package/dist/cli/cli.js +4 -2
  10. package/dist/config.js +0 -1
  11. package/dist/m365/adaptivecard/commands/adaptivecard-send.js +2 -2
  12. package/dist/m365/app/commands/permission/permission-list.js +4 -2
  13. package/dist/m365/booking/commands/business/business-list.js +5 -0
  14. package/dist/m365/commands/setup.js +6 -3
  15. package/dist/m365/commands/status.js +5 -1
  16. package/dist/m365/connection/commands/connection-list.js +5 -1
  17. package/dist/m365/entra/commands/app/app-role-add.js +1 -1
  18. package/dist/m365/entra/commands/group/group-add.js +1 -1
  19. package/dist/m365/entra/commands/group/group-set.js +1 -1
  20. package/dist/m365/entra/commands/m365group/m365group-add.js +0 -1
  21. package/dist/m365/file/commands/convert/convert-pdf.js +1 -6
  22. package/dist/m365/flow/commands/environment/environment-list.js +5 -0
  23. package/dist/m365/flow/commands/flow-export.js +8 -5
  24. package/dist/m365/flow/commands/run/run-get.js +3 -3
  25. package/dist/m365/graph/commands/schemaextension/schemaextension-set.js +1 -1
  26. package/dist/m365/onedrive/commands/onedrive-list.js +5 -0
  27. package/dist/m365/outlook/commands/roomlist/roomlist-list.js +5 -0
  28. package/dist/m365/pa/commands/app/app-export.js +1 -1
  29. package/dist/m365/pa/commands/app/app-get.js +1 -1
  30. package/dist/m365/pa/commands/environment/environment-list.js +5 -0
  31. package/dist/m365/planner/commands/tenant/tenant-settings-list.js +5 -0
  32. package/dist/m365/pp/commands/environment/environment-list.js +10 -23
  33. package/dist/m365/pp/commands/solution/solution-publisher-get.js +1 -1
  34. package/dist/m365/purview/commands/retentionevent/retentionevent-list.js +5 -0
  35. package/dist/m365/purview/commands/retentioneventtype/retentioneventtype-list.js +5 -0
  36. package/dist/m365/purview/commands/retentionlabel/retentionlabel-list.js +5 -0
  37. package/dist/m365/spfx/commands/package/package-generate.js +3 -1
  38. package/dist/m365/spfx/commands/project/base-project-command.js +13 -5
  39. package/dist/m365/spfx/commands/project/project-doctor/rules/FN021007_PKG_only_one_rush_stack_compiler_installed.js +1 -1
  40. package/dist/m365/spfx/commands/project/project-externalize/rules/PnPJsRule.js +6 -4
  41. package/dist/m365/spfx/commands/project/project-model/ScssFile.js +3 -1
  42. package/dist/m365/spfx/commands/project/project-model/TsFile.js +6 -2
  43. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.15.2.js +1 -1
  44. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.16.0.js +2 -0
  45. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.17.0.js +2 -0
  46. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.18.0.js +2 -0
  47. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.19.0.js +2 -0
  48. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.20.0.js +2 -0
  49. package/dist/m365/spfx/commands/project/project-upgrade/upgrade-1.21.0.js +2 -0
  50. package/dist/m365/spfx/commands/spfx-doctor.js +5 -5
  51. package/dist/m365/spo/commands/file/file-add.js +4 -2
  52. package/dist/m365/spo/commands/file/file-rename.js +3 -4
  53. package/dist/m365/spo/commands/hubsite/hubsite-list.js +1 -1
  54. package/dist/m365/spo/commands/listitem/listitem-attachment-add.js +1 -1
  55. package/dist/m365/spo/commands/listitem/listitem-batch-set.js +9 -5
  56. package/dist/m365/spo/commands/page/clientsidepages.js +12 -12
  57. package/dist/m365/spo/commands/page/page-add.js +4 -2
  58. package/dist/m365/spo/commands/page/page-clientsidewebpart-add.js +1 -0
  59. package/dist/m365/spo/commands/page/page-set.js +4 -2
  60. package/dist/m365/spo/commands/page/page-text-add.js +1 -0
  61. package/dist/m365/spo/commands/propertybag/propertybag-base.js +34 -54
  62. package/dist/m365/spo/commands/site/site-alert-list.js +107 -0
  63. package/dist/m365/spo/commands/theme/theme-apply.js +1 -1
  64. package/dist/m365/spo/commands/web/web-reindex.js +17 -27
  65. package/dist/m365/spo/commands.js +1 -0
  66. package/dist/m365/teams/commands/tab/tab-add.js +9 -3
  67. package/dist/m365/viva/commands/connections/connections-app-create.js +1 -1
  68. package/dist/m365/viva/commands/engage/engage-community-user-add.js +1 -1
  69. package/dist/m365/viva/commands/engage/engage-community-user-remove.js +1 -1
  70. package/dist/telemetry.js +3 -1
  71. package/dist/utils/accessToken.js +4 -0
  72. package/dist/utils/cache.js +3 -2
  73. package/dist/utils/customAppScope.js +1 -1
  74. package/dist/utils/directoryExtension.js +1 -1
  75. package/dist/utils/entraAdministrativeUnit.js +1 -1
  76. package/dist/utils/entraApp.js +2 -2
  77. package/dist/utils/entraDevice.js +1 -1
  78. package/dist/utils/entraServicePrincipal.js +2 -2
  79. package/dist/utils/formatting.js +1 -1
  80. package/dist/utils/md.js +2 -2
  81. package/dist/utils/odata.js +2 -0
  82. package/dist/utils/planner.js +1 -1
  83. package/dist/utils/powerPlatform.js +2 -2
  84. package/dist/utils/roleDefinition.js +2 -2
  85. package/dist/utils/spo.js +10 -11
  86. package/dist/utils/urlUtil.js +1 -1
  87. package/dist/utils/validation.js +1 -1
  88. package/dist/utils/vivaEngage.js +3 -3
  89. package/docs/docs/cmd/booking/business/business-get.mdx +18 -1
  90. package/docs/docs/cmd/booking/business/business-list.mdx +18 -1
  91. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-add.mdx +19 -0
  92. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-get.mdx +19 -0
  93. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-list.mdx +19 -0
  94. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-add.mdx +21 -0
  95. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-get.mdx +19 -0
  96. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-list.mdx +19 -0
  97. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-member-remove.mdx +21 -0
  98. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-remove.mdx +21 -0
  99. package/docs/docs/cmd/entra/administrativeunit/administrativeunit-roleassignment-add.mdx +19 -0
  100. package/docs/docs/cmd/entra/approleassignment/approleassignment-add.mdx +18 -0
  101. package/docs/docs/cmd/entra/approleassignment/approleassignment-list.mdx +18 -0
  102. package/docs/docs/cmd/entra/approleassignment/approleassignment-remove.mdx +20 -0
  103. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-add.mdx +14 -0
  104. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-get.mdx +15 -0
  105. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-list.mdx +14 -0
  106. package/docs/docs/cmd/entra/enterpriseapp/enterpriseapp-remove.mdx +14 -0
  107. package/docs/docs/cmd/entra/group/group-add.mdx +18 -0
  108. package/docs/docs/cmd/entra/group/group-get.mdx +18 -0
  109. package/docs/docs/cmd/entra/group/group-list.mdx +18 -0
  110. package/docs/docs/cmd/entra/group/group-member-add.mdx +20 -0
  111. package/docs/docs/cmd/entra/group/group-member-list.mdx +18 -0
  112. package/docs/docs/cmd/entra/group/group-member-remove.mdx +20 -0
  113. package/docs/docs/cmd/entra/group/group-member-set.mdx +20 -0
  114. package/docs/docs/cmd/entra/group/group-remove.mdx +20 -0
  115. package/docs/docs/cmd/entra/group/group-set.mdx +20 -0
  116. package/docs/docs/cmd/entra/groupsetting/groupsetting-add.mdx +19 -0
  117. package/docs/docs/cmd/entra/groupsetting/groupsetting-get.mdx +19 -0
  118. package/docs/docs/cmd/entra/groupsetting/groupsetting-list.mdx +19 -0
  119. package/docs/docs/cmd/entra/groupsetting/groupsetting-remove.mdx +21 -0
  120. package/docs/docs/cmd/entra/groupsetting/groupsetting-set.mdx +21 -0
  121. package/docs/docs/cmd/entra/m365group/m365group-add.mdx +19 -0
  122. package/docs/docs/cmd/entra/m365group/m365group-get.mdx +19 -0
  123. package/docs/docs/cmd/entra/m365group/m365group-list.mdx +19 -0
  124. package/docs/docs/cmd/entra/m365group/m365group-remove.mdx +21 -0
  125. package/docs/docs/cmd/entra/m365group/m365group-renew.mdx +21 -0
  126. package/docs/docs/cmd/entra/m365group/m365group-report-activitycounts.mdx +18 -0
  127. package/docs/docs/cmd/entra/m365group/m365group-report-activitydetail.mdx +18 -0
  128. package/docs/docs/cmd/entra/m365group/m365group-report-activityfilecounts.mdx +18 -0
  129. package/docs/docs/cmd/entra/m365group/m365group-report-activitygroupcounts.mdx +18 -0
  130. package/docs/docs/cmd/entra/m365group/m365group-report-activitystorage.mdx +18 -0
  131. package/docs/docs/cmd/entra/m365group/m365group-set.mdx +21 -0
  132. package/docs/docs/cmd/entra/m365group/m365group-teamify.mdx +19 -0
  133. package/docs/docs/cmd/entra/multitenant/multitenant-add.mdx +18 -0
  134. package/docs/docs/cmd/entra/multitenant/multitenant-get.mdx +18 -1
  135. package/docs/docs/cmd/entra/multitenant/multitenant-remove.mdx +20 -0
  136. package/docs/docs/cmd/entra/multitenant/multitenant-set.mdx +20 -0
  137. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-add.mdx +20 -0
  138. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-list.mdx +17 -0
  139. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-remove.mdx +20 -0
  140. package/docs/docs/cmd/entra/oauth2grant/oauth2grant-set.mdx +20 -0
  141. package/docs/docs/cmd/entra/organization/organization-list.mdx +19 -2
  142. package/docs/docs/cmd/entra/pim/pim-role-assignment-add.mdx +18 -0
  143. package/docs/docs/cmd/entra/pim/pim-role-assignment-eligibility-list.mdx +18 -0
  144. package/docs/docs/cmd/entra/pim/pim-role-assignment-list.mdx +18 -0
  145. package/docs/docs/cmd/entra/pim/pim-role-assignment-remove.mdx +18 -0
  146. package/docs/docs/cmd/entra/pim/pim-role-request-list.mdx +18 -0
  147. package/docs/docs/cmd/graph/directoryextension/directoryextension-add.mdx +18 -0
  148. package/docs/docs/cmd/graph/directoryextension/directoryextension-get.mdx +18 -0
  149. package/docs/docs/cmd/graph/directoryextension/directoryextension-list.mdx +18 -0
  150. package/docs/docs/cmd/graph/directoryextension/directoryextension-remove.mdx +20 -0
  151. package/docs/docs/cmd/graph/schemaextension/schemaextension-add.mdx +18 -1
  152. package/docs/docs/cmd/graph/schemaextension/schemaextension-get.mdx +18 -1
  153. package/docs/docs/cmd/graph/schemaextension/schemaextension-list.mdx +19 -1
  154. package/docs/docs/cmd/graph/schemaextension/schemaextension-remove.mdx +20 -0
  155. package/docs/docs/cmd/graph/schemaextension/schemaextension-set.mdx +23 -3
  156. package/docs/docs/cmd/graph/subscription/subscription-add.mdx +27 -6
  157. package/docs/docs/cmd/purview/retentionevent/retentionevent-add.mdx +18 -0
  158. package/docs/docs/cmd/purview/retentionevent/retentionevent-get.mdx +18 -0
  159. package/docs/docs/cmd/purview/retentionevent/retentionevent-list.mdx +18 -0
  160. package/docs/docs/cmd/purview/retentionevent/retentionevent-remove.mdx +20 -0
  161. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-add.mdx +18 -0
  162. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-get.mdx +18 -0
  163. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-list.mdx +18 -0
  164. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-remove.mdx +21 -1
  165. package/docs/docs/cmd/purview/retentioneventtype/retentioneventtype-set.mdx +21 -1
  166. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-add.mdx +11 -0
  167. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-get.mdx +12 -1
  168. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-list.mdx +12 -1
  169. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-remove.mdx +14 -1
  170. package/docs/docs/cmd/purview/retentionlabel/retentionlabel-set.mdx +13 -0
  171. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-get.mdx +18 -0
  172. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-list.mdx +18 -0
  173. package/docs/docs/cmd/purview/sensitivitylabel/sensitivitylabel-policysettings-list.mdx +18 -0
  174. package/docs/docs/cmd/purview/threatassessment/threatassessment-add.mdx +12 -0
  175. package/docs/docs/cmd/purview/threatassessment/threatassessment-get.mdx +19 -0
  176. package/docs/docs/cmd/purview/threatassessment/threatassessment-list.mdx +19 -0
  177. package/docs/docs/cmd/spo/site/site-alert-list.mdx +187 -0
  178. package/eslint-rules/lib/rules/correct-command-class-name.js +18 -2
  179. package/eslint.config.mjs +270 -0
  180. package/npm-shrinkwrap.json +1279 -2304
  181. package/package.json +25 -23
  182. package/.eslintrc.cjs +0 -289
@@ -0,0 +1,187 @@
1
+ import Global from '/docs/cmd/_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # spo site alert list
6
+
7
+ Lists all SharePoint list alerts
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 spo site alert list [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-u, --webUrl <webUrl>`
19
+ : The URL of the SharePoint site.
20
+
21
+ `--listId [listId]`
22
+ : The ID of the SharePoint list. Specify either `listId`, `listUrl`, or `listTitle`, but not more than one.
23
+
24
+ `--listUrl [listUrl]`
25
+ : The URL of the SharePoint list. Specify either `listId`, `listUrl`, or `listTitle`, but not more than one.
26
+
27
+ `--listTitle [listTitle]`
28
+ : The title of the SharePoint list. Specify either `listId`, `listUrl`, or `listTitle`, but not more than one.
29
+
30
+ `--userName [userName]`
31
+ : The user name to filter alerts for. Specify either `userName` or `userId`, but not both.
32
+
33
+ `--userId [userId]`
34
+ : The user ID to filter alerts for. Specify either `userName` or `userId`, but not both.
35
+ ```
36
+
37
+ <Global />
38
+
39
+ ## Permissions
40
+
41
+ <Tabs>
42
+ <TabItem value="Delegated">
43
+
44
+ | Resource | Permissions |
45
+ |------------|----------------------|
46
+ | SharePoint | AllSites.FullControl |
47
+
48
+ </TabItem>
49
+ <TabItem value="Application">
50
+
51
+ | Resource | Permissions |
52
+ |------------|-----------------------|
53
+ | SharePoint | Sites.FullControl.All |
54
+
55
+ </TabItem>
56
+ </Tabs>
57
+
58
+ ## Examples
59
+
60
+ List all alerts for a SharePoint site:
61
+
62
+ ```sh
63
+ m365 spo site alert list --webUrl https://contoso.sharepoint.com/sites/Marketing
64
+ ```
65
+
66
+ List alerts for a SharePoint list by listUrl:
67
+
68
+ ```sh
69
+ m365 spo site alert list --webUrl https://contoso.sharepoint.com/sites/Marketing --listUrl /sites/Marketing/lists/Tasks
70
+ ```
71
+
72
+ List alerts for a specific user by userId:
73
+
74
+ ```sh
75
+ m365 spo site alert list --webUrl https://contoso.sharepoint.com/sites/Marketing --userId 7cbb4c8d-8e4d-4d2e-9c6f-3f1d8b2e6a0e
76
+ ```
77
+
78
+ List alerts for a specific list by title and user by username:
79
+
80
+ ```sh
81
+ m365 spo site alert list --webUrl https://contoso.sharepoint.com/sites/Marketing --listTitle "Tasks" --userName jane.doe@contoso.com
82
+ ```
83
+
84
+ ## Response
85
+
86
+ <Tabs>
87
+ <TabItem value="JSON">
88
+
89
+ ```json
90
+ [
91
+ {
92
+ "AlertFrequency": 0,
93
+ "AlertTemplateName": "SPAlertTemplateType.DocumentLibrary",
94
+ "AlertType": 1,
95
+ "AlwaysNotify": false,
96
+ "DeliveryChannels": 1,
97
+ "EventType": -1,
98
+ "Filter": "",
99
+ "ID": "c52b4bf0-add0-4323-b670-f765bb46337b",
100
+ "Properties": [
101
+ {
102
+ "Key": "dispformurl",
103
+ "Value": "Shared Documents/Forms/DispForm.aspx",
104
+ "ValueType": "Edm.String"
105
+ }
106
+ ],
107
+ "Status": 0,
108
+ "Title": "Documents: ProjectPlan.docx",
109
+ "UserId": 9,
110
+ "Item": {
111
+ "Id": 37326,
112
+ "FileRef": "/sites/marketing/Shared Documents/ProjectPlan.docx",
113
+ "GUID": "ef5cc60b-71c0-4357-a291-14274234efde"
114
+ },
115
+ "List": {
116
+ "Id": "6b4f195c-02da-47f4-8237-065b96258cf3",
117
+ "Title": "Documents",
118
+ "RootFolder": {
119
+ "ServerRelativeUrl": "/sites/marketing/Shared Documents"
120
+ }
121
+ },
122
+ "User": {
123
+ "Id": 9,
124
+ "IsHiddenInUI": false,
125
+ "LoginName": "i:0#.f|membership|jane.doe@contoso.onmicrosoft.com",
126
+ "Title": "Jane Doe",
127
+ "PrincipalType": 1,
128
+ "Email": "jane.doe@contoso.onmicrosoft.com",
129
+ "Expiration": "",
130
+ "IsEmailAuthenticationGuestUser": false,
131
+ "IsShareByEmailGuestUser": false,
132
+ "IsSiteAdmin": false,
133
+ "UserId": {
134
+ "NameId": "10037ffeaed549a5",
135
+ "NameIdIssuer": "urn:federation:microsoftonline"
136
+ },
137
+ "UserPrincipalName": "jane.doe@contoso.onmicrosoft.com"
138
+ }
139
+ }
140
+ ]
141
+ ```
142
+
143
+ </TabItem>
144
+ <TabItem value="Text">
145
+
146
+ ```txt
147
+ ID Title UserPrincipalName
148
+ ------------------------------------ --------------------------- --------------------
149
+ fa5115ee-0c72-4d17-9fda-ee2451ba1c6d Documents: ProjectPlan.docx jane.doe@contoso.com
150
+ ```
151
+
152
+ </TabItem>
153
+ <TabItem value="CSV">
154
+
155
+ ```csv
156
+ AlertFrequency,AlertTemplateName,AlertType,AlwaysNotify,DeliveryChannels,EventType,Filter,ID,Status,Title,UserId,UserPrincipalName
157
+ 0,SPAlertTemplateType.DocumentLibrary,1,0,1,-1,,fa5115ee-0c72-4d17-9fda-ee2451ba1c6d,0,Documents: ProjectPlan.docx,6,jane.doe@contoso.com
158
+ ```
159
+
160
+ </TabItem>
161
+ <TabItem value="Markdown">
162
+
163
+ ```md
164
+ # spo site alert list --webUrl "https://contoso.sharepoint.com/sites/marketing" --listUrl "/sites/marketing/Shared Documents"
165
+
166
+ Date: 10/6/2025
167
+
168
+ ## Documents: ProjectPlan.docx (c52b4bf0-add0-4323-b670-f765bb46337b)
169
+
170
+ Property | Value
171
+ ---------|-------
172
+ AlertFrequency | 0
173
+ AlertTemplateName | SPAlertTemplateType.DocumentLibrary
174
+ AlertType | 1
175
+ AlwaysNotify | false
176
+ DeliveryChannels | 1
177
+ EventType | -1
178
+ Filter |
179
+ ID | c52b4bf0-add0-4323-b670-f765bb46337b
180
+ Status | 0
181
+ Title | Documents: ProjectPlan.docx
182
+ UserId | 9
183
+ UserPrincipalName | jane.doe@contoso.com
184
+ ```
185
+
186
+ </TabItem>
187
+ </Tabs>
@@ -42,7 +42,7 @@ function capitalizeWord(word, capitalized) {
42
42
  return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase();
43
43
  }
44
44
 
45
- function breakWords(longWord, dictionary) {
45
+ function breakWords(longWord, dictionary) {
46
46
  const words = [];
47
47
  for (let i = 0; i < dictionary.length; i++) {
48
48
  if (longWord.indexOf(dictionary[i]) === 0) {
@@ -72,7 +72,23 @@ module.exports = {
72
72
  fixable: 'code',
73
73
  messages: {
74
74
  invalidName: "'{{ actualClassName }}' is not a valid command class name. Expected '{{ expectedClassName }}'"
75
- }
75
+ },
76
+ schema: [
77
+ {
78
+ type: 'array',
79
+ items: { type: 'string' },
80
+ uniqueItems: true,
81
+ title: 'dictionary',
82
+ description: 'List of known word parts used to break long command names into words.'
83
+ },
84
+ {
85
+ type: 'array',
86
+ items: { type: 'string' },
87
+ uniqueItems: true,
88
+ title: 'capitalized',
89
+ description: 'List of known word parts that should be capitalized.'
90
+ }
91
+ ]
76
92
  },
77
93
  create: context => {
78
94
  return {
@@ -0,0 +1,270 @@
1
+ import globals from 'globals';
2
+ import js from '@eslint/js';
3
+ import parser from '@typescript-eslint/parser';
4
+ import tsPlugin from '@typescript-eslint/eslint-plugin';
5
+ import mocha from 'eslint-plugin-mocha';
6
+ import stylistic from '@stylistic/eslint-plugin';
7
+ import cliM365 from './eslint-rules/lib/index.js';
8
+
9
+ // List of words used in command names used for word breaking
10
+ // Sorted alphabetically for easy maintenance
11
+ const dictionary = [
12
+ 'access',
13
+ 'activation',
14
+ 'activations',
15
+ 'adaptive',
16
+ 'administrative',
17
+ 'ai',
18
+ 'app',
19
+ 'application',
20
+ 'apply',
21
+ 'approve',
22
+ 'assessment',
23
+ 'assets',
24
+ 'assignment',
25
+ 'audit',
26
+ 'azure',
27
+ 'bin',
28
+ 'builder',
29
+ 'call',
30
+ 'card',
31
+ 'catalog',
32
+ 'checklist',
33
+ 'client',
34
+ 'comm',
35
+ 'command',
36
+ 'community',
37
+ 'container',
38
+ 'content',
39
+ 'conversation',
40
+ 'custom',
41
+ 'customizer',
42
+ 'dataverse',
43
+ 'default',
44
+ 'definition',
45
+ 'dev',
46
+ 'details',
47
+ 'directory',
48
+ 'eligibility',
49
+ 'enterprise',
50
+ 'entra',
51
+ 'event',
52
+ 'eventreceiver',
53
+ 'external',
54
+ 'externalize',
55
+ 'folder',
56
+ 'fun',
57
+ 'group',
58
+ 'groupify',
59
+ 'groupmembership',
60
+ 'guest',
61
+ 'health',
62
+ 'hide',
63
+ 'historical',
64
+ 'home',
65
+ 'hub',
66
+ 'in',
67
+ 'info',
68
+ 'inheritance',
69
+ 'init',
70
+ 'install',
71
+ 'installed',
72
+ 'is',
73
+ 'issue',
74
+ 'item',
75
+ 'label',
76
+ 'list',
77
+ 'link',
78
+ 'log',
79
+ 'login',
80
+ 'logout',
81
+ 'mailbox',
82
+ 'management',
83
+ 'member',
84
+ 'membership',
85
+ 'messaging',
86
+ 'model',
87
+ 'multitenant',
88
+ 'm365',
89
+ 'news',
90
+ 'oauth2',
91
+ 'office365',
92
+ 'one',
93
+ 'open',
94
+ 'ops',
95
+ 'org',
96
+ 'organization',
97
+ 'owner',
98
+ 'permission',
99
+ 'pim',
100
+ 'place',
101
+ 'policy',
102
+ 'profile',
103
+ 'pronouns',
104
+ 'property',
105
+ 'record',
106
+ 'records',
107
+ 'recycle',
108
+ 'registration',
109
+ 'request',
110
+ 'resolver',
111
+ 'retention',
112
+ 'revoke',
113
+ 'role',
114
+ 'room',
115
+ 'schema',
116
+ 'search',
117
+ 'sensitivity',
118
+ 'service',
119
+ 'session',
120
+ 'set',
121
+ 'setting',
122
+ 'settings',
123
+ 'setup',
124
+ 'sharing',
125
+ 'side',
126
+ 'site',
127
+ 'status',
128
+ 'storage',
129
+ 'table',
130
+ 'teams',
131
+ 'threat',
132
+ 'to',
133
+ 'todo',
134
+ 'token',
135
+ 'type',
136
+ 'unit',
137
+ 'url',
138
+ 'user',
139
+ 'value',
140
+ 'web',
141
+ 'webhook'
142
+ ];
143
+
144
+ // List of words that should be capitalized in a specific way
145
+ const capitalized = [
146
+ 'OAuth2'
147
+ ];
148
+
149
+ // Sort dictionary to put the longest words first
150
+ const sortedDictionary = dictionary.sort((a, b) => b.length - a.length);
151
+
152
+ export default [
153
+ // Ignored files
154
+ {
155
+ ignores: [
156
+ "**/package-generate/assets/**",
157
+ "**/test-projects/**",
158
+ "clientsidepages.ts",
159
+ "**/*.d.ts",
160
+ "**/*.js",
161
+ "**/*.cjs"
162
+ ]
163
+ },
164
+ // JS recommendations
165
+ js.configs.recommended,
166
+ {
167
+ plugins: { '@typescript-eslint': tsPlugin },
168
+ rules: tsPlugin.configs.recommended.rules
169
+ },
170
+ {
171
+ languageOptions: {
172
+ ecmaVersion: 2015,
173
+ sourceType: 'module',
174
+ parser: parser,
175
+ parserOptions: {
176
+ ecmaVersion: 2015,
177
+ sourceType: 'module',
178
+ project: './tsconfig.json'
179
+ },
180
+ globals: {
181
+ ...globals.node,
182
+ ...globals.commonjs,
183
+ ...globals.es2021,
184
+ ...globals.mocha,
185
+ NodeJS: 'readonly'
186
+ }
187
+ },
188
+ plugins: {
189
+ '@typescript-eslint': tsPlugin,
190
+ 'cli-microsoft365': cliM365,
191
+ '@stylistic': stylistic,
192
+ mocha
193
+ },
194
+ rules: {
195
+ 'cli-microsoft365/correct-command-class-name': ['error', sortedDictionary, capitalized],
196
+ 'cli-microsoft365/correct-command-name': 'error',
197
+ 'cli-microsoft365/no-by-server-relative-url-usage': 'error',
198
+ '@stylistic/indent': ['error', 2],
199
+ '@stylistic/semi': ['error'],
200
+ '@stylistic/comma-dangle': ['error', 'never'],
201
+ '@stylistic/brace-style': [
202
+ 'error',
203
+ 'stroustrup',
204
+ { allowSingleLine: true }
205
+ ],
206
+ '@typescript-eslint/no-explicit-any': 'off',
207
+ '@typescript-eslint/no-var-requires': 'off',
208
+ '@typescript-eslint/no-inferrable-types': 'off',
209
+ '@typescript-eslint/no-non-null-assertion': 'off',
210
+ '@typescript-eslint/explicit-module-boundary-types': [
211
+ 'error',
212
+ { allowArgumentsExplicitlyTypedAsAny: true }
213
+ ],
214
+ '@typescript-eslint/no-unused-vars': [
215
+ 'error',
216
+ { argsIgnorePattern: '^_' }
217
+ ],
218
+ camelcase: ['error', {
219
+ allow: [
220
+ 'child_process',
221
+ 'error_description',
222
+ '_Child_Items_',
223
+ '_Object_Type_',
224
+ 'FN\\d+',
225
+ 'OData__.*',
226
+ 'vti_.*',
227
+ 'Query.*',
228
+ 'app_displayname',
229
+ 'access_token',
230
+ 'expires_on',
231
+ 'extension_*'
232
+ ]
233
+ }],
234
+ curly: ['error', 'all'],
235
+ eqeqeq: ['error', 'always'],
236
+ '@typescript-eslint/naming-convention': [
237
+ 'error',
238
+ {
239
+ selector: ['method'],
240
+ format: ['camelCase']
241
+ }
242
+ ],
243
+ '@typescript-eslint/explicit-function-return-type': ['error', { allowExpressions: true }],
244
+ 'mocha/no-identical-title': 'error',
245
+ '@typescript-eslint/no-floating-promises': 'error',
246
+ '@typescript-eslint/no-empty-function': 'error'
247
+ }
248
+ },
249
+ {
250
+ files: ['**/*.spec.ts'],
251
+ rules: {
252
+ 'no-console': 'error',
253
+ '@typescript-eslint/no-empty-function': 'off',
254
+ 'cli-microsoft365/correct-command-class-name': 'off',
255
+ 'cli-microsoft365/correct-command-name': 'off'
256
+ }
257
+ },
258
+ {
259
+ files: ['**/viva/commands/engage/**'],
260
+ rules: {
261
+ camelcase: 'off'
262
+ }
263
+ },
264
+ {
265
+ files: ['**/*.mjs'],
266
+ rules: {
267
+ '@typescript-eslint/explicit-function-return-type': 'off'
268
+ }
269
+ }
270
+ ];