diff --git a/.eslintignore b/.eslintignore index fa247c345..fbedc678b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -13,3 +13,4 @@ coverage .eslintrc.cjs debug buildsystem-config.ts +settings.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 6cb5e5160..e159f60f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## 3.17.0 - 2023-Jul-24 + +- sp/graph + - Addresses #2716 - Fix for batching adding incorrect headers in certain circumstances + +- graph + - Addresses #2567 - Fixes issue with channel messages in teams. + - Addresses #2677 - Removed analytics endpoint on drive root as it's not longer supported. V4 updates will include new analytics modules that will add more features. + +- logging + - Addresses #2731 - Fixed issues with browser console levels. + ## 3.16.0 - 2023-Jun-9 ### Fixed diff --git a/docs/concepts/auth-nodejs.md b/docs/concepts/auth-nodejs.md index 4897912dc..4da888685 100644 --- a/docs/concepts/auth-nodejs.md +++ b/docs/concepts/auth-nodejs.md @@ -4,11 +4,7 @@ We support MSAL for both browser and nodejs and Azure Identity for nodejs by pro Depending on which package you want to use you will need to install an additional package from the library because of the large dependencies. -For the NodeJS MSAL package: - -`npm install @pnp/msaljsclient --save` - -We support MSAL through the [msal-node](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/README.md) library. +We support MSAL through the [msal-node](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-node/README.md) library which is included by the @pnp/nodejs package. For the Azure Identity package: @@ -18,7 +14,7 @@ We support Azure Identity through the [@azure/identity](https://github.com/Azure ## MSAL + NodeJS -The SPDefault and GraphDefault exported by the nodejs library include MSAL and takes the parameters directly. Please consider that ability deprecated and instead use the method shown below to chain the MSAL auth behavior and configure it independently. +The SPDefault and GraphDefault exported by the nodejs library include MSAL and takes the parameters directly. The following samples reference a MSAL configuration that utilizes an Azure AD App Registration, these are samples that show the typings for those objects: @@ -26,7 +22,6 @@ The following samples reference a MSAL configuration that utilizes an Azure AD A import { SPDefault, GraphDefault } from "@pnp/nodejs"; import { spfi } from "@pnp/sp"; import { graphfi } from "@pnp/graph"; -import { MSAL } from "@pnp/msaljsclient"; import { Configuration, AuthenticationParameters } from "msal"; import "@pnp/graph/users"; import "@pnp/sp/webs"; @@ -38,24 +33,43 @@ const configuration: Configuration = { } }; -const authParams: AuthenticationParameters = { - scopes: ["https://graph.microsoft.com/.default"] -}; +const sp = spfi("{site url}").using(SPDefault({ + msal: { + config: configuration, + scopes: ["https://{tenant}.sharepoint.com/.default"], + }, +})); -const sp = spfi("https://{tenant}.sharepoint.com/sites/dev").using( - SPDefault(), - MSAL(configuration, authParams) -); - -const graph = graphfi().using( - GraphDefault(), - MSAL(configuration, authParams) -); +const graph = graphfi().using(GraphDefault({ + msal: { + config: configuration, + scopes: ["https://graph.microsoft.com/.default"], + }, +})); const webData = await sp.web(); const meData = await graph.me(); ``` +## Use Nodejs MSAL behavior directly + +It is also possible to use the MSAL behavior directly if you are composing your own strategies. + +```TypeScript +import { SPDefault, GraphDefault, MSAL } from "@pnp/nodejs"; + +const sp = spfi("{site url}").using(SPDefault(), MSAL({ + config: configuration, + scopes: ["https://{tenant}.sharepoint.com/.default"], +})); + +const graph = graphfi().using(GraphDefault(), MSAL({ + config: configuration, + scopes: ["https://graph.microsoft.com/.default"], +})); + +``` + ## Azure Identity + NodeJS The following sample shows how to pass the credential object to the AzureIdentity behavior including scopes. diff --git a/docs/concepts/calling-other-endpoints.md b/docs/concepts/calling-other-endpoints.md new file mode 100644 index 000000000..b3bd957ac --- /dev/null +++ b/docs/concepts/calling-other-endpoints.md @@ -0,0 +1,212 @@ +# Calling other endpoints not currently implemented in PnPjs library + +If you find that there are endpoints that have not yet been implemented, or have changed in such a way that there are issues using the implemented endpoint, you can still make those calls and take advantage of the plumbing provided by the library. + +## SharePoint + +To issue calls against the SharePoint REST endpoints you would use one of the existing [operations](https://github.com/pnp/pnpjs/blob/version-3/packages/sp/operations.ts): + +- spGet +- spPost +- spDelete +- spPatch +and the extended post methods with additional headers. +- spPostMerge +- spPostDelete +- spPostDeleteETag + +To construct a call you will need to pass, to the operation call an SPQueryable and optionally a RequestInit object which will be merged with any existing registered init object. To learn more about queryable and the options for constructing one, check out the [documentation](../queryable/queryable.md). + +Below are a couple of examples to get you started. + +### Example spGet + +Let's pretend that the getById method didn't exist on a lists items. The example below shows two methods for constructing our SPQueryable method. + +The first is the easiest to use because, as the queryable documentation tells us, this will maintain all the registered observers on the original queryable instance. We would start with the queryable object closest to the endpoint we want to use, in this case `list`. We do this because we need to construct the full URL that will be called. Using `list` in this instance gives us the first part of the URL (e.g. `https://contoso.sharepoint.com/sites/testsite/_api/web/lists/getByTitle('My List')`) and then we can construct the remainder of the call by passing in a string. + +The second method essentially starts from scratch where the user constructs the entire url and then registers observers on the SPQuerable instance. Then uses spGet to execute the call. There are many other variations to arrive at the same outcome, all are dependent on your requirements. + +```TypeScript +import { spfi } from "@pnp/sp"; +import "@pnp/sp/webs"; +import "@pnp/sp/lists"; +import { spGet, SPQueryable, SPFx, AssignFrom } from "@pnp/sp"; + +// Establish SPFI instance passing in the appropriate behavior to register the initial observers. +const sp = spfi(...); + +// create an instance of the items queryable + +const list = sp.web.lists.getByTitle("My List"); + +// get the item with an id of 1, easiest method +const item: any = await spGet(SPQueryable(list, "items(1)")); + +// get the item with an id of 1, constructing a new queryable and registering behaviors +const spQueryable = SPQueryable("https://contoso.sharepoint.com/sites/testsite/_api/web/lists/getByTitle('My List')/items(1)").using(SPFx(this.context)); + +// ***or*** + +// For v3 the full url is require for SPQuerable when providing just a string +const spQueryable = SPQueryable("https://contoso.sharepoint.com/sites/testsite/_api/web/lists/getByTitle('My List')/items(1)").using(AssignFrom(sp)); + +// and then use spQueryable to make the request +const item: any = await spGet(spQueryable); +``` + +The resulting call will be to the endpoint: +`https://contoso.sharepoint.com/sites/testsite/_api/web/lists/getByTitle('My List')/items(1)` + +### Example spPost + +Let's now pretend that we need to get the changes on a list and want to call the `getchanges` method off list. + +```TypeScript +import { spfi } from "@pnp/sp"; +import "@pnp/sp/webs"; +import "@pnp/sp/lists"; +import { IChangeQuery, spPost, SPQueryable } from "@pnp/sp"; +import { body } from "@pnp/queryable"; + +// Establish SPFI instance passing in the appropriate behavior to register the initial observers. +const sp = spfi(...); + + +// build the changeQuery object, here we look att changes regarding Add, DeleteObject and Restore +const query: IChangeQuery = { + Add: true, + ChangeTokenEnd: null, + ChangeTokenStart: null, + DeleteObject: true, + Rename: true, + Restore: true, +}; + +// create an instance of the items queryable +const list = sp.web.lists.getByTitle("My List"); + +// get the item with an id of 1 +const changes: any = await spPost(SPQueryable(list, "getchanges"), body({query})); + +``` + +The resulting call will be to the endpoint: +`https://contoso.sharepoint.com/sites/testsite/_api/web/lists/getByTitle('My List')/getchanges` + +## Microsoft Graph + +To issue calls against the Microsoft Graph REST endpoints you would use one of the existing [operations](https://github.com/pnp/pnpjs/blob/version-3/packages/graph/operations.ts): + +- graphGet +- graphPost +- graphDelete +- graphPatch +- graphPut + +To construct a call you will need to pass, to the operation call an GraphQueryable and optionally a RequestInit object which will be merged with any existing registered init object. To learn more about queryable and the options for constructing one, check out the [documentation](../queryable/queryable.md). + +Below are a couple of examples to get you started. + +### Example graphGet + +Here's an example for getting the chats for a particular user. This uses the simplest method for constructing the graphQueryable which is to start with a instance of a queryable that is close to the endpoint we want to call, in this case `user` and then adding the additional path as a string. For a more advanced example see `spGet` above. + +```TypeScript +import { graphfi } from "@pnp/graph"; +import "@pnp/graph/users"; +import { GraphQueryable, graphGet } from "@pnp/graph"; + +// Establish GRAPHFI instance passing in the appropriate behavior to register the initial observers. +const graph = graphfi(...); + +// create an instance of the user queryable +const user = graph.users.getById('jane@contoso.com'); + +// get the chats for the user +const chat: any = await graphGet(GraphQueryable(user, "chats")); +``` + +The results call will be to the endpoint: +`https://graph.microsoft.com/v1.0/users/jane@contoso.com/chats` + +### Example graphPost + +This is an example of adding an event to a calendar. + +```TypeScript +import { graphfi } from "@pnp/graph"; +import "@pnp/graph/users"; +import "@pnp/graph/calendars"; +import { GraphQueryable, graphPost } from "@pnp/graph"; +import { body, InjectHeaders } from "@pnp/queryable"; + +// Establish GRAPHFI instance passing in the appropriate behavior to register the initial observers. +const graph = graphfi(...); + +// create an instance of the user queryable +const calendar = graph.users.getById('jane@contoso.com').calendar; + +const props = { + "subject": "Let's go for lunch", + "body": { + "contentType": "HTML", + "content": "Does noon work for you?" + }, + "start": { + "dateTime": "2017-04-15T12:00:00", + "timeZone": "Pacific Standard Time" + }, + "end": { + "dateTime": "2017-04-15T14:00:00", + "timeZone": "Pacific Standard Time" + }, + "location":{ + "displayName":"Harry's Bar" + }, + "attendees": [ + { + "emailAddress": { + "address":"samanthab@contoso.onmicrosoft.com", + "name": "Samantha Booth" + }, + "type": "required" + } + ], + "allowNewTimeProposals": true, + "transactionId":"7E163156-7762-4BEB-A1C6-729EA81755A7" +}; + +// custom request init to add timezone header. +const graphQueryable = GraphQueryable(calendar, "events").using(InjectHeaders({ + "Prefer": 'outlook.timezone="Pacific Standard Time"', +})); + +// adds a new event to the user's calendar +const event: any = await graphPost(graphQueryable, body(props)); +``` + +The results call will be to the endpoint: +`https://graph.microsoft.com/v1.0/users/jane@contoso.com/calendar/events` + +## Advanced Scenario + +If you find you need to create an instance of Queryable (for either graph or SharePoint) that would hang off the root of the url you can use the `AssignFrom` or `CopyFrom` [behaviors](../core/behaviors.md). + +```TypeScript +import { graphfi } from "@pnp/graph"; +import "@pnp/graph/users"; +import { GraphQueryable, graphPost } from "@pnp/graph"; +import { body, InjectHeaders } from "@pnp/queryable"; +import { AssignFrom } from "@pnp/core"; + +// Establish GRAPHFI instance passing in the appropriate behavior to register the initial observers. +const graph = graphfi(...); + +const chatsQueryable = GraphQueryable("chats").using(AssignFrom(graph.me)); + +const chat: any = await graphPost(chatsQueryable, body(chatBody)); +``` + +The results call will be to the endpoint: +`https://graph.microsoft.com/v1.0/chats` diff --git a/docs/getting-started.md b/docs/getting-started.md index 3d6072adb..373a5b379 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -37,7 +37,7 @@ We've created two Getting Started samples. The first uses the more traditional R [Getting started with PnPjs 3.0: 5-part series](https://youtube.com/playlist?list=PLR9nK3mnD-OWvmtj9TKE6tM7ZrUosV_vB) -In addition, [Beau Cameron](https://github.com/bcameron1231) gave the team an assist by converting the sample project from React Component to React Hooks. His version can be found in [react-pnp-js-hooks](https://github.com/pnp/sp-dev-fx-webparts/tree/main/samples/react-pnp-js-hooks). This sammple will help those struggling to establish context correctly while using the hooks conventions. +In addition, we have converted the sample project from React Component to React Hooks. This version can be found in [react-pnp-js-hooks](https://github.com/pnp/sp-dev-fx-webparts/tree/main/samples/react-pnp-js-hooks). This sample will help those struggling to establish context correctly while using the hooks conventions. The SharePoint Framework supports different versions of TypeScript natively and as of 1.14 release still doesn't natively support TypeScript 4.x. Sadly, this means that to use Version 3 of PnPjs you will need to take a few additional configuration steps to get them to work together. diff --git a/docs/graph/teams.md b/docs/graph/teams.md index 271bf3fdb..d5e198004 100644 --- a/docs/graph/teams.md +++ b/docs/graph/teams.md @@ -183,6 +183,17 @@ const newChannel = await graph.teams.getById('3531f3fb-f9ee-4f43-982a-6c90d82265 ``` +## List Messages + +```TypeScript +import { graphfi } from "@pnp/graph"; +import "@pnp/graph/teams"; + +const graph = graphfi(...); + +const chatMessages = await graph.teams.getById('3531fzfb-f9ee-4f43-982a-6c90d8226528').channels.getById('19:65723d632b384xa89c81115c281428a3@thread.skype').messages(); +``` + ## Add chat message to Channel ```TypeScript @@ -197,8 +208,7 @@ const message = { "content": "Hello World" } } -const chatMessage: ChatMessage = await graph.teams.getById('3531f3fb-f9ee-4f43-982a-6c90d8226528').channels.getById('19:65723d632b384ca89c81115c281428a3@thread.skype').messages(message); - +const chatMessage: ChatMessage = await graph.teams.getById('3531fzfb-f9ee-4f43-982a-6c90d8226528').channels.getById('19:65723d632b384xa89c81115c281428a3@thread.skype').messages.add(message); ``` ## Get installed Apps diff --git a/docs/sp/items.md b/docs/sp/items.md index b1da76983..51ae373d3 100644 --- a/docs/sp/items.md +++ b/docs/sp/items.md @@ -418,6 +418,39 @@ await execute(); console.log("Done"); ``` +### Update Taxonomy field + +Note: Updating Taxonomy field for a File item should be handled differently. Instead of using update(), use validateUpdateListItem(). Please see below + +List Item +```TypeScript +import { spfi } from "@pnp/sp"; +import "@pnp/sp/webs"; +import "@pnp/sp/lists"; +import "@pnp/sp/items"; + +const sp = spfi(...); + +await sp.web.lists.getByTitle("Demo").items.getById(1).update({ + MetaDataColumn: { Label: "Demo", TermGuid: '883e4c81-e8f9-4f19-b90b-6ab805c9f626', WssId: '-1' } +}); + +``` +File List Item +```TypeScript +import { spfi } from "@pnp/sp"; +import "@pnp/sp/webs"; +import "@pnp/sp/lists"; +import "@pnp/sp/items"; +import "@pnp/sp/files"; + +const sp = spfi(...); + +await (await sp.web.getFileByServerRelativePath("/sites/demo/DemoLibrary/File.txt").getItem()).validateUpdateListItem([{ + FieldName: "MetaDataColumn", + FieldValue:"Demo|883e4c81-e8f9-4f19-b90b-6ab805c9f626", //Label|TermGuid +}]); +``` ### Update Multi-value Taxonomy field diff --git a/mkdocs.yml b/mkdocs.yml index 9f628498e..8a775024b 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -17,13 +17,14 @@ nav: - 'In NodeJS': 'concepts/auth-nodejs.md' - 'Batching': 'concepts/batching.md' - 'Batching & Caching': 'concepts/batching-caching.md' + - 'Calling Other Endpoints': 'concepts/calling-other-endpoints' - 'Custom Bundling': 'concepts/custom-bundle.md' - 'Error-Handling': 'concepts/error-handling.md' - 'Project Config/Services Setup': 'concepts/project-preset.md' - 'Selective Imports': 'concepts/selective-imports.md' - 'Typings': 'concepts/typings.md' - 'Using Behaviors': 'core/behaviors.md' - - 'Nightly Builds': 'concepts/nightly-builds.md' + - 'Nightly Builds': 'concepts/nightly-builds.md'md' - Packages: - Packages: 'packages.md' - azidjsclient: diff --git a/package-lock.json b/package-lock.json index 61c57f538..7e1fa8c0a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,23 +1,23 @@ { "name": "@pnp/monorepo", - "version": "3.16.0", + "version": "3.17.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@pnp/monorepo", - "version": "3.16.0", + "version": "3.17.0", "license": "MIT", "devDependencies": { - "@azure/identity": "3.2.2", - "@azure/msal-node": "1.17.3", - "@microsoft/microsoft-graph-types": "2.33.0", + "@azure/identity": "3.2.4", + "@azure/msal-node": "1.18.0", + "@microsoft/microsoft-graph-types": "2.35.0", "@pnp/buildsystem": "3.1.0", "@types/chai": "4.3.5", "@types/chai-as-promised": "7.1.5", "@types/core-js": "2.5.5", "@types/findup-sync": "4.0.2", - "@types/gulp": "4.0.11", + "@types/gulp": "4.0.13", "@types/mocha": "10.0.1", "@types/node": "16.11.7", "@types/webpack": "5.28.1", @@ -27,16 +27,16 @@ "chai": "4.3.7", "chai-as-promised": "7.1.1", "del-cli": "5.0.0", - "eslint": "8.42.0", + "eslint": "8.45.0", "findup-sync": "5.0.0", "mocha": "10.2.0", "msal": "1.4.18", "node-fetch": "3.3.1", "prettyjson": "1.2.5", "string-replace-loader": "3.1.0", - "tslib": "2.5.0", + "tslib": "2.6.0", "typescript": "4.5.5", - "webpack": "5.86.0", + "webpack": "5.88.2", "webpack-cli": "5.1.4", "webpack-dev-server": "4.15.0", "yargs": "17.7.2" @@ -45,6 +45,15 @@ "node": ">=14.15.1" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -134,9 +143,9 @@ } }, "node_modules/@azure/identity": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.2.2.tgz", - "integrity": "sha512-1xspoCfluAQUZmmWdPUNuiweIjE/ckZtR4gcnDbB2NMr36fk9MwXWaVJ7m1NKhOSz2RgMMLVUvZ2AISGcaAOTA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.2.4.tgz", + "integrity": "sha512-t63oyi2LAn+ZAehYA7SDlhJDd1J0eLO3a21mxTaJcXqKW/tbRbKmo/BeyyTIXbBaoeTFn0xnyQHyomwndTqKUA==", "dev": true, "dependencies": { "@azure/abort-controller": "^1.0.0", @@ -146,9 +155,9 @@ "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.0.0", "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^2.32.2", - "@azure/msal-common": "^9.0.2", - "@azure/msal-node": "^1.14.6", + "@azure/msal-browser": "^2.37.1", + "@azure/msal-common": "^13.1.0", + "@azure/msal-node": "^1.17.3", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", @@ -173,42 +182,33 @@ } }, "node_modules/@azure/msal-browser": { - "version": "2.37.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.37.1.tgz", - "integrity": "sha512-EoKQISEpIY39Ru1OpWkeFZBcwp6Y0bG81bVmdyy4QJebPPDdVzfm62PSU0XFIRc3bqjZ4PBKBLMYLuo9NZYAow==", + "version": "2.38.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.38.0.tgz", + "integrity": "sha512-gxBh83IumHgEP9uMCm9pJLKLRwICMQTxG9TX3AytdNt3oLUI3tytm/szYD5u5zKJgSkhHvwFSM+NPnM04hYw3w==", "dev": true, "dependencies": { - "@azure/msal-common": "13.1.0" + "@azure/msal-common": "13.2.0" }, "engines": { "node": ">=0.8.0" } }, - "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.1.0.tgz", - "integrity": "sha512-wj+ULrRB0HTuMmtrMjg8j3guCx32GE2BCPbsMCZkHgL1BZetC3o/Su5UJEQMX1HNc9CrIaQNx5WaKWHygYDe0g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@azure/msal-common": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.1.1.tgz", - "integrity": "sha512-we9xR8lvu47fF0h+J8KyXoRy9+G/fPzm3QEa2TrdR3jaVS3LKAyE2qyMuUkNdbVkvzl8Zr9f7l+IUSP22HeqXw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.2.0.tgz", + "integrity": "sha512-rnstQ7Zgn3fSTKNQO+/YNV34/QXJs0vni7IA0/3QB1EEyrJg14xyRmTqlw9ta+pdSuT5OJwUP8kI3D/rBwUIBw==", "dev": true, "engines": { "node": ">=0.8.0" } }, "node_modules/@azure/msal-node": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.17.3.tgz", - "integrity": "sha512-slsa+388bQQWnWH1V91KL+zV57rIp/0OQFfF0EmVMY8gnEIkAnpWWFUVBTTMbxEyjEFMk5ZW9xiHvHBcYFHzDw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.0.tgz", + "integrity": "sha512-N6GX1Twxw524e7gaJvj7hKtrPRmZl9qGY7U4pmUdx4XzoWYRFfYk4H1ZjVhQ7pwb5Ks88NNhbXVCagsuYPTEFg==", "dev": true, "dependencies": { - "@azure/msal-common": "13.1.0", + "@azure/msal-common": "13.2.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" }, @@ -216,15 +216,6 @@ "node": "10 || 12 || 14 || 16 || 18" } }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.1.0.tgz", - "integrity": "sha512-wj+ULrRB0HTuMmtrMjg8j3guCx32GE2BCPbsMCZkHgL1BZetC3o/Su5UJEQMX1HNc9CrIaQNx5WaKWHygYDe0g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/@babel/code-frame": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", @@ -356,23 +347,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.1.tgz", + "integrity": "sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -388,9 +379,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -462,9 +453,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -494,9 +485,9 @@ "dev": true }, "node_modules/@microsoft/microsoft-graph-types": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.33.0.tgz", - "integrity": "sha512-gl1HjBJAojfaDJPbd0r5k8mBdnEjG4D4m0BBy5VEdIBCinBshL4OYmlUeESxSc4Mb78meiQzqBY3V2xXkvm36A==", + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.35.0.tgz", + "integrity": "sha512-3jCQyKaYbNuzVG884SNuWKS19FPUxBwHfDAb3DqZWBwPYcX3HbDe2D22z9Ue+UV+JGuw917cH75RTSgrdnutFg==", "dev": true }, "node_modules/@nodelib/fs.scandir": { @@ -591,9 +582,9 @@ } }, "node_modules/@types/braces": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.1.tgz", - "integrity": "sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-U5tlMYa0U/2eFTmJgKcPWQOEICP173sJDa6OjHbj5Tv+NVaYcrq2xmdWpNXOwWYGwJu+jER/pfTLdoQ31q8PzA==", "dev": true }, "node_modules/@types/chai": { @@ -637,9 +628,9 @@ "dev": true }, "node_modules/@types/eslint": { - "version": "8.40.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.1.tgz", - "integrity": "sha512-vRb792M4mF1FBT+eoLecmkpLXwxsBHvWWRGJjzbYANBM6DtiJc6yETyv4rqDA6QNjF1pkj1U7LMA6dGb3VYlHw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -713,9 +704,9 @@ } }, "node_modules/@types/gulp": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.11.tgz", - "integrity": "sha512-jy0nfcsjiGqO1prNsYMK/bHkTblIBgG04sL2nxPpnP9MyNicHp1SUblomjOla6JoW1qkR67HjFHqIibpPoShNQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.13.tgz", + "integrity": "sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==", "dev": true, "dependencies": { "@types/undertaker": ">=1.2.6", @@ -723,6 +714,12 @@ "chokidar": "^3.3.1" } }, + "node_modules/@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "node_modules/@types/http-proxy": { "version": "1.17.11", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", @@ -827,11 +824,12 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -1331,9 +1329,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2015,9 +2013,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", - "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "funding": [ { @@ -2034,8 +2032,8 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001489", - "electron-to-chromium": "^1.4.411", + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" }, @@ -2164,9 +2162,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001497", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz", - "integrity": "sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "dev": true, "funding": [ { @@ -2886,14 +2884,14 @@ } }, "node_modules/del/node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" }, @@ -3048,9 +3046,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.425", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.425.tgz", - "integrity": "sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==", + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", "dev": true }, "node_modules/emoji-regex": { @@ -3087,9 +3085,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -3100,9 +3098,9 @@ } }, "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true, "bin": { "envinfo": "dist/cli.js" @@ -3121,9 +3119,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, "node_modules/es5-ext": { @@ -3202,15 +3200,15 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3222,7 +3220,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -3232,7 +3230,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -3242,9 +3239,8 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -3283,9 +3279,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", "dev": true, "dependencies": { "esrecurse": "^4.3.0", @@ -3329,12 +3325,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -3693,9 +3689,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5149,9 +5145,9 @@ } }, "node_modules/gulp-cli/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -5439,10 +5435,20 @@ } }, "node_modules/html-entities": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz", - "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg==", - "dev": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] }, "node_modules/http-deceiver": { "version": "1.2.7", @@ -6092,9 +6098,9 @@ } }, "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", "dev": true, "dependencies": { "jws": "^3.2.2", @@ -7311,9 +7317,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "node_modules/normalize-package-data": { @@ -7569,17 +7575,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8628,9 +8634,9 @@ "dev": true }, "node_modules/schema-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.2.0.tgz", - "integrity": "sha512-0zTyLGyDJYd/MBxG1AhJkKa6fpEBds4OQO2ut0w7OYG+ZGhGea09lijvzsqegYSik88zc7cUtIlnnO+/BvD6gQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.8", @@ -8664,9 +8670,9 @@ } }, "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9483,9 +9489,9 @@ } }, "node_modules/terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -9812,9 +9818,9 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", "dev": true }, "node_modules/tsutils": { @@ -10282,9 +10288,9 @@ } }, "node_modules/webpack": { - "version": "5.86.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", - "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "dependencies": { "@types/eslint-scope": "^3.7.3", @@ -10296,7 +10302,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -10306,7 +10312,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -10449,9 +10455,9 @@ "dev": true }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.1.0.tgz", - "integrity": "sha512-Jw+GZVbP5IggB2WAn6UHI02LBwGmsIeYN/lNbSMZyDziQ7jmtAUrqKqDja+W89YHVs+KL/3IkIMltAklqB1vAw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -10561,9 +10567,9 @@ "dev": true }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.1.0.tgz", - "integrity": "sha512-Jw+GZVbP5IggB2WAn6UHI02LBwGmsIeYN/lNbSMZyDziQ7jmtAUrqKqDja+W89YHVs+KL/3IkIMltAklqB1vAw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", @@ -10651,15 +10657,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", @@ -10820,6 +10817,12 @@ } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true + }, "@azure/abort-controller": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", @@ -10891,9 +10894,9 @@ } }, "@azure/identity": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.2.2.tgz", - "integrity": "sha512-1xspoCfluAQUZmmWdPUNuiweIjE/ckZtR4gcnDbB2NMr36fk9MwXWaVJ7m1NKhOSz2RgMMLVUvZ2AISGcaAOTA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.2.4.tgz", + "integrity": "sha512-t63oyi2LAn+ZAehYA7SDlhJDd1J0eLO3a21mxTaJcXqKW/tbRbKmo/BeyyTIXbBaoeTFn0xnyQHyomwndTqKUA==", "dev": true, "requires": { "@azure/abort-controller": "^1.0.0", @@ -10903,9 +10906,9 @@ "@azure/core-tracing": "^1.0.0", "@azure/core-util": "^1.0.0", "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^2.32.2", - "@azure/msal-common": "^9.0.2", - "@azure/msal-node": "^1.14.6", + "@azure/msal-browser": "^2.37.1", + "@azure/msal-common": "^13.1.0", + "@azure/msal-node": "^1.17.3", "events": "^3.0.0", "jws": "^4.0.0", "open": "^8.0.0", @@ -10924,45 +10927,29 @@ } }, "@azure/msal-browser": { - "version": "2.37.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.37.1.tgz", - "integrity": "sha512-EoKQISEpIY39Ru1OpWkeFZBcwp6Y0bG81bVmdyy4QJebPPDdVzfm62PSU0XFIRc3bqjZ4PBKBLMYLuo9NZYAow==", + "version": "2.38.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.38.0.tgz", + "integrity": "sha512-gxBh83IumHgEP9uMCm9pJLKLRwICMQTxG9TX3AytdNt3oLUI3tytm/szYD5u5zKJgSkhHvwFSM+NPnM04hYw3w==", "dev": true, "requires": { - "@azure/msal-common": "13.1.0" - }, - "dependencies": { - "@azure/msal-common": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.1.0.tgz", - "integrity": "sha512-wj+ULrRB0HTuMmtrMjg8j3guCx32GE2BCPbsMCZkHgL1BZetC3o/Su5UJEQMX1HNc9CrIaQNx5WaKWHygYDe0g==", - "dev": true - } + "@azure/msal-common": "13.2.0" } }, "@azure/msal-common": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.1.1.tgz", - "integrity": "sha512-we9xR8lvu47fF0h+J8KyXoRy9+G/fPzm3QEa2TrdR3jaVS3LKAyE2qyMuUkNdbVkvzl8Zr9f7l+IUSP22HeqXw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.2.0.tgz", + "integrity": "sha512-rnstQ7Zgn3fSTKNQO+/YNV34/QXJs0vni7IA0/3QB1EEyrJg14xyRmTqlw9ta+pdSuT5OJwUP8kI3D/rBwUIBw==", "dev": true }, "@azure/msal-node": { - "version": "1.17.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.17.3.tgz", - "integrity": "sha512-slsa+388bQQWnWH1V91KL+zV57rIp/0OQFfF0EmVMY8gnEIkAnpWWFUVBTTMbxEyjEFMk5ZW9xiHvHBcYFHzDw==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.0.tgz", + "integrity": "sha512-N6GX1Twxw524e7gaJvj7hKtrPRmZl9qGY7U4pmUdx4XzoWYRFfYk4H1ZjVhQ7pwb5Ks88NNhbXVCagsuYPTEFg==", "dev": true, "requires": { - "@azure/msal-common": "13.1.0", + "@azure/msal-common": "13.2.0", "jsonwebtoken": "^9.0.0", "uuid": "^8.3.0" - }, - "dependencies": { - "@azure/msal-common": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.1.0.tgz", - "integrity": "sha512-wj+ULrRB0HTuMmtrMjg8j3guCx32GE2BCPbsMCZkHgL1BZetC3o/Su5UJEQMX1HNc9CrIaQNx5WaKWHygYDe0g==", - "dev": true - } } }, "@babel/code-frame": { @@ -11065,20 +11052,20 @@ } }, "@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.1.tgz", + "integrity": "sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A==", "dev": true }, "@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -11088,9 +11075,9 @@ } }, "@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true }, "@humanwhocodes/config-array": { @@ -11140,9 +11127,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -11172,9 +11159,9 @@ "dev": true }, "@microsoft/microsoft-graph-types": { - "version": "2.33.0", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.33.0.tgz", - "integrity": "sha512-gl1HjBJAojfaDJPbd0r5k8mBdnEjG4D4m0BBy5VEdIBCinBshL4OYmlUeESxSc4Mb78meiQzqBY3V2xXkvm36A==", + "version": "2.35.0", + "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.35.0.tgz", + "integrity": "sha512-3jCQyKaYbNuzVG884SNuWKS19FPUxBwHfDAb3DqZWBwPYcX3HbDe2D22z9Ue+UV+JGuw917cH75RTSgrdnutFg==", "dev": true }, "@nodelib/fs.scandir": { @@ -11247,9 +11234,9 @@ } }, "@types/braces": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.1.tgz", - "integrity": "sha512-+euflG6ygo4bn0JHtn4pYqcXwRtLvElQ7/nnjDu7iYG56H0+OhCd7d6Ug0IE3WcFpZozBKW2+80FUbv5QGk5AQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-U5tlMYa0U/2eFTmJgKcPWQOEICP173sJDa6OjHbj5Tv+NVaYcrq2xmdWpNXOwWYGwJu+jER/pfTLdoQ31q8PzA==", "dev": true }, "@types/chai": { @@ -11293,9 +11280,9 @@ "dev": true }, "@types/eslint": { - "version": "8.40.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.40.1.tgz", - "integrity": "sha512-vRb792M4mF1FBT+eoLecmkpLXwxsBHvWWRGJjzbYANBM6DtiJc6yETyv4rqDA6QNjF1pkj1U7LMA6dGb3VYlHw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-gsF+c/0XOguWgaOgvFs+xnnRqt9GwgTvIks36WpE6ueeI4KCEHHd8K/CKHqhOqrJKsYH8m27kRzQEvWXAwXUTw==", "dev": true, "requires": { "@types/estree": "*", @@ -11369,9 +11356,9 @@ } }, "@types/gulp": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.11.tgz", - "integrity": "sha512-jy0nfcsjiGqO1prNsYMK/bHkTblIBgG04sL2nxPpnP9MyNicHp1SUblomjOla6JoW1qkR67HjFHqIibpPoShNQ==", + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/@types/gulp/-/gulp-4.0.13.tgz", + "integrity": "sha512-Ms20Q2tZ3MpThZGn4Ag6e7ifz/oQJFxsuiopqz5oHmhE6q2ohnELgafi5K/pKX/4ntlpidS61v/TXAguYsVcaA==", "dev": true, "requires": { "@types/undertaker": ">=1.2.6", @@ -11379,6 +11366,12 @@ "chokidar": "^3.3.1" } }, + "@types/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==", + "dev": true + }, "@types/http-proxy": { "version": "1.17.11", "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz", @@ -11483,11 +11476,12 @@ } }, "@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.2.tgz", + "integrity": "sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==", "dev": true, "requires": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } @@ -11872,9 +11866,9 @@ } }, "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-import-assertions": { @@ -12393,13 +12387,13 @@ "dev": true }, "browserslist": { - "version": "4.21.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz", - "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==", + "version": "4.21.9", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", + "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001489", - "electron-to-chromium": "^1.4.411", + "caniuse-lite": "^1.0.30001503", + "electron-to-chromium": "^1.4.431", "node-releases": "^2.0.12", "update-browserslist-db": "^1.0.11" } @@ -12488,9 +12482,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001497", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001497.tgz", - "integrity": "sha512-I4/duVK4wL6rAK/aKZl3HXB4g+lIZvaT4VLAn2rCgJ38jVLb0lv2Xug6QuqmxXFVRJMF74SPPWPJ/1Sdm3vCzw==", + "version": "1.0.30001517", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001517.tgz", + "integrity": "sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==", "dev": true }, "chai": { @@ -13012,14 +13006,14 @@ }, "dependencies": { "globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "requires": { "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", "merge2": "^1.4.1", "slash": "^4.0.0" } @@ -13154,9 +13148,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.425", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.425.tgz", - "integrity": "sha512-wv1NufHxu11zfDbY4fglYQApMswleE9FL/DSeyOyauVXDZ+Kco96JK/tPfBUaDqfRarYp2WH2hJ/5UnVywp9Jg==", + "version": "1.4.468", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.468.tgz", + "integrity": "sha512-6M1qyhaJOt7rQtNti1lBA0GwclPH+oKCmsra/hkcWs5INLxfXXD/dtdnaKUYQu/pjOBP/8Osoe4mAcNvvzoFag==", "dev": true }, "emoji-regex": { @@ -13187,9 +13181,9 @@ } }, "enhanced-resolve": { - "version": "5.14.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.14.1.tgz", - "integrity": "sha512-Vklwq2vDKtl0y/vtwjSesgJ5MYS7Etuk5txS8VdKL4AOS1aUlD96zqIfsOSLQsdv3xgMRbtkWM8eG9XDfKUPow==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "requires": { "graceful-fs": "^4.2.4", @@ -13197,9 +13191,9 @@ } }, "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz", + "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==", "dev": true }, "error-ex": { @@ -13212,9 +13206,9 @@ } }, "es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.0.tgz", + "integrity": "sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==", "dev": true }, "es5-ext": { @@ -13280,15 +13274,15 @@ "dev": true }, "eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.45.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.45.0.tgz", + "integrity": "sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -13300,7 +13294,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -13310,7 +13304,6 @@ "globals": "^13.19.0", "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", @@ -13320,16 +13313,15 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { "eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.1.tgz", + "integrity": "sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -13376,12 +13368,12 @@ "dev": true }, "espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } @@ -13683,9 +13675,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -14834,9 +14826,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "string-width": { @@ -15064,9 +15056,9 @@ } }, "html-entities": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.5.tgz", - "integrity": "sha512-72TJlcMkYsEJASa/3HnX7VT59htM7iSHbH59NSZbtc+22Ap0Txnlx91sfeB+/A7wNZg7UxtZdhAW4y+/jimrdg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true }, "http-deceiver": { @@ -15537,9 +15529,9 @@ "dev": true }, "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.1.tgz", + "integrity": "sha512-K8wx7eJ5TPvEjuiVSkv167EVboBDv9PZdDoF7BgeQnBLVvZWW9clr2PsQHVJDTKaEIH5JBIwHujGcHp7GgI2eg==", "dev": true, "requires": { "jws": "^3.2.2", @@ -16490,9 +16482,9 @@ "dev": true }, "node-releases": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz", - "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", "dev": true }, "normalize-package-data": { @@ -16684,17 +16676,17 @@ } }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, "ordered-read-streams": { @@ -17455,9 +17447,9 @@ "dev": true }, "schema-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.2.0.tgz", - "integrity": "sha512-0zTyLGyDJYd/MBxG1AhJkKa6fpEBds4OQO2ut0w7OYG+ZGhGea09lijvzsqegYSik88zc7cUtIlnnO+/BvD6gQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "requires": { "@types/json-schema": "^7.0.8", @@ -17481,9 +17473,9 @@ } }, "semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18157,9 +18149,9 @@ "dev": true }, "terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.3", @@ -18414,9 +18406,9 @@ "dev": true }, "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", + "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", "dev": true }, "tsutils": { @@ -18780,9 +18772,9 @@ "dev": true }, "webpack": { - "version": "5.86.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.86.0.tgz", - "integrity": "sha512-3BOvworZ8SO/D4GVP+GoRC3fVeg5MO4vzmq8TJJEkdmopxyazGDxN8ClqN12uzrZW9Tv8EED8v5VSb6Sqyi0pg==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "requires": { "@types/eslint-scope": "^3.7.3", @@ -18794,7 +18786,7 @@ "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.14.1", + "enhanced-resolve": "^5.15.0", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -18804,7 +18796,7 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", @@ -18887,9 +18879,9 @@ "dev": true }, "schema-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.1.0.tgz", - "integrity": "sha512-Jw+GZVbP5IggB2WAn6UHI02LBwGmsIeYN/lNbSMZyDziQ7jmtAUrqKqDja+W89YHVs+KL/3IkIMltAklqB1vAw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -18966,9 +18958,9 @@ "dev": true }, "schema-utils": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.1.0.tgz", - "integrity": "sha512-Jw+GZVbP5IggB2WAn6UHI02LBwGmsIeYN/lNbSMZyDziQ7jmtAUrqKqDja+W89YHVs+KL/3IkIMltAklqB1vAw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", @@ -19033,12 +19025,6 @@ "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", "dev": true }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, "workerpool": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", diff --git a/package.json b/package.json index 78b95d438..412dc4ee8 100644 --- a/package.json +++ b/package.json @@ -2,18 +2,18 @@ "name": "@pnp/monorepo", "private": true, "type": "module", - "version": "3.16.0", + "version": "3.17.0", "description": "A JavaScript library for SharePoint & Graph development.", "devDependencies": { - "@azure/identity": "3.2.2", - "@azure/msal-node": "1.17.3", - "@microsoft/microsoft-graph-types": "2.33.0", + "@azure/identity": "3.2.4", + "@azure/msal-node": "1.18.0", + "@microsoft/microsoft-graph-types": "2.35.0", "@pnp/buildsystem": "3.1.0", "@types/chai": "4.3.5", "@types/chai-as-promised": "7.1.5", "@types/core-js": "2.5.5", "@types/findup-sync": "4.0.2", - "@types/gulp": "4.0.11", + "@types/gulp": "4.0.13", "@types/mocha": "10.0.1", "@types/node": "16.11.7", "@types/webpack": "5.28.1", @@ -23,16 +23,16 @@ "chai": "4.3.7", "chai-as-promised": "7.1.1", "del-cli": "5.0.0", - "eslint": "8.42.0", + "eslint": "8.45.0", "findup-sync": "5.0.0", "mocha": "10.2.0", "msal": "1.4.18", "node-fetch": "3.3.1", "prettyjson": "1.2.5", "string-replace-loader": "3.1.0", - "tslib": "2.5.0", + "tslib": "2.6.0", "typescript": "4.5.5", - "webpack": "5.86.0", + "webpack": "5.88.2", "webpack-cli": "5.1.4", "webpack-dev-server": "4.15.0", "yargs": "17.7.2" diff --git a/packages/azidjsclient/package.json b/packages/azidjsclient/package.json index 1e4e654de..eb9240c82 100644 --- a/packages/azidjsclient/package.json +++ b/packages/azidjsclient/package.json @@ -7,7 +7,7 @@ "dependencies": { "@pnp/core": "0.0.0-PLACEHOLDER", "@pnp/queryable": "0.0.0-PLACEHOLDER", - "@azure/identity": "3.2.1", - "tslib": "2.5.0" + "@azure/identity": "3.2.4", + "tslib": "2.6.0" } } \ No newline at end of file diff --git a/packages/graph/batching.ts b/packages/graph/batching.ts index c91761fe6..5e306a203 100644 --- a/packages/graph/batching.ts +++ b/packages/graph/batching.ts @@ -155,6 +155,7 @@ export function createBatch(base: IGraphQueryable, props?: IGraphBatchProps): [T const requests: RequestRecord[] = []; const batchId = getGUID(); const batchQuery = new BatchQueryable(base); + const refQuery = new BatchQueryable(base); const { maxRequests } = { maxRequests: 30, @@ -290,7 +291,7 @@ export function createBatch(base: IGraphQueryable, props?: IGraphBatchProps): [T // that we maintain the references to the InternalResolve and InternalReject events through // the end of this timeline lifecycle. This works because CopyFrom by design uses Object.keys // which ignores symbol properties. - this.using(CopyFrom(batchQuery, "replace", (k) => /(auth|send|init|dispose)/i.test(k))); + this.using(CopyFrom(refQuery, "replace", (k) => /(auth|send|init|dispose)/i.test(k))); } }); diff --git a/packages/graph/content-types/types.ts b/packages/graph/content-types/types.ts index f1ce91d46..5dd4cce29 100644 --- a/packages/graph/content-types/types.ts +++ b/packages/graph/content-types/types.ts @@ -81,7 +81,7 @@ export class _ContentTypes extends _GraphQueryableCollection { - const creator = ContentType(this, null).using(JSONHeaderParse()); + const creator = ContentType(this, "addCopyFromContentTypeHub").using(JSONHeaderParse()); const data = await graphPost(creator, body({ contentTypeId })); const pendingLocation = data.headers.location || null; return { diff --git a/packages/graph/onedrive/types.ts b/packages/graph/onedrive/types.ts index 17b83294f..ec611a8da 100644 --- a/packages/graph/onedrive/types.ts +++ b/packages/graph/onedrive/types.ts @@ -182,16 +182,6 @@ export class _Root extends _GraphQueryableInstance { public async upload(fileOptions: IFileOptions): Promise { return Reflect.apply(driveItemUpload, this, [fileOptions]); } - - /** - * Method for getting item analytics. Defaults to lastSevenDays. - * @param analyticsOptions - IAnalyticsOptions (Optional) - * @returns IGraphQueryableCollection - */ - public analytics(analyticsOptions?: IAnalyticsOptions): IGraphQueryableCollection { - const query = `analytics/${analyticsOptions?analyticsOptions.timeRange:"lastSevenDays"}`; - return GraphQueryableCollection(this, query); - } } export interface IRoot extends _Root { } export const Root = graphInvokableFactory(_Root); diff --git a/packages/graph/package.json b/packages/graph/package.json index 5e8271e8c..dc70e10d0 100644 --- a/packages/graph/package.json +++ b/packages/graph/package.json @@ -8,8 +8,8 @@ "postinstall": "node ./post-install.cjs" }, "dependencies": { - "@microsoft/microsoft-graph-types": "2.31.0", - "tslib": "2.5.0", + "@microsoft/microsoft-graph-types": "2.35.0", + "tslib": "2.6.0", "@pnp/core": "0.0.0-PLACEHOLDER", "@pnp/queryable": "0.0.0-PLACEHOLDER" } diff --git a/packages/graph/teams/types.ts b/packages/graph/teams/types.ts index 7a3271a9a..86196c8b7 100644 --- a/packages/graph/teams/types.ts +++ b/packages/graph/teams/types.ts @@ -130,13 +130,13 @@ export const Teams = graphInvokableFactory(_Teams); /** * Channel */ -export class _Channel extends _GraphQueryableInstance { +export class _Channel extends _GraphQueryableInstance { public get tabs(): ITabs { return Tabs(this); } - public async messages(message: IChatMessage): Promise { - return graphPost(Channel(this, "messages"), body(message)); + public get messages(): IMessages { + return Messages(this); } } export interface IChannel extends _Channel { } @@ -147,7 +147,7 @@ export const Channel = graphInvokableFactory(_Channel); */ @defaultPath("channels") @getById(Channel) -export class _Channels extends _GraphQueryableCollection { +export class _Channels extends _GraphQueryableCollection { /** * Creates a new Channel in the Team @@ -173,6 +173,44 @@ export class _Channels extends _GraphQueryableCollection { export interface IChannels extends _Channels, IGetById { } export const Channels = graphInvokableFactory(_Channels); +/** + * Channel + */ +export class _Message extends _GraphQueryableInstance { } +export interface IMessage extends _Message { } +export const Message = graphInvokableFactory(_Message); + +/** + * Channels + */ +@defaultPath("messages") +@getById(Message) +export class _Messages extends _GraphQueryableCollection { + + /** + * Creates a new Channel in the Team + * @param displayName The display name of the new channel + * @param description Optional description of the channel + * + */ + public async add(displayName: string, description = ""): Promise { + + const postBody = { + description, + displayName, + }; + + const data = await graphPost(this, body(postBody)); + + return { + message: (this).getById(data.id), + data, + }; + } +} +export interface IMessages extends _Messages, IGetById { } +export const Messages = graphInvokableFactory(_Messages); + /** * Tab */ @@ -225,6 +263,11 @@ export interface IChannelCreateResult { channel: IChannel; } +export interface IMessageCreateResult { + data: any; + message: IMessage; +} + export interface ITabCreateResult { data: any; tab: ITab; diff --git a/packages/logging/listeners.ts b/packages/logging/listeners.ts index 96e35c365..87ee83801 100644 --- a/packages/logging/listeners.ts +++ b/packages/logging/listeners.ts @@ -1,4 +1,5 @@ -import { ILogEntry, ILogListener } from "./index.js"; +/* eslint-disable no-console */ +import { ILogEntry, ILogListener, LogLevel } from "./index.js"; export function ConsoleListener(prefix?: string, colors?: IConsoleListenerColors): ILogListener { return new _ConsoleListener(prefix, colors); @@ -25,11 +26,11 @@ export interface IConsoleListenerColors { error?: string; } -function withColor(msg: string, color: string | undefined): void { +function withColor(msg: string, color: string | undefined, logMethod): void { if (typeof color === "undefined") { - console.log(msg); + logMethod(msg); } else { - console.log(`%c${msg}`, `color:${color}`); + logMethod(`%c${msg}`, `color:${color}`); } } @@ -81,7 +82,26 @@ class _ConsoleListener implements ILogListener { * @param entry The information to be logged */ public log(entry: ILogEntry): void { - withColor(entryToString(entry, this._prefix), this._colors[colorProps[entry.level]]); + + let logMethod = console.log; + switch(entry.level){ + case LogLevel.Error: + logMethod = console.error; + break; + case LogLevel.Warning: + logMethod = console.warn; + break; + case LogLevel.Verbose: + logMethod = console.debug; + break; + case LogLevel.Info: + logMethod = console.info; + break; + default: + logMethod = console.log; + } + + withColor(entryToString(entry, this._prefix), this._colors[colorProps[entry.level]], logMethod); } } diff --git a/packages/nodejs/package.json b/packages/nodejs/package.json index 8bfd357d4..0f7ccbb89 100644 --- a/packages/nodejs/package.json +++ b/packages/nodejs/package.json @@ -5,13 +5,13 @@ "main": "./index.js", "typings": "./index", "dependencies": { - "@azure/msal-node": "1.17.2", + "@azure/msal-node": "1.18.0", "@pnp/core": "0.0.0-PLACEHOLDER", "@pnp/logging": "0.0.0-PLACEHOLDER", "@pnp/queryable": "0.0.0-PLACEHOLDER", "@pnp/sp": "0.0.0-PLACEHOLDER", "@pnp/graph": "0.0.0-PLACEHOLDER", - "node-fetch": "3.3.0", - "tslib": "2.4.1" + "node-fetch": "3.3.1", + "tslib": "2.6.0" } } \ No newline at end of file diff --git a/packages/sp/batching.ts b/packages/sp/batching.ts index d57c456c0..bad455769 100644 --- a/packages/sp/batching.ts +++ b/packages/sp/batching.ts @@ -1,5 +1,5 @@ import { getGUID, isUrlAbsolute, combine, CopyFrom, TimelinePipe, isFunc, hOP } from "@pnp/core"; -import { InjectHeaders, parseBinderWithErrorCheck, Queryable } from "@pnp/queryable"; +import { parseBinderWithErrorCheck, Queryable } from "@pnp/queryable"; import { spPost } from "./operations.js"; import { ISPQueryable, _SPQueryable } from "./spqueryable.js"; import { spfi, SPFI } from "./fi.js"; @@ -136,6 +136,9 @@ export function createBatch(base: ISPQueryable, props?: ISPBatchProps): [Timelin const requests: RequestRecord[] = []; const batchId = getGUID(); const batchQuery = new BatchQueryable(base); + // this query is used to copy back the behaviors after the batch executes + // it should not manipulated or have behaviors added. + const refQuery = new BatchQueryable(base); const { headersCopyPattern } = { headersCopyPattern: /Accept|Content-Type|IF-Match/i, @@ -238,12 +241,12 @@ export function createBatch(base: ISPQueryable, props?: ISPBatchProps): [Timelin batchBody.push(`--batch_${batchId}--\n`); - // we need to set our own headers here - batchQuery.using(InjectHeaders({ - "Content-Type": `multipart/mixed; boundary=batch_${batchId}`, - })); - - const responses: Response[] = await spPost(batchQuery, { body: batchBody.join("") }); + const responses: Response[] = await spPost(batchQuery, { + body: batchBody.join(""), + headers: { + "Content-Type": `multipart/mixed; boundary=batch_${batchId}`, + }, + }); if (responses.length !== requests.length) { throw Error("Could not properly parse responses to match requests in batch."); @@ -302,7 +305,7 @@ export function createBatch(base: ISPQueryable, props?: ISPBatchProps): [Timelin delete this[RequestCompleteSym]; } - this.using(CopyFrom(batchQuery, "replace", (k) => /(init|pre)/i.test(k))); + this.using(CopyFrom(refQuery, "replace", (k) => /(init|pre)/i.test(k))); return [url, init, result]; } @@ -362,7 +365,7 @@ export function createBatch(base: ISPQueryable, props?: ISPBatchProps): [Timelin // that we maintain the references to the InternalResolve and InternalReject events through // the end of this timeline lifecycle. This works because CopyFrom by design uses Object.keys // which ignores symbol properties. - this.using(CopyFrom(batchQuery, "replace", (k) => /(auth|pre|send|init|dispose)/i.test(k))); + this.using(CopyFrom(refQuery, "replace", (k) => /(auth|pre|send|init|dispose)/i.test(k))); } }); diff --git a/test/graph/onedrive.ts b/test/graph/onedrive.ts index 0d8c6f640..54952b47c 100644 --- a/test/graph/onedrive.ts +++ b/test/graph/onedrive.ts @@ -351,17 +351,6 @@ describe("OneDrive", function () { return expect(previewDriveItem).to.haveOwnProperty("getUrl"); }); - it("Get Drive Root Analytics - All Time", async function () { - if (stringIsNullOrEmpty(driveId)) { - this.skip(); - } - const analyticOptions: IAnalyticsOptions = { - timeRange: "allTime", - }; - const analytics = await this.pnp.graph.users.getById(testUserName).drives.getById(driveId).root.analytics(analyticOptions)(); - return expect(analytics).to.haveOwnProperty("@odata.context"); - }); - it("Get Drive Item Analytics - Last Seven Days", async function () { if (stringIsNullOrEmpty(driveId)) { this.skip(); diff --git a/test/sp/groupsitemanager.ts b/test/sp/groupsitemanager.ts index a26c20e84..876c99aff 100644 --- a/test/sp/groupsitemanager.ts +++ b/test/sp/groupsitemanager.ts @@ -3,9 +3,9 @@ import "@pnp/graph/groups"; import "@pnp/sp/groupsitemanager"; import { stringIsNullOrEmpty } from "@pnp/core/util"; -describe("GroupSiteManager (without group context)", function () { +describe.skip("GroupSiteManager (without group context)", function () { // skip because app only tests. - it.skip("canUserCreateGroup", async function () { + it("canUserCreateGroup", async function () { const isGroupCreationEnable = await this.pnp.sp.groupSiteManager.canUserCreateGroup(); return expect(isGroupCreationEnable).to.be.false; });