diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 01143ee2fd..3a9121432d 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,5 +1,5 @@ { - "image": "mcr.microsoft.com/devcontainers/javascript-node:0-16", + "image": "mcr.microsoft.com/devcontainers/javascript-node:0-18", "customizations": { "vscode": { "extensions": [ @@ -14,4 +14,4 @@ } }, "forwardPorts": [3000, 6006] -} +} \ No newline at end of file diff --git a/.github/release-please.yml b/.github/release-please.yml new file mode 100644 index 0000000000..9d1d1d9c7b --- /dev/null +++ b/.github/release-please.yml @@ -0,0 +1,3 @@ +manifest: true +primaryBranch: main +handleGHRelease: true diff --git a/.release-please-manifest.json b/.release-please-manifest.json index c8f6020e3c..248869bd93 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "4.2.3" + ".": "4.2.4" } \ No newline at end of file diff --git a/.yarn/cache/async-limiter-npm-1.0.1-7e6819bcdb-2b849695b4.zip b/.yarn/cache/async-limiter-npm-1.0.1-7e6819bcdb-2b849695b4.zip deleted file mode 100644 index 38dfc9d4bb..0000000000 Binary files a/.yarn/cache/async-limiter-npm-1.0.1-7e6819bcdb-2b849695b4.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-6.2.2-ca62a10fa0-bb791ac02a.zip b/.yarn/cache/ws-npm-6.2.2-ca62a10fa0-bb791ac02a.zip deleted file mode 100644 index dc3aa93529..0000000000 Binary files a/.yarn/cache/ws-npm-6.2.2-ca62a10fa0-bb791ac02a.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-7.5.9-26f12a5ed6-171e350129.zip b/.yarn/cache/ws-npm-7.5.9-26f12a5ed6-171e350129.zip deleted file mode 100644 index 0eb315cdea..0000000000 Binary files a/.yarn/cache/ws-npm-7.5.9-26f12a5ed6-171e350129.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-8.13.0-26ffa3016a-1769532b6f.zip b/.yarn/cache/ws-npm-8.13.0-26ffa3016a-1769532b6f.zip deleted file mode 100644 index 6f8e5a8df8..0000000000 Binary files a/.yarn/cache/ws-npm-8.13.0-26ffa3016a-1769532b6f.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-8.16.0-46943f6199-7c511c59e9.zip b/.yarn/cache/ws-npm-8.16.0-46943f6199-7c511c59e9.zip deleted file mode 100644 index 3b552fa0ed..0000000000 Binary files a/.yarn/cache/ws-npm-8.16.0-46943f6199-7c511c59e9.zip and /dev/null differ diff --git a/.yarn/cache/ws-npm-8.17.1-f57fb24a2c-4264ae92c0.zip b/.yarn/cache/ws-npm-8.17.1-f57fb24a2c-4264ae92c0.zip new file mode 100644 index 0000000000..cd6b6f229e Binary files /dev/null and b/.yarn/cache/ws-npm-8.17.1-f57fb24a2c-4264ae92c0.zip differ diff --git a/CHANGELOG.md b/CHANGELOG.md index c89167ccc0..1d4896df22 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,19 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [4.2.4](https://github.com/microsoftgraph/microsoft-graph-toolkit/compare/v4.2.3...v4.2.4) (2024-08-06) + + +### Bug Fixes + +* add headers when people-picker has input ([#3269](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3269)) ([ba87c32](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/ba87c324f33f4b0fe193b26d97cfec1d63797914)) +* add padding to the list of direct reports in person-card ([#3265](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3265)) ([8036278](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/80362782c01d419f3f47c5820d1cfc9bd909333c)) +* check the options scopes are not empty when getting access token ([#3256](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3256)) ([432d8ce](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/432d8ce574aebd1ae9ddaf7bc53b5d4f4e4164c6)) +* implement caching on the card state for person card ([#3266](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3266)) ([06cd925](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/06cd925f485f49c9a0534778378301b11dad8136)) +* remove space in findUsers query ([#3267](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3267)) ([096a50d](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/096a50d64290289504cc0af99bd671f7336c343a)) +* show login component flyout on after login ([#3250](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3250)) ([62b1ed4](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/62b1ed4a924d9b407c2749ee8b093f98fa6e8050)) +* use a consistent cachekey in file list cache ([#3257](https://github.com/microsoftgraph/microsoft-graph-toolkit/issues/3257)) ([5551351](https://github.com/microsoftgraph/microsoft-graph-toolkit/commit/55513513146ea43a965da3e5cd5de8712d773321)) + ## [4.2.3](https://github.com/microsoftgraph/microsoft-graph-toolkit/compare/v4.2.2...v4.2.3) (2024-07-02) diff --git a/package.json b/package.json index 1f9088210b..bc5dce8b80 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "root", "private": true, - "version": "4.2.3", + "version": "4.2.4", "workspaces": { "packages": [ "packages/*", @@ -148,5 +148,8 @@ "webpack": "^5.90.3", "whatwg-fetch": "^3.6.20" }, - "packageManager": "yarn@4.1.0" + "packageManager": "yarn@4.1.0", + "resolutions": { + "ws": "8.17.1" + } } diff --git a/packages/mgt-components/package.json b/packages/mgt-components/package.json index 266b58ac34..5bc800f76b 100644 --- a/packages/mgt-components/package.json +++ b/packages/mgt-components/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-components", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit Components", "keywords": [ "microsoft graph", diff --git a/packages/mgt-components/src/components/mgt-login/mgt-login.ts b/packages/mgt-components/src/components/mgt-login/mgt-login.ts index c151887414..45f5052951 100644 --- a/packages/mgt-components/src/components/mgt-login/mgt-login.ts +++ b/packages/mgt-components/src/components/mgt-login/mgt-login.ts @@ -242,10 +242,10 @@ export class MgtLogin extends MgtTemplatedTaskComponent { const provider = Providers.globalProvider; if (provider?.logout) { - const activeAccount = provider.getActiveAccount(); await provider.logout(); this.userDetails = null; if (provider.isMultiAccountSupportedAndEnabled) { + const activeAccount = provider.getActiveAccount(); localStorage.removeItem(activeAccount?.id + this._userDetailsKey); } this.hideFlyout(); @@ -726,7 +726,7 @@ export class MgtLogin extends MgtTemplatedTaskComponent { * @memberof MgtLogin */ private readonly onClick = (): void => { - if (this.userDetails && this._isFlyoutOpen) { + if (this.userDetails && this.flyout.isOpen) { this.hideFlyout(); } else if (this.userDetails) { this.showFlyout(); diff --git a/packages/mgt-components/src/components/mgt-organization/mgt-organization.scss b/packages/mgt-components/src/components/mgt-organization/mgt-organization.scss index 39c15ff1c0..cbf2c78340 100644 --- a/packages/mgt-components/src/components/mgt-organization/mgt-organization.scss +++ b/packages/mgt-components/src/components/mgt-organization/mgt-organization.scss @@ -138,6 +138,7 @@ $organization-direct-report-person-avatar-size: var(--organization-direct-report .direct-report { margin-right: 4px; + padding: 4px 0; cursor: pointer; } } diff --git a/packages/mgt-components/src/components/mgt-person-card/mgt-person-card.graph.ts b/packages/mgt-components/src/components/mgt-person-card/mgt-person-card.graph.ts index 0527ac985e..b1e846b1a3 100644 --- a/packages/mgt-components/src/components/mgt-person-card/mgt-person-card.graph.ts +++ b/packages/mgt-components/src/components/mgt-person-card/mgt-person-card.graph.ts @@ -5,7 +5,7 @@ * ------------------------------------------------------------------------------------------- */ -import { BatchResponse, IBatch, IGraph, prepScopes } from '@microsoft/mgt-element'; +import { BatchResponse, CacheItem, CacheService, CacheStore, IBatch, IGraph, prepScopes } from '@microsoft/mgt-element'; import { Chat, ChatMessage } from '@microsoft/microsoft-graph-types'; import { Profile } from '@microsoft/microsoft-graph-types-beta'; @@ -15,6 +15,7 @@ import { MgtPersonCardState } from './mgt-person-card.types'; import { MgtPersonCardConfig } from './MgtPersonCardConfig'; import { validUserByIdScopes } from '../../graph/graph.user'; import { validInsightScopes } from '../../graph/graph.files'; +import { schemas } from '../../graph/cacheStores'; const userProperties = 'businessPhones,companyName,department,displayName,givenName,jobTitle,mail,mobilePhone,officeLocation,preferredLanguage,surname,userPrincipalName,id,accountEnabled'; @@ -27,6 +28,11 @@ const batchKeys = { person: 'person' }; +interface CacheCardState extends MgtPersonCardState, CacheItem {} + +export const getCardStateInvalidationTime = (): number => + CacheService.config.users.invalidationPeriod || CacheService.config.defaultInvalidationPeriod; + /** * Get data to populate the person card * @@ -44,6 +50,15 @@ export const getPersonCardGraphData = async ( ): Promise => { const userId = personDetails.id; const email = getEmailFromGraphEntity(personDetails); + const cache: CacheStore = CacheService.getCache( + schemas.users, + schemas.users.stores.cardState + ); + const cardState = await cache.getValue(userId); + + if (cardState && getCardStateInvalidationTime() > Date.now() - cardState.timeCached) { + return cardState; + } const isContactOrGroup = 'classification' in personDetails || @@ -101,6 +116,8 @@ export const getPersonCardGraphData = async ( data.directReports = data.directReports.filter(report => report.accountEnabled); } + await cache.putValue(userId, data); + return data; }; diff --git a/packages/mgt-components/src/components/mgt-person/mgt-person.ts b/packages/mgt-components/src/components/mgt-person/mgt-person.ts index 2ee2c88fbb..9a20d91b2e 100644 --- a/packages/mgt-components/src/components/mgt-person/mgt-person.ts +++ b/packages/mgt-components/src/components/mgt-person/mgt-person.ts @@ -38,6 +38,7 @@ import { personCardConverter, type PersonCardInteraction } from './../PersonCard import { styles } from './mgt-person-css'; import { AvatarType, MgtPersonConfig, avatarTypeConverter } from './mgt-person-types'; import { strings } from './strings'; +import { getPersonCardGraphData } from '../mgt-person-card/mgt-person-card.graph'; /** * Person properties part of original set provided by graph by default @@ -1202,6 +1203,12 @@ export class MgtPerson extends MgtTemplatedTaskComponent { details = this.personDetailsInternal || this.personDetails || this.fallbackDetails; + // load card data at this point + if (this.personCardInteraction !== 'none') { + // perform the batch requests and cache + void getPersonCardGraphData(graph, details, this.personQuery === 'me'); + } + // populate presence const defaultPresence: Presence = { activity: 'Offline', diff --git a/packages/mgt-components/src/graph/cacheStores.ts b/packages/mgt-components/src/graph/cacheStores.ts index 0c89298ade..ce6fbd76f9 100644 --- a/packages/mgt-components/src/graph/cacheStores.ts +++ b/packages/mgt-components/src/graph/cacheStores.ts @@ -21,9 +21,10 @@ export const schemas = { stores: { users: 'users', usersQuery: 'usersQuery', - userFilters: 'userFilters' + userFilters: 'userFilters', + cardState: 'cardState' }, - version: 3 + version: 4 }, photos: { name: 'photos', diff --git a/packages/mgt-components/src/graph/graph.files.ts b/packages/mgt-components/src/graph/graph.files.ts index 2a64d84154..b19fc7cd7f 100644 --- a/packages/mgt-components/src/graph/graph.files.ts +++ b/packages/mgt-components/src/graph/graph.files.ts @@ -254,7 +254,8 @@ const getIterator = async ( // get iterator from cached values const cache: CacheStore = CacheService.getCache(schemas.fileLists, storeName); - const fileList = await getFileListFromCache(cache, storeName, `${endpoint}:${top}`); + const cacheKey = `${endpoint}:${top}`; + const fileList = await getFileListFromCache(cache, storeName, cacheKey); if (fileList) { filesPageIterator = getFilesPageIteratorFromCache(graph, fileList.files, fileList.nextLink); @@ -272,7 +273,7 @@ const getIterator = async ( if (getIsFileListsCacheEnabled()) { const nextLink = filesPageIterator.nextLink; - await cache.putValue(endpoint, { + await cache.putValue(cacheKey, { files: filesPageIterator.value.map(v => JSON.stringify(v)), nextLink }); diff --git a/packages/mgt-components/src/graph/graph.user.ts b/packages/mgt-components/src/graph/graph.user.ts index 8f8012c272..dedd1465ec 100644 --- a/packages/mgt-components/src/graph/graph.user.ts +++ b/packages/mgt-components/src/graph/graph.user.ts @@ -420,7 +420,7 @@ export const findUsers = async (graph: IGraph, query: string, top = 10, userFilt const encodedQuery = `${query.replace(/#/g, '%2523')}`; const graphBuilder = graph .api('users') - .search(`"displayName:${encodedQuery}" OR "mail:${encodedQuery}" OR "userPrincipalName: ${encodedQuery}"`) + .search(`"displayName:${encodedQuery}" OR "mail:${encodedQuery}" OR "userPrincipalName:${encodedQuery}"`) .header('ConsistencyLevel', 'eventual') .count(true); let graphResult: CollectionResponse; @@ -506,7 +506,7 @@ export const findGroupMembers = async ( const graphClient: GraphRequest = graph.api(apiUrl).top(top).filter(filter); - if (userFilters) { + if (userFilters || query) { graphClient.header('ConsistencyLevel', 'eventual').count(true); } diff --git a/packages/mgt-element/package.json b/packages/mgt-element/package.json index f3c750acbb..3d97e012e5 100644 --- a/packages/mgt-element/package.json +++ b/packages/mgt-element/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-element", - "version": "4.2.3", + "version": "4.2.4", "description": "Microsoft Graph Toolkit base classes", "homepage": "https://github.com/microsoftgraph/microsoft-graph-toolkit", "bugs": { diff --git a/packages/mgt-element/src/utils/version.ts b/packages/mgt-element/src/utils/version.ts index 4720e596a2..e2c9e61aac 100644 --- a/packages/mgt-element/src/utils/version.ts +++ b/packages/mgt-element/src/utils/version.ts @@ -8,4 +8,4 @@ // THIS FILE IS AUTO GENERATED // ANY CHANGES WILL BE LOST DURING BUILD -export const PACKAGE_VERSION = '4.1.0'; +export const PACKAGE_VERSION = '4.2.3'; diff --git a/packages/mgt-react/package.json b/packages/mgt-react/package.json index 8d4a29eb08..59d39771cc 100644 --- a/packages/mgt-react/package.json +++ b/packages/mgt-react/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-react", - "version": "4.2.3", + "version": "4.2.4", "description": "Microsoft Graph Toolkit React wrapper class", "author": "Microsoft", "license": "MIT", diff --git a/packages/mgt-spfx-utils/package.json b/packages/mgt-spfx-utils/package.json index 991a996164..dbd2900300 100644 --- a/packages/mgt-spfx-utils/package.json +++ b/packages/mgt-spfx-utils/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-spfx-utils", - "version": "4.2.3", + "version": "4.2.4", "description": "Helper utilities for loading MGT based libraries and web parts in a SPFx context", "main": "./dist/es6/index.js", "types": "./dist/es6/index.d.ts", diff --git a/packages/mgt/package.json b/packages/mgt/package.json index 1cfb591744..335f11a17f 100644 --- a/packages/mgt/package.json +++ b/packages/mgt/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-electron-provider/package.json b/packages/providers/mgt-electron-provider/package.json index ed379cd3b3..78c8ce8f91 100644 --- a/packages/providers/mgt-electron-provider/package.json +++ b/packages/providers/mgt-electron-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-electron-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit Electron Provider", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-electron-provider/src/Authenticator/ElectronAuthenticator.ts b/packages/providers/mgt-electron-provider/src/Authenticator/ElectronAuthenticator.ts index 655bcb12fd..4cdea63eb2 100644 --- a/packages/providers/mgt-electron-provider/src/Authenticator/ElectronAuthenticator.ts +++ b/packages/providers/mgt-electron-provider/src/Authenticator/ElectronAuthenticator.ts @@ -344,7 +344,7 @@ export class ElectronAuthenticator { */ protected async getAccessToken(options?: AuthenticationProviderOptions): Promise { let authResponse: AuthenticationResult | null = null; - const scopes = options?.scopes ? options.scopes : this.authCodeUrlParams.scopes; + const scopes = options?.scopes?.length ? options.scopes : this.authCodeUrlParams.scopes; const account = this.account || (await this.getAccount()); if (account) { const request = { diff --git a/packages/providers/mgt-mock-provider/package.json b/packages/providers/mgt-mock-provider/package.json index be3b2acd15..392a55e7f7 100644 --- a/packages/providers/mgt-mock-provider/package.json +++ b/packages/providers/mgt-mock-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-mock-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit Mock Provider", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-msal2-provider/package.json b/packages/providers/mgt-msal2-provider/package.json index e690c1b494..e35e3e058f 100644 --- a/packages/providers/mgt-msal2-provider/package.json +++ b/packages/providers/mgt-msal2-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-msal2-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit Msal 2.0 Provider", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-msal2-provider/src/Msal2Provider.ts b/packages/providers/mgt-msal2-provider/src/Msal2Provider.ts index ad9fea30d4..6e5e8dd049 100644 --- a/packages/providers/mgt-msal2-provider/src/Msal2Provider.ts +++ b/packages/providers/mgt-msal2-provider/src/Msal2Provider.ts @@ -733,8 +733,8 @@ export class Msal2Provider extends IProvider { * @return {*} {Promise} * @memberof Msal2Provider */ - public async getAccessToken(options?: AuthenticationProviderOptions): Promise { - const scopes = options ? options.scopes || this.scopes : this.scopes; + public async getAccessToken(opts?: AuthenticationProviderOptions): Promise { + const scopes = opts?.scopes?.length ? opts.scopes : this.scopes; const accessTokenRequest: SilentRequest = { scopes, account: this.getAccount() diff --git a/packages/providers/mgt-proxy-provider/package.json b/packages/providers/mgt-proxy-provider/package.json index 78efd5e0a6..4cccabb105 100644 --- a/packages/providers/mgt-proxy-provider/package.json +++ b/packages/providers/mgt-proxy-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-proxy-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit Proxy Provider", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-sharepoint-provider/package.json b/packages/providers/mgt-sharepoint-provider/package.json index a2579743b2..ad30bc94ea 100644 --- a/packages/providers/mgt-sharepoint-provider/package.json +++ b/packages/providers/mgt-sharepoint-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-sharepoint-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit SharePoint Provider", "keywords": [ "microsoft graph", diff --git a/packages/providers/mgt-teamsfx-provider/package.json b/packages/providers/mgt-teamsfx-provider/package.json index f526056281..ea7a00e446 100644 --- a/packages/providers/mgt-teamsfx-provider/package.json +++ b/packages/providers/mgt-teamsfx-provider/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/mgt-teamsfx-provider", - "version": "4.2.3", + "version": "4.2.4", "description": "The Microsoft Graph Toolkit TeamsFx Provider", "keywords": [ "microsoft graph", diff --git a/sonar-project.properties b/sonar-project.properties index 4b4e0740fa..b37356f73d 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -2,7 +2,7 @@ sonar.projectKey=microsoftgraph_microsoft-graph-toolkit sonar.organization=microsoftgraph2 sonar.projectName=microsoft-graph-toolkit // x-release-please-start-version -sonar.projectVersion=4.2.3 +sonar.projectVersion=4.2.4 // x-release-please-end sonar.host.url=https://sonarcloud.io diff --git a/yarn.lock b/yarn.lock index 7b72b0efc5..3970a8f333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9651,13 +9651,6 @@ __metadata: languageName: node linkType: hard -"async-limiter@npm:~1.0.0": - version: 1.0.1 - resolution: "async-limiter@npm:1.0.1" - checksum: 10/2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b - languageName: node - linkType: hard - "async-mutex@npm:0.4.0": version: 0.4.0 resolution: "async-mutex@npm:0.4.0" @@ -24374,48 +24367,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:8.13.0": - version: 8.13.0 - resolution: "ws@npm:8.13.0" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/1769532b6fdab9ff659f0b17810e7501831d34ecca23fd179ee64091dd93a51f42c59f6c7bb4c7a384b6c229aca8076fb312aa35626257c18081511ef62a161d - languageName: node - linkType: hard - -"ws@npm:^6.1.0": - version: 6.2.2 - resolution: "ws@npm:6.2.2" - dependencies: - async-limiter: "npm:~1.0.0" - checksum: 10/bb791ac02ad7e59fd4208cc6dd3a5bf7a67dff4611a128ed33365996f9fc24fa0d699043559f1798b4bc8045639fd21a1fd3ceca81de560124444abd8e321afc - languageName: node - linkType: hard - -"ws@npm:^7.4.2": - version: 7.5.9 - resolution: "ws@npm:7.5.9" - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - checksum: 10/171e35012934bd8788150a7f46f963e50bac43a4dc524ee714c20f258693ac4d3ba2abadb00838fdac42a47af9e958c7ae7e6f4bc56db047ba897b8a2268cf7c - languageName: node - linkType: hard - -"ws@npm:^8.2.3": - version: 8.16.0 - resolution: "ws@npm:8.16.0" +"ws@npm:8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -24424,7 +24378,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 10/7c511c59e979bd37b63c3aea4a8e4d4163204f00bd5633c053b05ed67835481995f61a523b0ad2b603566f9a89b34cb4965cb9fab9649fbfebd8f740cea57f17 + checksum: 10/4264ae92c0b3e59c7e309001e93079b26937aab181835fb7af79f906b22cd33b6196d96556dafb4e985742dd401e99139572242e9847661fdbc96556b9e6902d languageName: node linkType: hard