@pnp/cli-microsoft365 11.7.0-beta.293104a → 11.7.0-beta.71c58f3

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 (28) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/m365/outlook/commands/calendargroup/calendargroup-set.js +115 -0
  4. package/dist/m365/outlook/commands.js +1 -0
  5. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +628 -0
  6. package/dist/m365/spfx/commands/project/DeployWorkflow.js +2 -2
  7. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +13 -1
  8. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +16 -1
  9. package/dist/m365/spfx/commands/spfx-doctor.js +5 -631
  10. package/dist/utils/spfx.js +59 -0
  11. package/docs/docs/cmd/entra/user/user-groupmembership-list.mdx +19 -0
  12. package/docs/docs/cmd/entra/user/user-guest-add.mdx +19 -0
  13. package/docs/docs/cmd/entra/user/user-password-validate.mdx +12 -0
  14. package/docs/docs/cmd/entra/user/user-recyclebinitem-clear.mdx +21 -0
  15. package/docs/docs/cmd/entra/user/user-recyclebinitem-list.mdx +19 -0
  16. package/docs/docs/cmd/entra/user/user-recyclebinitem-remove.mdx +21 -0
  17. package/docs/docs/cmd/entra/user/user-recyclebinitem-restore.mdx +19 -0
  18. package/docs/docs/cmd/entra/user/user-registrationdetails-list.mdx +19 -0
  19. package/docs/docs/cmd/entra/user/user-session-revoke.mdx +21 -0
  20. package/docs/docs/cmd/entra/user/user-signin-list.mdx +19 -0
  21. package/docs/docs/cmd/exo/approleassignment/approleassignment-add.mdx +19 -0
  22. package/docs/docs/cmd/file/convert/convert-pdf.mdx +21 -0
  23. package/docs/docs/cmd/file/file-add.mdx +21 -0
  24. package/docs/docs/cmd/file/file-copy.mdx +21 -0
  25. package/docs/docs/cmd/file/file-list.mdx +19 -0
  26. package/docs/docs/cmd/file/file-move.mdx +21 -0
  27. package/docs/docs/cmd/outlook/calendargroup/calendargroup-set.mdx +83 -0
  28. package/package.json +2 -1
@@ -1,3 +1,4 @@
1
+ import { Range, coerce, gt, validRange } from 'semver';
1
2
  export const spfx = {
2
3
  isReactProject(project) {
3
4
  return (typeof project.yoRcJson !== 'undefined' &&
@@ -11,6 +12,64 @@ export const spfx = {
11
12
  typeof project.yoRcJson['@microsoft/generator-sharepoint'] !== 'undefined' &&
12
13
  project.yoRcJson["@microsoft/generator-sharepoint"].framework === 'knockout') ||
13
14
  typeof project.packageJson?.dependencies?.['knockout'] !== 'undefined';
15
+ },
16
+ getHighestNodeVersion(versionRange) {
17
+ if (!versionRange) {
18
+ throw new Error('Node version range was not provided.');
19
+ }
20
+ const ranges = versionRange
21
+ .split('||')
22
+ .map(range => range.trim())
23
+ .filter(range => range.length > 0);
24
+ let highestMajor = null;
25
+ let exactVersion = null;
26
+ const simpleVersionPattern = /^\d+(\.\d+(\.\d+)?)?$/;
27
+ if (ranges.every(r => simpleVersionPattern.test(r))) {
28
+ const highest = ranges.reduce((best, curr) => gt(coerce(curr), coerce(best)) ? curr : best);
29
+ const parts = highest.split('.');
30
+ if (parts.length >= 3) {
31
+ return highest;
32
+ }
33
+ if (parts.length === 2) {
34
+ return `${highest}.x`;
35
+ }
36
+ }
37
+ for (const rangeString of ranges) {
38
+ const normalized = validRange(rangeString);
39
+ if (!normalized) {
40
+ continue;
41
+ }
42
+ const rangeObj = new Range(normalized);
43
+ let maxMajor = 0;
44
+ // Analyze the range to find the maximum major version
45
+ for (const comparatorSet of rangeObj.set) {
46
+ for (const comparator of comparatorSet) {
47
+ if (comparator.operator === '<') {
48
+ // Exclusive upper bound: <17.0.0 means max major is 16
49
+ maxMajor = Math.max(maxMajor, comparator.semver.major - 1);
50
+ }
51
+ else if (comparator.operator === '<=') {
52
+ // Inclusive upper bound: <=17.0.0 means we can use exactly that version
53
+ maxMajor = Math.max(maxMajor, comparator.semver.major);
54
+ // Store the exact version for <= comparator
55
+ if (highestMajor === null || comparator.semver.major > highestMajor) {
56
+ exactVersion = comparator.semver.version;
57
+ }
58
+ }
59
+ else if (comparator.operator === '>=' || comparator.operator === '>') {
60
+ // For lower bounds use the major version
61
+ maxMajor = Math.max(maxMajor, comparator.semver.major);
62
+ }
63
+ }
64
+ }
65
+ // Track the highest major version across all ranges
66
+ highestMajor = Math.max(highestMajor ?? 0, maxMajor);
67
+ }
68
+ if (highestMajor === null) {
69
+ throw new Error(`Unable to resolve the highest Node version for range '${versionRange}'.`);
70
+ }
71
+ // Return exact version if we have a <= comparator, otherwise use .x
72
+ return exactVersion || `${highestMajor}.x`;
14
73
  }
15
74
  };
16
75
  //# sourceMappingURL=spfx.js.map
@@ -30,6 +30,25 @@ m365 entra user groupmembership list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|------------------------------------------|
40
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|------------------------------------------|
47
+ | Microsoft Graph | User.ReadBasic.All, GroupMember.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Retrieves groups that the user is a member of
@@ -39,6 +39,25 @@ m365 entra user guest add [options]
39
39
 
40
40
  <Global />
41
41
 
42
+ ## Permissions
43
+
44
+ <Tabs>
45
+ <TabItem value="Delegated">
46
+
47
+ | Resource | Permissions |
48
+ |-----------------|-----------------|
49
+ | Microsoft Graph | User.Invite.All |
50
+
51
+ </TabItem>
52
+ <TabItem value="Application">
53
+
54
+ | Resource | Permissions |
55
+ |-----------------|-----------------|
56
+ | Microsoft Graph | User.Invite.All |
57
+
58
+ </TabItem>
59
+ </Tabs>
60
+
42
61
  ## Examples
43
62
 
44
63
  Invite a user via email and set the display name.
@@ -29,6 +29,18 @@ This command is based on an API that is currently in preview and is subject to c
29
29
 
30
30
  :::
31
31
 
32
+ ## Permissions
33
+
34
+ <Tabs>
35
+ <TabItem value="Delegated">
36
+
37
+ | Resource | Permissions |
38
+ |-----------------|----------------|
39
+ | Microsoft Graph | User.ReadWrite |
40
+
41
+ </TabItem>
42
+ </Tabs>
43
+
32
44
  ## Examples
33
45
 
34
46
  Validate password _cli365P@ssW0rd_ against the organization's password validation policy.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem clear
4
6
 
@@ -33,6 +35,25 @@ After running this command, it may take a minute before all deleted users are ef
33
35
 
34
36
  :::
35
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
36
57
  ## Examples
37
58
 
38
59
  Removes all users from the tenant recycle bin.
@@ -16,6 +16,25 @@ m365 entra user recyclebinitem list [options]
16
16
 
17
17
  <Global />
18
18
 
19
+ ## Permissions
20
+
21
+ <Tabs>
22
+ <TabItem value="Delegated">
23
+
24
+ | Resource | Permissions |
25
+ |-----------------|---------------|
26
+ | Microsoft Graph | User.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|---------------|
33
+ | Microsoft Graph | User.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all removed users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user recyclebinitem remove
4
6
 
@@ -36,6 +38,25 @@ After running this command, it may take a minute before the deleted user is effe
36
38
 
37
39
  :::
38
40
 
41
+ ## Permissions
42
+
43
+ <Tabs>
44
+ <TabItem value="Delegated">
45
+
46
+ | Resource | Permissions |
47
+ |-----------------|------------------------|
48
+ | Microsoft Graph | User.DeleteRestore.All |
49
+
50
+ </TabItem>
51
+ <TabItem value="Application">
52
+
53
+ | Resource | Permissions |
54
+ |-----------------|------------------------|
55
+ | Microsoft Graph | User.DeleteRestore.All |
56
+
57
+ </TabItem>
58
+ </Tabs>
59
+
39
60
  ## Examples
40
61
 
41
62
  Removes a specific user from the recycle bin.
@@ -35,6 +35,25 @@ After running this command, it may take a minute before the user will reappear i
35
35
 
36
36
  :::
37
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|------------------------|
45
+ | Microsoft Graph | User.DeleteRestore.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|------------------------|
52
+ | Microsoft Graph | User.DeleteRestore.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
38
57
  ## Examples
39
58
 
40
59
  Restore user from the recycle bin.
@@ -77,6 +77,25 @@ When multiple values are specified for `--registeredMethods` option, the command
77
77
 
78
78
  :::
79
79
 
80
+ ## Permissions
81
+
82
+ <Tabs>
83
+ <TabItem value="Delegated">
84
+
85
+ | Resource | Permissions |
86
+ |-----------------|-------------------|
87
+ | Microsoft Graph | AuditLog.Read.All |
88
+
89
+ </TabItem>
90
+ <TabItem value="Application">
91
+
92
+ | Resource | Permissions |
93
+ |-----------------|-------------------|
94
+ | Microsoft Graph | AuditLog.Read.All |
95
+
96
+ </TabItem>
97
+ </Tabs>
98
+
80
99
  ## Examples
81
100
 
82
101
  Retrieve registration details for all users.
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # entra user session revoke
4
6
 
@@ -40,6 +42,25 @@ This API doesn't revoke sign-in sessions for external users, because external us
40
42
 
41
43
  :::
42
44
 
45
+ ## Permissions
46
+
47
+ <Tabs>
48
+ <TabItem value="Delegated">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|-------------------------|
52
+ | Microsoft Graph | User.RevokeSessions.All |
53
+
54
+ </TabItem>
55
+ <TabItem value="Application">
56
+
57
+ | Resource | Permissions |
58
+ |-----------------|-------------------------|
59
+ | Microsoft Graph | User.RevokeSessions.All |
60
+
61
+ </TabItem>
62
+ </Tabs>
63
+
43
64
  ## Examples
44
65
 
45
66
  Revoke sign-in sessions of a user specified by id
@@ -30,6 +30,25 @@ m365 entra user signin list [options]
30
30
 
31
31
  <Global />
32
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|-------------------|
40
+ | Microsoft Graph | AuditLog.Read.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|-------------------|
47
+ | Microsoft Graph | AuditLog.Read.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
33
52
  ## Examples
34
53
 
35
54
  Get all user's sign-ins in your tenant.
@@ -65,6 +65,25 @@ To use this command you must be at least **Privileged Role Administrator**.
65
65
 
66
66
  :::
67
67
 
68
+ ## Permissions
69
+
70
+ <Tabs>
71
+ <TabItem value="Delegated">
72
+
73
+ | Resource | Permissions |
74
+ |-----------------|------------------------------|
75
+ | Microsoft Graph | RoleManagement.ReadWrite.Exchange |
76
+
77
+ </TabItem>
78
+ <TabItem value="Application">
79
+
80
+ | Resource | Permissions |
81
+ |-----------------|------------------------------|
82
+ | Microsoft Graph | RoleManagement.ReadWrite.Exchange |
83
+
84
+ </TabItem>
85
+ </Tabs>
86
+
68
87
  ## Examples
69
88
 
70
89
  Assign a role specified by id to a service principal specified by id and scope the assignment to the whole tenant
@@ -1,4 +1,6 @@
1
1
  import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # file convert pdf
4
6
 
@@ -30,6 +32,25 @@ If you choose to store the converted file in a document library, CLI will store
30
32
 
31
33
  If the conversion process fails, CLI will attempt to clean up the temporary files (the source file uploaded to your tenant, if you're converting a local file to PDF, and the converted PDF file on your disk if you chose to upload the converted file to your tenant). If removing the temporary files fails, you will need to clean them up yourself. CLI will list the URL and/or path of the files to remove.
32
34
 
35
+ ## Permissions
36
+
37
+ <Tabs>
38
+ <TabItem value="Delegated">
39
+
40
+ | Resource | Permissions |
41
+ |-----------------|---------------------------------|
42
+ | Microsoft Graph | Files.ReadWrite, Sites.Read.All |
43
+
44
+ </TabItem>
45
+ <TabItem value="Application">
46
+
47
+ | Resource | Permissions |
48
+ |-----------------|-------------------------------------|
49
+ | Microsoft Graph | Files.ReadWrite.All, Sites.Read.All |
50
+
51
+ </TabItem>
52
+ </Tabs>
53
+
33
54
  ## Examples
34
55
 
35
56
  Converts local file to PDF and stores the converted file on the disk
@@ -1,4 +1,6 @@
1
1
  import Global from '../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # file add
4
6
 
@@ -31,6 +33,25 @@ The `folderUrl` must be an absolute URL to the document library where the file s
31
33
 
32
34
  By default, the `file add` command will automatically lookup the ID of the site where you want to upload the file based on the specified `folderUrl`. It will do this, by breaking the URL into chunks and incrementally calling Microsoft Graph to retrieve site information. This is necessary, because there is no other way looking at the URL to distinguish where the site URL ends and the document library URL starts. If you want to speed up uploading files, or you use resource-specific consent and your Microsoft Entra app only has access to the specific site, you can use the `siteUrl` option to specify the URL of the site yourself.
33
35
 
36
+ ## Permissions
37
+
38
+ <Tabs>
39
+ <TabItem value="Delegated">
40
+
41
+ | Resource | Permissions |
42
+ |-----------------|----------------------------------|
43
+ | Microsoft Graph | Files.ReadWrite, Sites.ReadWrite.All |
44
+
45
+ </TabItem>
46
+ <TabItem value="Application">
47
+
48
+ | Resource | Permissions |
49
+ |-----------------|---------------------|
50
+ | Microsoft Graph | Sites.ReadWrite.All |
51
+
52
+ </TabItem>
53
+ </Tabs>
54
+
34
55
  ## Examples
35
56
 
36
57
  Uploads file from the current folder to the root folder of a document library in the root site collection
@@ -1,4 +1,6 @@
1
1
  import Global from '../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # file copy
4
6
 
@@ -31,6 +33,25 @@ m365 file copy [options]
31
33
 
32
34
  <Global />
33
35
 
36
+ ## Permissions
37
+
38
+ <Tabs>
39
+ <TabItem value="Delegated">
40
+
41
+ | Resource | Permissions |
42
+ |-----------------|---------------------|
43
+ | Microsoft Graph | Sites.ReadWrite.All |
44
+
45
+ </TabItem>
46
+ <TabItem value="Application">
47
+
48
+ | Resource | Permissions |
49
+ |-----------------|---------------------|
50
+ | Microsoft Graph | Sites.ReadWrite.All |
51
+
52
+ </TabItem>
53
+ </Tabs>
54
+
34
55
  ## Examples
35
56
 
36
57
  Copy a file by server-relative URL to a document library in another site collection with server relative URL
@@ -31,6 +31,25 @@ m365 file list [options]
31
31
 
32
32
  This command is an improved version of the `spo file list` command. The main difference between the two commands is, that `file list` uses Microsoft Graph and properly supports retrieving files from large folders. Because `file list` uses Microsoft Graph and `spo file list` uses SharePoint REST APIs, the data returned by both commands is different.
33
33
 
34
+ ## Permissions
35
+
36
+ <Tabs>
37
+ <TabItem value="Delegated">
38
+
39
+ | Resource | Permissions |
40
+ |-----------------|----------------------------|
41
+ | Microsoft Graph | Files.Read, Sites.Read.All |
42
+
43
+ </TabItem>
44
+ <TabItem value="Application">
45
+
46
+ | Resource | Permissions |
47
+ |-----------------|--------------------------------|
48
+ | Microsoft Graph | Files.Read.All, Sites.Read.All |
49
+
50
+ </TabItem>
51
+ </Tabs>
52
+
34
53
  ## Examples
35
54
 
36
55
  Return all files from the folder _Shared Documents_ located in site _https://contoso.sharepoint.com/sites/project-x_
@@ -1,4 +1,6 @@
1
1
  import Global from '../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
2
4
 
3
5
  # file move
4
6
 
@@ -36,6 +38,25 @@ m365 file move [options]
36
38
  - If the source and target locations are within the same document library or drive, the command will utilize the Move DriveItem API, preserving the version history of the file.
37
39
  - If the source and target locations are in different document libraries or drives, the command will use a copy-and-delete combination to move the file. Please note that in this case, version history will not be retained.
38
40
 
41
+ ## Permissions
42
+
43
+ <Tabs>
44
+ <TabItem value="Delegated">
45
+
46
+ | Resource | Permissions |
47
+ |-----------------|---------------------|
48
+ | Microsoft Graph | Sites.ReadWrite.All |
49
+
50
+ </TabItem>
51
+ <TabItem value="Application">
52
+
53
+ | Resource | Permissions |
54
+ |-----------------|---------------------|
55
+ | Microsoft Graph | Sites.ReadWrite.All |
56
+
57
+ </TabItem>
58
+ </Tabs>
59
+
39
60
  ## Examples
40
61
 
41
62
  Move a file by server-relative URL to a folder in the same document library
@@ -0,0 +1,83 @@
1
+ import Global from '../../_global.mdx';
2
+ import Tabs from '@theme/Tabs';
3
+ import TabItem from '@theme/TabItem';
4
+
5
+ # outlook calendargroup set
6
+
7
+ Updates a calendar group for a user.
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 outlook calendargroup set [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `--id [id]`
19
+ : ID of the calendar group. Specify either `id` or `name`, but not both.
20
+
21
+ `--name [name]`
22
+ : Name of the calendar group. Specify either `id` or `name`, but not both.
23
+
24
+ `--userId [userId]`
25
+ : ID of the user. Specify either `userId` or `userName`, but not both.
26
+
27
+ `--userName [userName]`
28
+ : UPN of the user. Specify either `userId` or `userName`, but not both.
29
+
30
+ `--newName <newName>`
31
+ : New name of the calendar group.
32
+ ```
33
+
34
+ <Global />
35
+
36
+ ## Permissions
37
+
38
+ <Tabs>
39
+ <TabItem value="Delegated">
40
+
41
+ | Resource | Permissions |
42
+ |-----------------|----------------------------------------|
43
+ | Microsoft Graph | Calendars.ReadWrite, Calendars.ReadWrite.Shared |
44
+
45
+ </TabItem>
46
+ <TabItem value="Application">
47
+
48
+ | Resource | Permissions |
49
+ |-----------------|----------------------|
50
+ | Microsoft Graph | Calendars.ReadWrite |
51
+
52
+ </TabItem>
53
+ </Tabs>
54
+
55
+ :::note
56
+
57
+ When using delegated permissions, specifying `userId` or `userName` for a different user requires the `Calendars.ReadWrite.Shared` scope. When the specified user matches the signed-in user, no shared scope is needed.
58
+
59
+ :::
60
+
61
+ ## Examples
62
+
63
+ Update the calendar group specified by name for the current user.
64
+
65
+ ```sh
66
+ m365 outlook calendargroup set --name "Personal Evts" --newName "Personal Events"
67
+ ```
68
+
69
+ Update the calendar group specified by id for a user.
70
+
71
+ ```sh
72
+ m365 outlook calendargroup set --id "AAMkADIxYjJiYm" --newName "Personal Events" --userId "44288f7d-7710-4293-8c8e-36f310ed2e6a"
73
+ ```
74
+
75
+ Update the calendar group specified by name for a user specified by email.
76
+
77
+ ```sh
78
+ m365 outlook calendargroup set --name "Personal Evts" --newName "Personal Events" --userName "john.doe@contoso.com"
79
+ ```
80
+
81
+ ## Response
82
+
83
+ The command won't return a response on success.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "11.7.0-beta.293104a",
3
+ "version": "11.7.0-beta.71c58f3",
4
4
  "description": "Manage Microsoft 365 and SharePoint Framework projects on any platform",
5
5
  "license": "MIT",
6
6
  "main": "./dist/api.js",
@@ -253,6 +253,7 @@
253
253
  "van Brug, Herco <hercovanbrug@hotmail.com>",
254
254
  "Van de Voorde, Tim <tim.vdv1995@hotmail.com>",
255
255
  "van Dijk, Mark <mark@ichicraft.com>",
256
+ "Van Horn, Matt <mvanhorn@users.noreply.github.com>",
256
257
  "van Hunen, Erwin <erwin.van.hunen@outlook.com>",
257
258
  "van Iersel, Cas <cvaniersel@portiva.nl>",
258
259
  "van Rousselt, Rick <rick.vanrousselt@outlook.com>",