@pnp/cli-microsoft365 11.7.0-beta.71e4ac5 → 11.7.0-beta.b9f508d

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 (26) hide show
  1. package/allCommands.json +1 -1
  2. package/allCommandsFull.json +1 -1
  3. package/dist/m365/entra/commands/user/user-license-add.js +2 -1
  4. package/dist/m365/entra/commands/user/user-license-list.js +4 -9
  5. package/dist/m365/entra/commands/user/user-license-remove.js +2 -1
  6. package/dist/m365/outlook/commands/event/event-cancel.js +103 -0
  7. package/dist/m365/outlook/commands/event/event-remove.js +104 -0
  8. package/dist/m365/outlook/commands.js +2 -0
  9. package/dist/m365/spfx/commands/SpfxCompatibilityMatrix.js +628 -0
  10. package/dist/m365/spfx/commands/project/DeployWorkflow.js +2 -2
  11. package/dist/m365/spfx/commands/project/project-azuredevops-pipeline-add.js +13 -1
  12. package/dist/m365/spfx/commands/project/project-github-workflow-add.js +16 -1
  13. package/dist/m365/spfx/commands/spfx-doctor.js +5 -631
  14. package/dist/m365/teams/commands/chat/chat-message-list.js +43 -4
  15. package/dist/utils/entraApp.js +9 -2
  16. package/dist/utils/spfx.js +59 -0
  17. package/docs/docs/cmd/entra/license/license-list.mdx +19 -0
  18. package/docs/docs/cmd/entra/m365group/m365group-conversation-list.mdx +19 -0
  19. package/docs/docs/cmd/entra/m365group/m365group-conversation-post-list.mdx +19 -0
  20. package/docs/docs/cmd/entra/user/user-license-add.mdx +19 -0
  21. package/docs/docs/cmd/entra/user/user-license-list.mdx +18 -1
  22. package/docs/docs/cmd/entra/user/user-license-remove.mdx +21 -0
  23. package/docs/docs/cmd/outlook/event/event-cancel.mdx +85 -0
  24. package/docs/docs/cmd/outlook/event/event-remove.mdx +85 -0
  25. package/docs/docs/cmd/teams/chat/chat-message-list.mdx +23 -2
  26. package/package.json +2 -1
@@ -11,9 +11,24 @@ export const options = z.strictObject({
11
11
  error: e => `'${e.input}' is not a valid value for option chatId.`
12
12
  })
13
13
  .alias('i'),
14
+ createdEndDateTime: z.string()
15
+ .refine(time => validation.isValidISODateTime(time), {
16
+ error: e => `'${e.input}' is not a valid ISO date-time string for option createdEndDateTime.`
17
+ })
18
+ .optional(),
14
19
  endDateTime: z.string()
15
20
  .refine(time => validation.isValidISODateTime(time), {
16
21
  error: e => `'${e.input}' is not a valid ISO date-time string for option endDateTime.`
22
+ })
23
+ .optional(),
24
+ modifiedStartDateTime: z.string()
25
+ .refine(time => validation.isValidISODateTime(time), {
26
+ error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedStartDateTime.`
27
+ })
28
+ .optional(),
29
+ modifiedEndDateTime: z.string()
30
+ .refine(time => validation.isValidISODateTime(time), {
31
+ error: e => `'${e.input}' is not a valid ISO date-time string for option modifiedEndDateTime.`
17
32
  })
18
33
  .optional()
19
34
  });
@@ -30,13 +45,37 @@ class TeamsChatMessageListCommand extends GraphCommand {
30
45
  get schema() {
31
46
  return options;
32
47
  }
48
+ getRefinedSchema(schema) {
49
+ return schema
50
+ .refine(options => !(options.endDateTime && options.createdEndDateTime), {
51
+ error: 'Specify either endDateTime or createdEndDateTime, but not both.'
52
+ })
53
+ .refine(options => !(options.createdEndDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
54
+ error: 'You cannot combine createdEndDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
55
+ })
56
+ .refine(options => !(options.endDateTime && (options.modifiedStartDateTime || options.modifiedEndDateTime)), {
57
+ error: 'You cannot combine endDateTime with modifiedStartDateTime or modifiedEndDateTime. These filters operate on different properties.'
58
+ });
59
+ }
33
60
  async commandAction(logger, args) {
61
+ if (args.options.endDateTime) {
62
+ await this.warn(logger, `Option 'endDateTime' is deprecated. Please use 'createdEndDateTime' instead.`);
63
+ args.options.createdEndDateTime = args.options.endDateTime;
64
+ }
34
65
  try {
35
66
  let apiUrl = `${this.resource}/v1.0/chats/${args.options.chatId}/messages`;
36
- if (args.options.endDateTime) {
37
- // You can only filter results if the request URL contains the $orderby and $filter query parameters configured for the same property;
38
- // otherwise, the $filter query option is ignored.
39
- apiUrl += `?$filter=createdDateTime lt ${args.options.endDateTime}&$orderby=createdDateTime desc`;
67
+ if (args.options.createdEndDateTime) {
68
+ apiUrl += `?$filter=createdDateTime lt ${args.options.createdEndDateTime}&$orderby=createdDateTime desc`;
69
+ }
70
+ else if (args.options.modifiedStartDateTime || args.options.modifiedEndDateTime) {
71
+ const filters = [];
72
+ if (args.options.modifiedStartDateTime) {
73
+ filters.push(`lastModifiedDateTime gt ${args.options.modifiedStartDateTime}`);
74
+ }
75
+ if (args.options.modifiedEndDateTime) {
76
+ filters.push(`lastModifiedDateTime lt ${args.options.modifiedEndDateTime}`);
77
+ }
78
+ apiUrl += `?$filter=${filters.join(' and ')}&$orderby=lastModifiedDateTime desc`;
40
79
  }
41
80
  const items = await odata.getAllItems(apiUrl);
42
81
  if (args.options.output && args.options.output !== 'json') {
@@ -336,8 +336,15 @@ export const entraApp = {
336
336
  },
337
337
  responseType: 'json'
338
338
  };
339
- const app = await request.get(requestOptions);
340
- return app;
339
+ try {
340
+ return await request.get(requestOptions);
341
+ }
342
+ catch (error) {
343
+ if (error?.response?.status === 404) {
344
+ throw Error(`App with objectId '${objectId}' not found in Microsoft Entra ID.`);
345
+ }
346
+ throw error;
347
+ }
341
348
  }
342
349
  };
343
350
  //# sourceMappingURL=entraApp.js.map
@@ -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
@@ -16,6 +16,25 @@ m365 entra license 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 | LicenseAssignment.Read.All |
27
+
28
+ </TabItem>
29
+ <TabItem value="Application">
30
+
31
+ | Resource | Permissions |
32
+ |-----------------|----------------------------|
33
+ | Microsoft Graph | LicenseAssignment.Read.All |
34
+
35
+ </TabItem>
36
+ </Tabs>
37
+
19
38
  ## Examples
20
39
 
21
40
  List all licenses within the tenant.
@@ -24,6 +24,25 @@ m365 entra m365group conversation list [options]
24
24
 
25
25
  <Global />
26
26
 
27
+ ## Permissions
28
+
29
+ <Tabs>
30
+ <TabItem value="Delegated">
31
+
32
+ | Resource | Permissions |
33
+ |-----------------|-----------------------------|
34
+ | Microsoft Graph | Group-Conversation.Read.All |
35
+
36
+ </TabItem>
37
+ <TabItem value="Application">
38
+
39
+ | Resource | Permissions |
40
+ |-----------------|-----------------------------|
41
+ | Microsoft Graph | Group-Conversation.Read.All |
42
+
43
+ </TabItem>
44
+ </Tabs>
45
+
27
46
  ## Examples
28
47
 
29
48
  Lists conversations for the Microsoft 365 group specified by id.
@@ -27,6 +27,25 @@ m365 entra m365group conversation post list [options]
27
27
 
28
28
  <Global />
29
29
 
30
+ ## Permissions
31
+
32
+ <Tabs>
33
+ <TabItem value="Delegated">
34
+
35
+ | Resource | Permissions |
36
+ |-----------------|-----------------------------|
37
+ | Microsoft Graph | Group-Conversation.Read.All |
38
+
39
+ </TabItem>
40
+ <TabItem value="Application">
41
+
42
+ | Resource | Permissions |
43
+ |-----------------|-----------------------------|
44
+ | Microsoft Graph | Group-Conversation.Read.All |
45
+
46
+ </TabItem>
47
+ </Tabs>
48
+
30
49
  ## Examples
31
50
 
32
51
  Lists the posts of the specific conversation of Microsoft 365 group by groupId
@@ -35,6 +35,25 @@ The user must have a `usageLocation` value in order to assign a license to it.
35
35
 
36
36
  :::
37
37
 
38
+ ## Permissions
39
+
40
+ <Tabs>
41
+ <TabItem value="Delegated">
42
+
43
+ | Resource | Permissions |
44
+ |-----------------|---------------------------------|
45
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
46
+
47
+ </TabItem>
48
+ <TabItem value="Application">
49
+
50
+ | Resource | Permissions |
51
+ |-----------------|---------------------------------|
52
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
53
+
54
+ </TabItem>
55
+ </Tabs>
56
+
38
57
  ## Examples
39
58
 
40
59
  Assign specific licenses to a specific user by UPN.
@@ -28,10 +28,27 @@ m365 entra user license list [options]
28
28
 
29
29
  :::tip
30
30
 
31
- If you don't specify any option, the command will list the license details of the current logged in user. This does not work when using application permissions.
31
+ If you don't specify any option, the command will list the license details of the current logged in user.
32
32
 
33
33
  :::
34
34
 
35
+ ## Permissions
36
+
37
+ <Tabs>
38
+ <TabItem value="Delegated">
39
+
40
+ | Resource | Permissions |
41
+ |-----------------|----------------------------|
42
+ | Microsoft Graph | LicenseAssignment.Read.All |
43
+
44
+ </TabItem>
45
+ <TabItem value="Application">
46
+
47
+ This command does not support application permissions.
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
35
52
  ## Examples
36
53
 
37
54
  List license details of the current logged in user.
@@ -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 license remove
4
6
 
@@ -28,6 +30,25 @@ m365 entra user license remove [options]
28
30
 
29
31
  <Global />
30
32
 
33
+ ## Permissions
34
+
35
+ <Tabs>
36
+ <TabItem value="Delegated">
37
+
38
+ | Resource | Permissions |
39
+ |-----------------|---------------------------------|
40
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
41
+
42
+ </TabItem>
43
+ <TabItem value="Application">
44
+
45
+ | Resource | Permissions |
46
+ |-----------------|---------------------------------|
47
+ | Microsoft Graph | LicenseAssignment.ReadWrite.All |
48
+
49
+ </TabItem>
50
+ </Tabs>
51
+
31
52
  ## Examples
32
53
 
33
54
  Remove specific licenses from a specific user by UPN.
@@ -0,0 +1,85 @@
1
+ import Global from '../../_global.mdx';
2
+ import TabItem from '@theme/TabItem';
3
+ import Tabs from '@theme/Tabs';
4
+
5
+ # outlook event cancel
6
+
7
+ Cancels a calendar event
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 outlook event cancel [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-i, --id <id>`
19
+ : ID of the event.
20
+
21
+ `--userId [userId]`
22
+ : ID of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
23
+
24
+ `--userName [userName]`
25
+ : UPN of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
26
+
27
+ `--comment [comment]`
28
+ : A comment about the cancellation sent to all the attendees.
29
+
30
+ `-f, --force`
31
+ : Don't prompt for confirmation.
32
+ ```
33
+
34
+ <Global />
35
+
36
+ ## Permissions
37
+
38
+ <Tabs>
39
+ <TabItem value="Delegated">
40
+
41
+ | Resource | Permissions |
42
+ |-----------------|---------------------|
43
+ | Microsoft Graph | Calendars.ReadWrite |
44
+
45
+ </TabItem>
46
+ <TabItem value="Application">
47
+
48
+ | Resource | Permissions |
49
+ |-----------------|---------------------|
50
+ | Microsoft Graph | Calendars.ReadWrite |
51
+
52
+ </TabItem>
53
+ </Tabs>
54
+
55
+ ## Remarks
56
+
57
+ :::info
58
+
59
+ This action is only available to the organizer of the event.
60
+
61
+ :::
62
+
63
+ ## Examples
64
+
65
+ Cancel a calendar event from the current logged-in user without a comment
66
+
67
+ ```sh
68
+ m365 outlook event cancel --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
69
+ ```
70
+
71
+ Cancel a calendar event from a specific user with a comment
72
+
73
+ ```sh
74
+ m365 outlook event cancel --userName "john.doe@contoso.com" --comment "Cancelling for this week due to all hands" --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
75
+ ```
76
+
77
+ Cancel a calendar event from a specific user specified by user ID
78
+
79
+ ```sh
80
+ m365 outlook event cancel --userId 6799fd1a-723b-4eb7-8e52-41ae530274ca --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
81
+ ```
82
+
83
+ ## Response
84
+
85
+ The command won't return a response on success.
@@ -0,0 +1,85 @@
1
+ import Global from '../../_global.mdx';
2
+ import TabItem from '@theme/TabItem';
3
+ import Tabs from '@theme/Tabs';
4
+
5
+ # outlook event remove
6
+
7
+ Removes an event from a calendar
8
+
9
+ ## Usage
10
+
11
+ ```sh
12
+ m365 outlook event remove [options]
13
+ ```
14
+
15
+ ## Options
16
+
17
+ ```md definition-list
18
+ `-i, --id <id>`
19
+ : ID of the event.
20
+
21
+ `--userId [userId]`
22
+ : ID of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
23
+
24
+ `--userName [userName]`
25
+ : UPN of the user that owns the calendar. Specify either `userId` or `userName`, but not both. This option is required when using application permissions.
26
+
27
+ `--permanent`
28
+ : Permanently remove the event, don't send it to the recycle bin.
29
+
30
+ `-f, --force`
31
+ : Don't prompt for confirmation.
32
+ ```
33
+
34
+ <Global />
35
+
36
+ ## Permissions
37
+
38
+ <Tabs>
39
+ <TabItem value="Delegated">
40
+
41
+ | Resource | Permissions |
42
+ |-----------------|---------------------|
43
+ | Microsoft Graph | Calendars.ReadWrite |
44
+
45
+ </TabItem>
46
+ <TabItem value="Application">
47
+
48
+ | Resource | Permissions |
49
+ |-----------------|---------------------|
50
+ | Microsoft Graph | Calendars.ReadWrite |
51
+
52
+ </TabItem>
53
+ </Tabs>
54
+
55
+ ## Remarks
56
+
57
+ :::warning
58
+
59
+ When using the `--permanent` option, the event will be permanently deleted and cannot be recovered.
60
+
61
+ :::
62
+
63
+ ## Examples
64
+
65
+ Remove a calendar event from the current logged-in user
66
+
67
+ ```sh
68
+ m365 outlook event remove --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
69
+ ```
70
+
71
+ Permanently remove a calendar event from a specific user
72
+
73
+ ```sh
74
+ m365 outlook event remove --userName "john.doe@contoso.com" --permanent --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
75
+ ```
76
+
77
+ Remove a calendar event from a specific user specified by user ID
78
+
79
+ ```sh
80
+ m365 outlook event remove --userId 6799fd1a-723b-4eb7-8e52-41ae530274ca --id AAMkAGVmMDEzMTM4LTZmYWUtNDdkNC1hMDZiLTU1OGY5OTZhYmY4OABGAAAAAAAiQ8W967B7TKBjgx9rVEURBwAiIsqMbYjsT5e-T7KzowPTAAAAAAENAAAiIsqMbYjsT5e-T7KzowPTAAAa_WKzAAA=
81
+ ```
82
+
83
+ ## Response
84
+
85
+ The command won't return a response on success.
@@ -18,8 +18,17 @@ m365 teams chat message list [options]
18
18
  `-i, --chatId <chatId>`
19
19
  : The ID of the chat conversation.
20
20
 
21
- `--endDateTime [endDateTime]`
21
+ `--createdEndDateTime [createdEndDateTime]`
22
22
  : Time indicating the exclusive end of a time range when the message was created.
23
+
24
+ `--endDateTime [endDateTime]`
25
+ : (deprecated. Use `createdEndDateTime` instead) Time indicating the exclusive end of a time range when the message was created.
26
+
27
+ `--modifiedStartDateTime [modifiedStartDateTime]`
28
+ : Time indicating the inclusive start of a time range when the message was last modified. Cannot be combined with `createdEndDateTime`.
29
+
30
+ `--modifiedEndDateTime [modifiedEndDateTime]`
31
+ : Time indicating the exclusive end of a time range when the message was last modified. Cannot be combined with `createdEndDateTime`.
23
32
  ```
24
33
 
25
34
  <Global />
@@ -54,7 +63,19 @@ m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread
54
63
  List messages from a Microsoft Teams chat conversation created before November 1, 2022
55
64
 
56
65
  ```sh
57
- m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --endDateTime 2022-11-01T00:00:00Z
66
+ m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --createdEndDateTime 2022-11-01T00:00:00Z
67
+ ```
68
+
69
+ List messages from a Microsoft Teams chat conversation modified after October 1, 2025
70
+
71
+ ```sh
72
+ m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --modifiedStartDateTime 2025-10-01T00:00:00Z
73
+ ```
74
+
75
+ List messages from a Microsoft Teams chat conversation modified between October 1, 2025 and November 1, 2025
76
+
77
+ ```sh
78
+ m365 teams chat message list --chatId 19:2da4c29f6d7041eca70b638b43d45437@thread.v2 --modifiedStartDateTime 2025-10-01T00:00:00Z --modifiedEndDateTime 2025-11-01T00:00:00Z
58
79
  ```
59
80
 
60
81
  ## Response
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pnp/cli-microsoft365",
3
- "version": "11.7.0-beta.71e4ac5",
3
+ "version": "11.7.0-beta.b9f508d",
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>",