diff --git a/.changeset/bump-patch-1699738736996.md b/.changeset/bump-patch-1699738736996.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1699738736996.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1699940713809.md b/.changeset/bump-patch-1699940713809.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1699940713809.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1699991612617.md b/.changeset/bump-patch-1699991612617.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1699991612617.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1699998565522.md b/.changeset/bump-patch-1699998565522.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1699998565522.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/bump-patch-1700263798234.md b/.changeset/bump-patch-1700263798234.md new file mode 100644 index 000000000000..e1eaa7980afb --- /dev/null +++ b/.changeset/bump-patch-1700263798234.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/honest-socks-sniff.md b/.changeset/honest-socks-sniff.md new file mode 100644 index 000000000000..efdaea336774 --- /dev/null +++ b/.changeset/honest-socks-sniff.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: Google Maps and Katex config settings were not visible diff --git a/.changeset/loud-foxes-grin.md b/.changeset/loud-foxes-grin.md new file mode 100644 index 000000000000..3fa989aa0dd2 --- /dev/null +++ b/.changeset/loud-foxes-grin.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: Visitor message not being sent to webhook due to wrong validation of settings diff --git a/.changeset/ninety-files-sing.md b/.changeset/ninety-files-sing.md new file mode 100644 index 000000000000..b5cf45ea81d8 --- /dev/null +++ b/.changeset/ninety-files-sing.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +regression: changed UniqueID modal being displayed wrongly during startup diff --git a/.changeset/old-buckets-camp.md b/.changeset/old-buckets-camp.md new file mode 100644 index 000000000000..e91a59816445 --- /dev/null +++ b/.changeset/old-buckets-camp.md @@ -0,0 +1,7 @@ +--- +"@rocket.chat/meteor": patch +--- + +Add the date and time to the email sent when a new device logs in + + diff --git a/.changeset/pre.json b/.changeset/pre.json index 03da0a129052..23292ba7856a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -62,6 +62,11 @@ "brown-donuts-drive", "bump-patch-1699478965737", "bump-patch-1699591347357", + "bump-patch-1699738736996", + "bump-patch-1699940713809", + "bump-patch-1699991612617", + "bump-patch-1699998565522", + "bump-patch-1700263798234", "cool-rockets-talk", "cool-zoos-move", "cuddly-ties-run", @@ -74,6 +79,7 @@ "gentle-radios-relate", "heavy-ads-carry", "hip-pans-argue", + "honest-socks-sniff", "khaki-feet-dance", "kind-books-love", "large-pandas-beam", @@ -83,7 +89,9 @@ "lucky-vans-develop", "nice-chairs-add", "ninety-carrots-flow", + "ninety-files-sing", "odd-hounds-thank", + "old-buckets-camp", "old-zoos-hang", "perfect-onions-develop", "perfect-pianos-yawn", @@ -93,7 +101,9 @@ "quiet-phones-reply", "rich-dogs-smell", "rotten-dryers-allow", + "rotten-pears-watch", "selfish-hounds-pay", + "selfish-panthers-stare", "serious-cats-fetch", "seven-carpets-march", "seven-emus-pay", @@ -107,6 +117,7 @@ "sweet-chefs-exist", "sweet-feet-relate", "tall-moons-beam", + "thick-ads-run", "thick-spoons-compete", "thirty-jokes-compete", "thirty-pumpkins-fix", @@ -119,6 +130,7 @@ "twenty-colts-hope", "warm-melons-type", "weak-cameras-pay", + "weak-elephants-kneel", "wicked-humans-hang", "wicked-jars-double", "workspace-status-admin-page" diff --git a/.changeset/rotten-pears-watch.md b/.changeset/rotten-pears-watch.md new file mode 100644 index 000000000000..9cd76a9ff8a4 --- /dev/null +++ b/.changeset/rotten-pears-watch.md @@ -0,0 +1,8 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: wrong client hash calculation due to race condition on assets + +Some deployments may suffer from some reloads if running multiple instances. It's caused by different client hashes generated due to a possible race condition on custom assets load at the startup time. Forcing the clients to talk to the right backend instances, which causes reloads if sticky sessions are not enabled. +This change removes the assets from the hash calculation preventing the race condition and possible different hashes. After this change, the clients will not reload when the admin changes assets. diff --git a/.changeset/selfish-panthers-stare.md b/.changeset/selfish-panthers-stare.md new file mode 100644 index 000000000000..cfc7c1ba891f --- /dev/null +++ b/.changeset/selfish-panthers-stare.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Fixed Canned responses stream not working, causing users to refresh to see newly created responses. diff --git a/.changeset/weak-elephants-kneel.md b/.changeset/weak-elephants-kneel.md new file mode 100644 index 000000000000..f97820f9269e --- /dev/null +++ b/.changeset/weak-elephants-kneel.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fix: `TypeError`: Cannot use 'in' operator in `undefined` for every message sent diff --git a/apps/meteor/.docker/Dockerfile.alpine b/apps/meteor/.docker/Dockerfile.alpine index 003baa57aa8b..94baef809217 100644 --- a/apps/meteor/.docker/Dockerfile.alpine +++ b/apps/meteor/.docker/Dockerfile.alpine @@ -12,7 +12,7 @@ RUN set -x \ && npm install --production \ # Start hack for sharp... && rm -rf npm/node_modules/sharp \ - && npm install sharp@0.30.4 \ + && npm install sharp@0.32.6 \ && mv node_modules/sharp npm/node_modules/sharp \ # End hack for sharp # Start hack for isolated-vm... diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 214add942d96..d676b3b742ef 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,153 @@ # @rocket.chat/meteor +## 6.5.0-rc.7 + +### Patch Changes + +- Bump @rocket.chat/meteor version. +- 88833b24e9: fix: Google Maps and Katex config settings were not visible +- 150a580851: regression: changed UniqueID modal being displayed wrongly during startup +- 7ed7cb41ce: Add the date and time to the email sent when a new device logs in + - @rocket.chat/core-typings@6.5.0-rc.7 + - @rocket.chat/rest-typings@6.5.0-rc.7 + - @rocket.chat/api-client@0.1.15-rc.7 + - @rocket.chat/license@0.1.0-rc.7 + - @rocket.chat/omnichannel-services@0.1.0-rc.7 + - @rocket.chat/pdf-worker@0.0.21-rc.7 + - @rocket.chat/presence@0.1.0-rc.7 + - @rocket.chat/core-services@0.3.0-rc.7 + - @rocket.chat/cron@0.0.17-rc.7 + - @rocket.chat/gazzodown@3.0.0-rc.7 + - @rocket.chat/model-typings@0.2.0-rc.7 + - @rocket.chat/ui-contexts@3.0.0-rc.7 + - @rocket.chat/server-cloud-communication@0.0.1 + - @rocket.chat/fuselage-ui-kit@3.0.0-rc.7 + - @rocket.chat/models@0.0.21-rc.7 + - @rocket.chat/ui-theming@0.1.1-rc.0 + - @rocket.chat/ui-client@3.0.0-rc.7 + - @rocket.chat/ui-video-conf@3.0.0-rc.7 + - @rocket.chat/web-ui-registration@3.0.0-rc.6 + - @rocket.chat/instance-status@0.0.21-rc.7 + +## 6.5.0-rc.6 + +### Patch Changes + +- Bump @rocket.chat/meteor version. +- aaf11e92dc: Fixed Canned responses stream not working, causing users to refresh to see newly created responses. + - @rocket.chat/core-typings@6.5.0-rc.6 + - @rocket.chat/rest-typings@6.5.0-rc.6 + - @rocket.chat/api-client@0.1.15-rc.6 + - @rocket.chat/license@0.1.0-rc.6 + - @rocket.chat/omnichannel-services@0.1.0-rc.6 + - @rocket.chat/pdf-worker@0.0.21-rc.6 + - @rocket.chat/presence@0.1.0-rc.6 + - @rocket.chat/core-services@0.3.0-rc.6 + - @rocket.chat/cron@0.0.17-rc.6 + - @rocket.chat/gazzodown@3.0.0-rc.6 + - @rocket.chat/model-typings@0.2.0-rc.6 + - @rocket.chat/ui-contexts@3.0.0-rc.6 + - @rocket.chat/server-cloud-communication@0.0.1 + - @rocket.chat/fuselage-ui-kit@3.0.0-rc.6 + - @rocket.chat/models@0.0.21-rc.6 + - @rocket.chat/ui-theming@0.1.1-rc.0 + - @rocket.chat/ui-client@3.0.0-rc.6 + - @rocket.chat/ui-video-conf@3.0.0-rc.6 + - @rocket.chat/web-ui-registration@3.0.0-rc.5 + - @rocket.chat/instance-status@0.0.21-rc.6 + +## 6.5.0-rc.5 + +### Patch Changes + +- Bump @rocket.chat/meteor version. +- 3ce070a3de: fix: wrong client hash calculation due to race condition on assets + + Some deployments may suffer from some reloads if running multiple instances. It's caused by different client hashes generated due to a possible race condition on custom assets load at the startup time. Forcing the clients to talk to the right backend instances, which causes reloads if sticky sessions are not enabled. + This change removes the assets from the hash calculation preventing the race condition and possible different hashes. After this change, the clients will not reload when the admin changes assets. + +- 26b8c8124c: fix: `TypeError`: Cannot use 'in' operator in `undefined` for every message sent + - @rocket.chat/core-typings@6.5.0-rc.5 + - @rocket.chat/rest-typings@6.5.0-rc.5 + - @rocket.chat/api-client@0.1.15-rc.5 + - @rocket.chat/license@0.1.0-rc.5 + - @rocket.chat/omnichannel-services@0.1.0-rc.5 + - @rocket.chat/pdf-worker@0.0.21-rc.5 + - @rocket.chat/presence@0.1.0-rc.5 + - @rocket.chat/core-services@0.3.0-rc.5 + - @rocket.chat/cron@0.0.17-rc.5 + - @rocket.chat/gazzodown@3.0.0-rc.5 + - @rocket.chat/model-typings@0.2.0-rc.5 + - @rocket.chat/ui-contexts@3.0.0-rc.5 + - @rocket.chat/server-cloud-communication@0.0.1 + - @rocket.chat/fuselage-ui-kit@3.0.0-rc.5 + - @rocket.chat/models@0.0.21-rc.5 + - @rocket.chat/ui-theming@0.1.1-rc.0 + - @rocket.chat/ui-client@3.0.0-rc.5 + - @rocket.chat/ui-video-conf@3.0.0-rc.5 + - @rocket.chat/web-ui-registration@3.0.0-rc.4 + - @rocket.chat/instance-status@0.0.21-rc.5 + +## 6.5.0-rc.4 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + - @rocket.chat/core-typings@6.5.0-rc.4 + - @rocket.chat/rest-typings@6.5.0-rc.4 + - @rocket.chat/api-client@0.1.15-rc.4 + - @rocket.chat/license@0.1.0-rc.4 + - @rocket.chat/omnichannel-services@0.1.0-rc.4 + - @rocket.chat/pdf-worker@0.0.21-rc.4 + - @rocket.chat/presence@0.1.0-rc.4 + - @rocket.chat/core-services@0.3.0-rc.4 + - @rocket.chat/cron@0.0.17-rc.4 + - @rocket.chat/gazzodown@3.0.0-rc.4 + - @rocket.chat/model-typings@0.2.0-rc.4 + - @rocket.chat/ui-contexts@3.0.0-rc.4 + - @rocket.chat/server-cloud-communication@0.0.1 + - @rocket.chat/fuselage-ui-kit@3.0.0-rc.4 + - @rocket.chat/models@0.0.21-rc.4 + - @rocket.chat/ui-theming@0.1.1-rc.0 + - @rocket.chat/ui-client@3.0.0-rc.4 + - @rocket.chat/ui-video-conf@3.0.0-rc.4 + - @rocket.chat/web-ui-registration@3.0.0-rc.3 + - @rocket.chat/instance-status@0.0.21-rc.4 + +## 6.5.0-rc.3 + +### Patch Changes + +- Bump @rocket.chat/meteor version. +- 8668485fda: fix: immediate auto reload issues + + Immediate auto reload increases server load on restarts/upgrades and increases the chance of getting 404 on Meteor's config file blocking the UI on a loading screen + + This change adds delays on front and backend codes on automatic client reload: + + - Front-end, adds a warning message including the old and new hashes, and a delay of 60 seconds after being notified by the server + - Back-end, delays the client notifications on a random value between 2 and 10 minutes per connection, allowing different clients to reload at different moments and distributing the load along the time. + - @rocket.chat/core-typings@6.5.0-rc.3 + - @rocket.chat/rest-typings@6.5.0-rc.3 + - @rocket.chat/api-client@0.1.15-rc.3 + - @rocket.chat/license@0.1.0-rc.3 + - @rocket.chat/omnichannel-services@0.1.0-rc.3 + - @rocket.chat/pdf-worker@0.0.21-rc.3 + - @rocket.chat/presence@0.1.0-rc.3 + - @rocket.chat/core-services@0.3.0-rc.3 + - @rocket.chat/cron@0.0.17-rc.3 + - @rocket.chat/gazzodown@3.0.0-rc.3 + - @rocket.chat/model-typings@0.2.0-rc.3 + - @rocket.chat/ui-contexts@3.0.0-rc.3 + - @rocket.chat/server-cloud-communication@0.0.1 + - @rocket.chat/fuselage-ui-kit@3.0.0-rc.3 + - @rocket.chat/models@0.0.21-rc.3 + - @rocket.chat/ui-theming@0.1.1-rc.0 + - @rocket.chat/ui-client@3.0.0-rc.3 + - @rocket.chat/ui-video-conf@3.0.0-rc.3 + - @rocket.chat/instance-status@0.0.21-rc.3 + - @rocket.chat/web-ui-registration@3.0.0-rc.2 + ## 6.5.0-rc.2 ### Patch Changes @@ -174,6 +322,98 @@ - @rocket.chat/server-cloud-communication@0.0.1 - @rocket.chat/instance-status@0.0.21-rc.0 +## 6.4.8 + +### Patch Changes + +- 550900bb2b: Bump @rocket.chat/meteor version. +- Bump @rocket.chat/meteor version. + - @rocket.chat/core-typings@6.4.8 + - @rocket.chat/rest-typings@6.4.8 + - @rocket.chat/api-client@0.1.17 + - @rocket.chat/omnichannel-services@0.0.23 + - @rocket.chat/pdf-worker@0.0.23 + - @rocket.chat/presence@0.0.23 + - @rocket.chat/core-services@0.2.8 + - @rocket.chat/cron@0.0.19 + - @rocket.chat/gazzodown@2.0.8 + - @rocket.chat/model-typings@0.1.8 + - @rocket.chat/ui-contexts@2.0.8 + - @rocket.chat/fuselage-ui-kit@2.0.8 + - @rocket.chat/models@0.0.23 + - @rocket.chat/ui-theming@0.1.0 + - @rocket.chat/ui-client@2.0.8 + - @rocket.chat/ui-video-conf@2.0.8 + - @rocket.chat/web-ui-registration@2.0.8 + - @rocket.chat/instance-status@0.0.23 + +## 6.4.7 + +### Patch Changes + +- 037efa4f4f: Bump @rocket.chat/meteor version. +- Bump @rocket.chat/meteor version. +- b98492e3ee: Add additional checks to the OAuth tokens to prevent future issues + - @rocket.chat/core-typings@6.4.7 + - @rocket.chat/rest-typings@6.4.7 + - @rocket.chat/api-client@0.1.16 + - @rocket.chat/omnichannel-services@0.0.22 + - @rocket.chat/pdf-worker@0.0.22 + - @rocket.chat/presence@0.0.22 + - @rocket.chat/core-services@0.2.7 + - @rocket.chat/cron@0.0.18 + - @rocket.chat/gazzodown@2.0.7 + - @rocket.chat/model-typings@0.1.7 + - @rocket.chat/ui-contexts@2.0.7 + - @rocket.chat/fuselage-ui-kit@2.0.7 + - @rocket.chat/models@0.0.22 + - @rocket.chat/ui-theming@0.1.0 + - @rocket.chat/ui-client@2.0.7 + - @rocket.chat/ui-video-conf@2.0.7 + - @rocket.chat/web-ui-registration@2.0.7 + - @rocket.chat/instance-status@0.0.22 + +## 6.4.6 + +### Patch Changes + +- 35ea15005a: Bump @rocket.chat/meteor version. +- Bump @rocket.chat/meteor version. +- 57deb49ceb: fix: OAuth login by redirect failing on firefox +- 00875fc9ab: fix: wrong client hash calculation due to race condition on assets + + Some deployments may suffer from some reloads if running multiple instances. It's caused by different client hashes generated due to a possible race condition on custom assets load at the startup time. Forcing the clients to talk to the right backend instances, which causes reloads if sticky sessions are not enabled. + This change removes the assets from the hash calculation preventing the race condition and possible different hashes. After this change, the clients will not reload when the admin changes assets. + +- b7ea8651bf: fix: immediate auto reload issues + + Immediate auto reload increases server load on restarts/upgrades and increases the chance of getting 404 on Meteor's config file blocking the UI on a loading screen + + This change adds delays on front and backend codes on automatic client reload: + + - Front-end, adds a warning message including the old and new hashes, and a delay of 60 seconds after being notified by the server + - Back-end, delays the client notifications on a random value between 2 and 10 minutes per connection, allowing different clients to reload at different moments and distributing the load along the time. + +- 873eea9d54: fix: `TypeError`: Cannot use 'in' operator in `undefined` for every message sent + - @rocket.chat/core-typings@6.4.6 + - @rocket.chat/rest-typings@6.4.6 + - @rocket.chat/api-client@0.1.15 + - @rocket.chat/omnichannel-services@0.0.21 + - @rocket.chat/pdf-worker@0.0.21 + - @rocket.chat/presence@0.0.21 + - @rocket.chat/core-services@0.2.6 + - @rocket.chat/cron@0.0.17 + - @rocket.chat/gazzodown@2.0.6 + - @rocket.chat/model-typings@0.1.6 + - @rocket.chat/ui-contexts@2.0.6 + - @rocket.chat/fuselage-ui-kit@2.0.6 + - @rocket.chat/models@0.0.21 + - @rocket.chat/ui-theming@0.1.0 + - @rocket.chat/ui-client@2.0.6 + - @rocket.chat/ui-video-conf@2.0.6 + - @rocket.chat/web-ui-registration@2.0.6 + - @rocket.chat/instance-status@0.0.21 + ## 6.4.5 ### Patch Changes diff --git a/apps/meteor/app/assets/server/assets.ts b/apps/meteor/app/assets/server/assets.ts index 726d16ac34bf..529526ba6750 100644 --- a/apps/meteor/app/assets/server/assets.ts +++ b/apps/meteor/app/assets/server/assets.ts @@ -1,16 +1,14 @@ import crypto from 'crypto'; import type { ServerResponse, IncomingMessage } from 'http'; -import type { IRocketChatAssets, IRocketChatAsset, IRocketChatAssetCache } from '@rocket.chat/core-typings'; +import type { IRocketChatAssets, IRocketChatAsset } from '@rocket.chat/core-typings'; import { Settings } from '@rocket.chat/models'; import type { ServerMethods } from '@rocket.chat/ui-contexts'; import type { NextHandleFunction } from 'connect'; import sizeOf from 'image-size'; import { Meteor } from 'meteor/meteor'; import { WebApp, WebAppInternals } from 'meteor/webapp'; -import { WebAppHashing } from 'meteor/webapp-hashing'; import sharp from 'sharp'; -import _ from 'underscore'; import { hasPermissionAsync } from '../../authorization/server/functions/hasPermission'; import { RocketChatFile } from '../../file/server'; @@ -371,55 +369,6 @@ Meteor.startup(() => { }, 200); }); -const { calculateClientHash } = WebAppHashing; - -WebAppHashing.calculateClientHash = function (manifest, includeFilter, runtimeConfigOverride): string { - for (const key of Object.keys(assets)) { - const value = getAssetByKey(key); - if (!value.cache && !value.defaultUrl) { - continue; - } - - let cache: IRocketChatAssetCache; - if (value.cache) { - cache = { - path: value.cache.path, - cacheable: value.cache.cacheable, - sourceMapUrl: value.cache.sourceMapUrl, - where: value.cache.where, - type: value.cache.type, - url: value.cache.url, - size: value.cache.size, - hash: value.cache.hash, - }; - } else { - const extension = value.defaultUrl?.split('.').pop(); - cache = { - path: `assets/${key}.${extension}`, - cacheable: false, - sourceMapUrl: undefined, - where: 'client', - type: 'asset', - url: `/assets/${key}.${extension}?v3`, - hash: 'v3', - }; - } - - const manifestItem = _.findWhere(manifest, { - path: key, - }); - - if (manifestItem) { - const index = manifest.indexOf(manifestItem); - manifest[index] = cache; - } else { - manifest.push(cache); - } - } - - return calculateClientHash.call(this, manifest, includeFilter, runtimeConfigOverride); -}; - declare module '@rocket.chat/ui-contexts' { // eslint-disable-next-line @typescript-eslint/naming-convention interface ServerMethods { diff --git a/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts b/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts index ea94db8d17a1..cc08b42b4556 100644 --- a/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts +++ b/apps/meteor/app/cloud/server/functions/buildRegistrationData.ts @@ -1,4 +1,5 @@ -import { Statistics, Users } from '@rocket.chat/models'; +import { LivechatRooms, Statistics, Users } from '@rocket.chat/models'; +import moment from 'moment'; import { settings } from '../../../settings/server'; import { statistics } from '../../../statistics/server'; @@ -61,6 +62,7 @@ export async function buildWorkspaceRegistrationData { try { - const token = await getWorkspaceAccessTokenOrThrow(false, 'workspace:billing'); + const token = await getWorkspaceAccessTokenOrThrow(true, 'workspace:billing', false); const subscriptionURL = getURL('admin/subscription', { full: true, diff --git a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts index b495e3342d4b..d5b92c97ef7d 100644 --- a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts +++ b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessToken.ts @@ -10,7 +10,7 @@ import { retrieveRegistrationStatus } from './retrieveRegistrationStatus'; * @param {boolean} save * @returns string */ -export async function getWorkspaceAccessToken(forceNew = false, scope = '', save = true): Promise { +export async function getWorkspaceAccessToken(forceNew = false, scope = '', save = true, throwOnError = false): Promise { const { workspaceRegistered } = await retrieveRegistrationStatus(); if (!workspaceRegistered) { @@ -29,7 +29,7 @@ export async function getWorkspaceAccessToken(forceNew = false, scope = '', save return settings.get('Cloud_Workspace_Access_Token'); } - const accessToken = await getWorkspaceAccessTokenWithScope(scope); + const accessToken = await getWorkspaceAccessTokenWithScope(scope, throwOnError); if (save) { await Promise.all([ @@ -37,7 +37,6 @@ export async function getWorkspaceAccessToken(forceNew = false, scope = '', save Settings.updateValueById('Cloud_Workspace_Access_Token_Expires_At', accessToken.expiresAt), ]); } - return accessToken.token; } @@ -47,11 +46,17 @@ export class CloudWorkspaceAccessTokenError extends Error { } } +export class CloudWorkspaceAccessTokenEmptyError extends Error { + constructor() { + super('Workspace access token is empty'); + } +} + export async function getWorkspaceAccessTokenOrThrow(forceNew = false, scope = '', save = true): Promise { - const token = await getWorkspaceAccessToken(forceNew, scope, save); + const token = await getWorkspaceAccessToken(forceNew, scope, save, true); if (!token) { - throw new CloudWorkspaceAccessTokenError(); + throw new CloudWorkspaceAccessTokenEmptyError(); } return token; diff --git a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessTokenWithScope.ts b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessTokenWithScope.ts index 88509902cb6d..bb32476fd3dc 100644 --- a/apps/meteor/app/cloud/server/functions/getWorkspaceAccessTokenWithScope.ts +++ b/apps/meteor/app/cloud/server/functions/getWorkspaceAccessTokenWithScope.ts @@ -4,10 +4,11 @@ import { SystemLogger } from '../../../../server/lib/logger/system'; import { settings } from '../../../settings/server'; import { workspaceScopes } from '../oauthScopes'; import { getRedirectUri } from './getRedirectUri'; +import { CloudWorkspaceAccessTokenError } from './getWorkspaceAccessToken'; import { removeWorkspaceRegistrationInfo } from './removeWorkspaceRegistrationInfo'; import { retrieveRegistrationStatus } from './retrieveRegistrationStatus'; -export async function getWorkspaceAccessTokenWithScope(scope = '') { +export async function getWorkspaceAccessTokenWithScope(scope = '', throwOnError = false) { const { workspaceRegistered } = await retrieveRegistrationStatus(); const tokenResponse = { token: '', expiresAt: new Date() }; @@ -58,6 +59,9 @@ export async function getWorkspaceAccessTokenWithScope(scope = '') { if (err.response?.data?.error === 'oauth_invalid_client_credentials') { SystemLogger.error('Server has been unregistered from cloud'); void removeWorkspaceRegistrationInfo(); + if (throwOnError) { + throw new CloudWorkspaceAccessTokenError(); + } } return tokenResponse; diff --git a/apps/meteor/app/cloud/server/functions/getWorkspaceLicense.ts b/apps/meteor/app/cloud/server/functions/getWorkspaceLicense.ts index f9f0cfadc669..ca97e2a6fcdd 100644 --- a/apps/meteor/app/cloud/server/functions/getWorkspaceLicense.ts +++ b/apps/meteor/app/cloud/server/functions/getWorkspaceLicense.ts @@ -49,36 +49,25 @@ const fetchCloudWorkspaceLicensePayload = async ({ token }: { token: string }): return payload; }; -export async function getWorkspaceLicense(): Promise<{ updated: boolean; license: string }> { +export async function getWorkspaceLicense() { const currentLicense = await Settings.findOne('Cloud_Workspace_License'); // it should never happen, since even if the license is not found, it will return an empty settings if (!currentLicense?._updatedAt) { throw new CloudWorkspaceLicenseError('Failed to retrieve current license'); } - const fromCurrentLicense = async () => { - const license = currentLicense?.value as string | undefined; - if (license) { - await callbacks.run('workspaceLicenseChanged', license); - } - - return { updated: false, license: license ?? '' }; - }; - try { const token = await getWorkspaceAccessToken(); if (!token) { - return fromCurrentLicense(); + return; } const payload = await fetchCloudWorkspaceLicensePayload({ token }); if (currentLicense.value && Date.parse(payload.updatedAt) <= currentLicense._updatedAt.getTime()) { - return fromCurrentLicense(); + return; } - await Settings.updateValueById('Cloud_Workspace_License', payload.license); - await callbacks.run('workspaceLicenseChanged', payload.license); return { updated: true, license: payload.license }; @@ -88,7 +77,5 @@ export async function getWorkspaceLicense(): Promise<{ updated: boolean; license url: '/license', err, }); - - return fromCurrentLicense(); } } diff --git a/apps/meteor/app/cloud/server/functions/removeWorkspaceRegistrationInfo.ts b/apps/meteor/app/cloud/server/functions/removeWorkspaceRegistrationInfo.ts index 5884a282482b..ec26e0bb9b27 100644 --- a/apps/meteor/app/cloud/server/functions/removeWorkspaceRegistrationInfo.ts +++ b/apps/meteor/app/cloud/server/functions/removeWorkspaceRegistrationInfo.ts @@ -18,5 +18,6 @@ export async function removeWorkspaceRegistrationInfo() { Settings.updateValueById('Cloud_Workspace_Registration_Client_Uri', null), ]); + await Settings.updateValueById('Show_Setup_Wizard', 'in_progress'); return true; } diff --git a/apps/meteor/app/cloud/server/functions/saveRegistrationData.ts b/apps/meteor/app/cloud/server/functions/saveRegistrationData.ts index 8e1e03113af4..9faa52c787b5 100644 --- a/apps/meteor/app/cloud/server/functions/saveRegistrationData.ts +++ b/apps/meteor/app/cloud/server/functions/saveRegistrationData.ts @@ -1,6 +1,7 @@ import { Settings } from '@rocket.chat/models'; -import { callbacks } from '../../../../lib/callbacks'; +import { settings } from '../../../settings/server'; +import { syncCloudData } from './syncWorkspace/syncCloudData'; export function saveRegistrationData({ workspaceId, @@ -10,7 +11,6 @@ export function saveRegistrationData({ client_secret_expires_at, publicKey, registration_client_uri, - licenseData, }: { workspaceId: string; client_name: string; @@ -19,9 +19,6 @@ export function saveRegistrationData({ client_secret_expires_at: number; publicKey: string; registration_client_uri: string; - licenseData: { - license: string; - }; }) { return Promise.all([ Settings.updateValueById('Register_Server', true), @@ -32,9 +29,29 @@ export function saveRegistrationData({ Settings.updateValueById('Cloud_Workspace_Client_Secret_Expires_At', client_secret_expires_at), Settings.updateValueById('Cloud_Workspace_PublicKey', publicKey), Settings.updateValueById('Cloud_Workspace_Registration_Client_Uri', registration_client_uri), - Settings.updateValueById('Cloud_Workspace_License', licenseData.license || ''), ]).then(async (...results) => { - await callbacks.run('workspaceLicenseChanged', licenseData.license); + // wait until all the settings are updated before syncing the data + for await (const retry of Array.from({ length: 10 })) { + if ( + settings.get('Register_Server') === true && + settings.get('Cloud_Workspace_Id') === workspaceId && + settings.get('Cloud_Workspace_Name') === client_name && + settings.get('Cloud_Workspace_Client_Id') === client_id && + settings.get('Cloud_Workspace_Client_Secret') === client_secret && + settings.get('Cloud_Workspace_Client_Secret_Expires_At') === client_secret_expires_at && + settings.get('Cloud_Workspace_PublicKey') === publicKey && + settings.get('Cloud_Workspace_Registration_Client_Uri') === registration_client_uri + ) { + break; + } + + if (retry === 9) { + throw new Error('Failed to save registration data'); + } + await new Promise((resolve) => setTimeout(resolve, 1000)); + } + + await syncCloudData(); return results; }); } diff --git a/apps/meteor/app/cloud/server/functions/syncWorkspace/syncCloudData.ts b/apps/meteor/app/cloud/server/functions/syncWorkspace/syncCloudData.ts index 5f529a4892ec..63dc37dd9901 100644 --- a/apps/meteor/app/cloud/server/functions/syncWorkspace/syncCloudData.ts +++ b/apps/meteor/app/cloud/server/functions/syncWorkspace/syncCloudData.ts @@ -1,4 +1,5 @@ import type { Cloud, Serialized } from '@rocket.chat/core-typings'; +import { DuplicatedLicenseError } from '@rocket.chat/license'; import { serverFetch as fetch } from '@rocket.chat/server-fetch'; import { v, compile } from 'suretype'; @@ -74,8 +75,30 @@ export async function syncCloudData() { await callbacks.run('workspaceLicenseChanged', license); + SystemLogger.info({ + msg: 'Synced with Rocket.Chat Cloud', + function: 'syncCloudData', + }); + return true; } catch (err) { + /** + * If some of CloudWorkspaceAccessError and CloudWorkspaceRegistrationError happens, makes no sense to run the legacySyncWorkspace + * because it will fail too. + * The DuplicatedLicenseError license error is also ignored because it is not a problem. the Cloud is allowed to send the same license twice. + */ + switch (true) { + case err instanceof CloudWorkspaceAccessError: + case err instanceof CloudWorkspaceRegistrationError: + case err instanceof DuplicatedLicenseError: + SystemLogger.info({ + msg: 'Failed to sync with Rocket.Chat Cloud', + function: 'syncCloudData', + err, + }); + return; + } + SystemLogger.error({ msg: 'Failed to sync with Rocket.Chat Cloud', url: '/sync', @@ -83,5 +106,10 @@ export async function syncCloudData() { }); } + SystemLogger.info({ + msg: 'Falling back to legacy sync', + function: 'syncCloudData', + }); + await legacySyncWorkspace(); } diff --git a/apps/meteor/app/cloud/server/methods.ts b/apps/meteor/app/cloud/server/methods.ts index 1d328d0c213e..edb3a078ac14 100644 --- a/apps/meteor/app/cloud/server/methods.ts +++ b/apps/meteor/app/cloud/server/methods.ts @@ -29,7 +29,6 @@ declare module '@rocket.chat/ui-contexts' { 'cloud:syncWorkspace': () => boolean; 'cloud:connectWorkspace': (token: string) => boolean | Error; 'cloud:reconnectWorkspace': () => boolean; - 'cloud:disconnectWorkspace': () => boolean; 'cloud:getOAuthAuthorizationUrl': () => string; 'cloud:finishOAuthAuthorization': (code: string, state: string) => boolean; 'cloud:checkUserLoggedIn': () => boolean; diff --git a/apps/meteor/app/lib/server/functions/sendMessage.js b/apps/meteor/app/lib/server/functions/sendMessage.js index 72247d4b1870..f4d84c64d59e 100644 --- a/apps/meteor/app/lib/server/functions/sendMessage.js +++ b/apps/meteor/app/lib/server/functions/sendMessage.js @@ -248,9 +248,9 @@ export const sendMessage = async function (user, message, room, upsert = false, parseUrlsInMessage(message, previewUrls); - message = await Message.beforeSave({ message, room, user }); - message = await callbacks.run('beforeSaveMessage', message, room); + + message = await Message.beforeSave({ message, room, user }); if (message) { if (message.t === 'otr') { const otrStreamer = notifications.streamRoomMessage; diff --git a/apps/meteor/app/lib/server/functions/updateMessage.ts b/apps/meteor/app/lib/server/functions/updateMessage.ts index 9c544bd9a333..baca3f1b80ca 100644 --- a/apps/meteor/app/lib/server/functions/updateMessage.ts +++ b/apps/meteor/app/lib/server/functions/updateMessage.ts @@ -54,11 +54,11 @@ export const updateMessage = async function ( return; } + message = await callbacks.run('beforeSaveMessage', message); + // TODO remove type cast message = await Message.beforeSave({ message: message as IMessage, room, user }); - message = await callbacks.run('beforeSaveMessage', message); - const { _id, ...editedMessage } = message; if (!editedMessage.msg) { diff --git a/apps/meteor/app/lib/server/index.ts b/apps/meteor/app/lib/server/index.ts index 8fa779ec9644..c2d4bdda7472 100644 --- a/apps/meteor/app/lib/server/index.ts +++ b/apps/meteor/app/lib/server/index.ts @@ -21,8 +21,6 @@ import './methods/createToken'; import './methods/deleteMessage'; import './methods/deleteUserOwnAccount'; import './methods/executeSlashCommandPreview'; -import './startup/filterATAllTag'; -import './startup/filterATHereTag'; import './methods/getChannelHistory'; import './methods/getRoomJoinCode'; import './methods/getRoomRoles'; diff --git a/apps/meteor/app/lib/server/startup/filterATAllTag.ts b/apps/meteor/app/lib/server/startup/filterATAllTag.ts deleted file mode 100644 index dfa3b1b1d84a..000000000000 --- a/apps/meteor/app/lib/server/startup/filterATAllTag.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import { isEditedMessage } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; -import moment from 'moment'; -import _ from 'underscore'; - -import { callbacks } from '../../../../lib/callbacks'; -import { i18n } from '../../../../server/lib/i18n'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -callbacks.add( - 'beforeSaveMessage', - async (message) => { - // If the message was edited, or is older than 60 seconds (imported) - // the notifications will be skipped, so we can also skip this validation - if (isEditedMessage(message) || (message.ts && Math.abs(moment(message.ts).diff(moment())) > 60000)) { - return message; - } - - // Test if the message mentions include @all. - if (message.mentions != null && _.pluck(message.mentions, '_id').some((item) => item === 'all')) { - // Check if the user has permissions to use @all in both global and room scopes. - if ( - !(await hasPermissionAsync(message.u._id, 'mention-all')) && - !(await hasPermissionAsync(message.u._id, 'mention-all', message.rid)) - ) { - // Get the language of the user for the error notification. - const { language } = (await Users.findOneById(message.u._id)) || {}; - const action = i18n.t('Notify_all_in_this_room', { lng: language }); - - // Add a notification to the chat, informing the user that this - // action is not allowed. - void api.broadcast('notify.ephemeralMessage', message.u._id, message.rid, { - // TODO: i18n - msg: i18n.t('error-action-not-allowed', { action } as any, language), - }); - - // Also throw to stop propagation of 'sendMessage'. - throw new Meteor.Error('error-action-not-allowed', 'Notify all in this room not allowed', { - method: 'filterATAllTag', - action: 'Notify_all_in_this_room', - }); - } - } - - return message; - }, - callbacks.priority.MEDIUM, - 'filterATAllTag', -); diff --git a/apps/meteor/app/lib/server/startup/filterATHereTag.ts b/apps/meteor/app/lib/server/startup/filterATHereTag.ts deleted file mode 100644 index 305f03455d81..000000000000 --- a/apps/meteor/app/lib/server/startup/filterATHereTag.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { api } from '@rocket.chat/core-services'; -import { isEditedMessage } from '@rocket.chat/core-typings'; -import { Users } from '@rocket.chat/models'; -import { Meteor } from 'meteor/meteor'; -import moment from 'moment'; -import _ from 'underscore'; - -import { callbacks } from '../../../../lib/callbacks'; -import { i18n } from '../../../../server/lib/i18n'; -import { hasPermissionAsync } from '../../../authorization/server/functions/hasPermission'; - -callbacks.add( - 'beforeSaveMessage', - async (message) => { - // If the message was edited, or is older than 60 seconds (imported) - // the notifications will be skipped, so we can also skip this validation - if (isEditedMessage(message) || (message.ts && Math.abs(moment(message.ts).diff(moment())) > 60000)) { - return message; - } - - // Test if the message mentions include @here. - if (message.mentions != null && _.pluck(message.mentions, '_id').some((item) => item === 'here')) { - // Check if the user has permissions to use @here in both global and room scopes. - if ( - !(await hasPermissionAsync(message.u._id, 'mention-here')) && - !(await hasPermissionAsync(message.u._id, 'mention-here', message.rid)) - ) { - // Get the language of the user for the error notification. - const { language } = (await Users.findOneById(message.u._id)) || {}; - const action = i18n.t('Notify_active_in_this_room', { lng: language }); - - // Add a notification to the chat, informing the user that this - // action is not allowed. - void api.broadcast('notify.ephemeralMessage', message.u._id, message.rid, { - // TODO: i18n - msg: i18n.t('error-action-not-allowed', { action } as any, language), - }); - - // Also throw to stop propagation of 'sendMessage'. - throw new Meteor.Error('error-action-not-allowed', 'Notify here in this room not allowed', { - method: 'filterATHereTag', - action: 'Notify_active_in_this_room', - }); - } - } - - return message; - }, - callbacks.priority.MEDIUM, - 'filterATHereTag', -); diff --git a/apps/meteor/app/livechat/server/hooks/sendToCRM.ts b/apps/meteor/app/livechat/server/hooks/sendToCRM.ts index d435da17e8ec..44b55e1b82f8 100644 --- a/apps/meteor/app/livechat/server/hooks/sendToCRM.ts +++ b/apps/meteor/app/livechat/server/hooks/sendToCRM.ts @@ -269,7 +269,7 @@ callbacks.add( if (message.token && !settings.get('Livechat_webhook_on_visitor_message')) { return message; } - if (!settings.get('Livechat_webhook_on_agent_message')) { + if (!message.token && !settings.get('Livechat_webhook_on_agent_message')) { return message; } // if the message has a type means it is a special message (like the closing comment), so skips diff --git a/apps/meteor/app/livechat/server/lib/AnalyticsTyped.ts b/apps/meteor/app/livechat/server/lib/AnalyticsTyped.ts index 20717d6e02dd..1b0f7b4c2919 100644 --- a/apps/meteor/app/livechat/server/lib/AnalyticsTyped.ts +++ b/apps/meteor/app/livechat/server/lib/AnalyticsTyped.ts @@ -7,6 +7,6 @@ export const getAgentOverviewDataCached = mem(Analytics.getAgentOverviewData, { // while the data on the overview page is cached for 1 minute export const getAnalyticsOverviewDataCached = mem(Analytics.getAnalyticsOverviewData, { maxAge: 60000, cacheKey: JSON.stringify }); export const getAnalyticsOverviewDataCachedForRealtime = mem(Analytics.getAnalyticsOverviewData, { - maxAge: 5000, + maxAge: process.env.TEST_MODE === 'true' ? 1 : 5000, cacheKey: JSON.stringify, }); diff --git a/apps/meteor/app/livechat/server/lib/Helper.ts b/apps/meteor/app/livechat/server/lib/Helper.ts index 29e4e18f0e05..78351cdc6683 100644 --- a/apps/meteor/app/livechat/server/lib/Helper.ts +++ b/apps/meteor/app/livechat/server/lib/Helper.ts @@ -1,5 +1,5 @@ import { LivechatTransferEventType } from '@rocket.chat/apps-engine/definition/livechat'; -import { api, Message } from '@rocket.chat/core-services'; +import { api, Message, Omnichannel } from '@rocket.chat/core-services'; import type { ILivechatVisitor, IOmnichannelRoom, @@ -543,10 +543,8 @@ export const forwardRoomToDepartment = async (room: IOmnichannelRoom, guest: ILi agent = { agentId, username }; } - if (!RoutingManager.getConfig()?.autoAssignAgent) { - logger.debug( - `Routing algorithm doesn't support auto assignment (using ${RoutingManager.methodName}). Chat will be on department queue`, - ); + if (!RoutingManager.getConfig()?.autoAssignAgent || !(await Omnichannel.isWithinMACLimit(room))) { + logger.debug(`Room ${room._id} will be on department queue`); await LivechatTyped.saveTransferHistory(room, transferData); return RoutingManager.unassignAgent(inquiry, departmentId); } diff --git a/apps/meteor/app/livechat/server/lib/LivechatTyped.ts b/apps/meteor/app/livechat/server/lib/LivechatTyped.ts index 317d2e6c7b53..27c99d4e1000 100644 --- a/apps/meteor/app/livechat/server/lib/LivechatTyped.ts +++ b/apps/meteor/app/livechat/server/lib/LivechatTyped.ts @@ -527,11 +527,7 @@ class LivechatClass { throw new Error('error-invalid-room'); } - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - - const showAgentInfo = settings.get('Livechat_show_agent_info'); + const showAgentInfo = settings.get('Livechat_show_agent_info'); const closingMessage = await Messages.findLivechatClosingMessage(rid, { projection: { ts: 1 } }); const ignoredMessageTypes: MessageTypesValues[] = [ 'livechat_navigation_history', diff --git a/apps/meteor/app/livechat/server/lib/RoutingManager.ts b/apps/meteor/app/livechat/server/lib/RoutingManager.ts index e9c173d86913..7b85c31f26ac 100644 --- a/apps/meteor/app/livechat/server/lib/RoutingManager.ts +++ b/apps/meteor/app/livechat/server/lib/RoutingManager.ts @@ -10,6 +10,7 @@ import type { InquiryWithAgentInfo, TransferData, } from '@rocket.chat/core-typings'; +import { License } from '@rocket.chat/license'; import { Logger } from '@rocket.chat/logger'; import { LivechatInquiry, LivechatRooms, Subscriptions, Rooms, Users } from '@rocket.chat/models'; import { Match, check } from 'meteor/check'; @@ -82,6 +83,13 @@ export const RoutingManager: Routing = { this.methodName = name; } + const shouldPreventQueueStart = await License.shouldPreventAction('monthlyActiveContacts'); + + if (shouldPreventQueueStart) { + logger.error('Monthly Active Contacts limit reached. Queue will not start'); + return; + } + void (await Omnichannel.getQueueWorker()).shouldStart(); }, @@ -178,10 +186,6 @@ export const RoutingManager: Routing = { return false; } - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - if (departmentId && departmentId !== department) { logger.debug(`Switching department for inquiry ${inquiry._id} [Current: ${department} | Next: ${departmentId}]`); await updateChatDepartment({ @@ -269,10 +273,6 @@ export const RoutingManager: Routing = { }, async transferRoom(room, guest, transferData) { - if (!(await Omnichannel.isWithinMACLimit(room))) { - throw new Error('error-mac-limit-reached'); - } - logger.debug(`Transfering room ${room._id} by ${transferData.transferredBy._id}`); if (transferData.departmentId) { logger.debug(`Transfering room ${room._id} to department ${transferData.departmentId}`); diff --git a/apps/meteor/app/livechat/server/methods/sendTranscript.ts b/apps/meteor/app/livechat/server/methods/sendTranscript.ts index 01744c04b726..366a73c8bb0a 100644 --- a/apps/meteor/app/livechat/server/methods/sendTranscript.ts +++ b/apps/meteor/app/livechat/server/methods/sendTranscript.ts @@ -1,4 +1,5 @@ -import { Users } from '@rocket.chat/models'; +import { Omnichannel } from '@rocket.chat/core-services'; +import { LivechatRooms, Users } from '@rocket.chat/models'; import type { ServerMethods } from '@rocket.chat/ui-contexts'; import { check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; @@ -29,6 +30,15 @@ Meteor.methods({ const user = await Users.findOneById(uid, { projection: { _id: 1, username: 1, name: 1, utcOffset: 1 }, }); + + const room = await LivechatRooms.findOneById(rid, { projection: { activity: 1 } }); + if (!room) { + throw new Meteor.Error('error-invalid-room', 'Invalid room', { method: 'livechat:sendTranscript' }); + } + if (!(await Omnichannel.isWithinMACLimit(room))) { + throw new Meteor.Error('error-mac-limit-reached', 'MAC limit reached', { method: 'livechat:sendTranscript' }); + } + return Livechat.sendTranscript({ token, rid, email, subject, user }); }, }); diff --git a/apps/meteor/app/message-pin/server/pinMessage.ts b/apps/meteor/app/message-pin/server/pinMessage.ts index 906f0c98c181..24f910f01f71 100644 --- a/apps/meteor/app/message-pin/server/pinMessage.ts +++ b/apps/meteor/app/message-pin/server/pinMessage.ts @@ -108,10 +108,10 @@ Meteor.methods({ username: me.username, }; - originalMessage = await Message.beforeSave({ message: originalMessage, room, user: me }); - originalMessage = await callbacks.run('beforeSaveMessage', originalMessage); + originalMessage = await Message.beforeSave({ message: originalMessage, room, user: me }); + await Messages.setPinnedByIdAndUserId(originalMessage._id, originalMessage.pinnedBy, originalMessage.pinned); if (settings.get('Message_Read_Receipt_Store_Users')) { await ReadReceipts.setPinnedByMessageId(message._id, originalMessage.pinned); @@ -211,10 +211,10 @@ Meteor.methods({ throw new Meteor.Error('not-authorized', 'Not Authorized', { method: 'unpinMessage' }); } - originalMessage = await Message.beforeSave({ message: originalMessage, room, user: me }); - originalMessage = await callbacks.run('beforeSaveMessage', originalMessage); + originalMessage = await Message.beforeSave({ message: originalMessage, room, user: me }); + if (isTheLastMessage(room, message)) { await Rooms.setLastMessagePinned(room._id, originalMessage.pinnedBy, originalMessage.pinned); } diff --git a/apps/meteor/app/smarsh-connector/server/functions/generateEml.ts b/apps/meteor/app/smarsh-connector/server/functions/generateEml.ts index f2b6ff355730..ce110cbff430 100644 --- a/apps/meteor/app/smarsh-connector/server/functions/generateEml.ts +++ b/apps/meteor/app/smarsh-connector/server/functions/generateEml.ts @@ -90,7 +90,12 @@ export const generateEml = async (): Promise => { if (message.t) { const messageType = MessageTypes.getType(message); if (messageType) { - rows.push(i18n.t(messageType.message, messageType.data ? messageType.data(message) : {}, 'en')); + rows.push( + i18n.t(messageType.message, { + lng: 'en', + replace: messageType.data ? messageType.data(message) : {}, + }), + ); } else { rows.push(`${message.msg} (${message.t})`); } diff --git a/apps/meteor/app/ui-message/client/ActionManager.ts b/apps/meteor/app/ui-message/client/ActionManager.ts index 5c5ec622b4c8..dc66a5407a8e 100644 --- a/apps/meteor/app/ui-message/client/ActionManager.ts +++ b/apps/meteor/app/ui-message/client/ActionManager.ts @@ -1,21 +1,18 @@ import type { DistributiveOmit, UiKit } from '@rocket.chat/core-typings'; import { Emitter } from '@rocket.chat/emitter'; import { Random } from '@rocket.chat/random'; -import type { ActionManagerContext, RouterContext } from '@rocket.chat/ui-contexts'; +import type { RouterContext, IActionManager } from '@rocket.chat/ui-contexts'; import type { ContextType } from 'react'; import { lazy } from 'react'; import * as banners from '../../../client/lib/banners'; import { imperativeModal } from '../../../client/lib/imperativeModal'; -import { router } from '../../../client/providers/RouterProvider'; import { sdk } from '../../utils/client/lib/SDKClient'; import { UiKitTriggerTimeoutError } from './UiKitTriggerTimeoutError'; const UiKitModal = lazy(() => import('../../../client/views/modal/uikit/UiKitModal')); -type ActionManagerType = Exclude, undefined>; - -export class ActionManager implements ActionManagerType { +export class ActionManager implements IActionManager { protected static TRIGGER_TIMEOUT = 5000; protected static TRIGGER_TIMEOUT_ERROR = 'TRIGGER_TIMEOUT_ERROR'; @@ -58,6 +55,14 @@ export class ActionManager implements ActionManagerType { return this.events.off(eventName, listener); } + public notifyBusy() { + this.events.emit('busy', { busy: true }); + } + + public notifyIdle() { + this.events.emit('busy', { busy: false }); + } + public generateTriggerId(appId: string | undefined) { const triggerId = Random.id(); this.triggersId.set(triggerId, appId); @@ -66,7 +71,7 @@ export class ActionManager implements ActionManagerType { } public async emitInteraction(appId: string, userInteraction: DistributiveOmit) { - this.events.emit('busy', { busy: true }); + this.notifyBusy(); const triggerId = this.generateTriggerId(appId); @@ -84,7 +89,7 @@ export class ActionManager implements ActionManagerType { .then((interaction) => this.handleServerInteraction(interaction)), ]).finally(() => { if (timeout) clearTimeout(timeout); - this.events.emit('busy', { busy: false }); + this.notifyIdle(); }); } @@ -266,6 +271,3 @@ export class ActionManager implements ActionManagerType { this.viewInstances.delete(viewId); } } - -/** @deprecated consumer should use the context instead */ -export const actionManager = new ActionManager(router); diff --git a/apps/meteor/app/ui/client/lib/ChatMessages.ts b/apps/meteor/app/ui/client/lib/ChatMessages.ts index 4563bae81d52..2e7c4a479e86 100644 --- a/apps/meteor/app/ui/client/lib/ChatMessages.ts +++ b/apps/meteor/app/ui/client/lib/ChatMessages.ts @@ -1,5 +1,6 @@ import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; import { isVideoConfMessage } from '@rocket.chat/core-typings'; +import type { IActionManager } from '@rocket.chat/ui-contexts'; import type { UIEvent } from 'react'; import type { ChatAPI, ComposerAPI, DataAPI, UploadsAPI } from '../../../../client/lib/chats/ChatAPI'; @@ -18,7 +19,6 @@ import { setHighlightMessage, clearHighlightMessage, } from '../../../../client/views/room/MessageList/providers/messageHighlightSubscription'; -import { actionManager } from '../../../ui-message/client/ActionManager'; import { UserAction } from './UserAction'; type DeepWritable = T extends (...args: any) => any @@ -144,13 +144,14 @@ export class ChatMessages implements ChatAPI { rid: IRoom['_id']; tmid?: IMessage['_id']; uid: IUser['_id'] | null; + actionManager: IActionManager; }, ) { const { rid, tmid } = params; this.uid = params.uid; this.data = createDataAPI({ rid, tmid }); this.uploads = createUploadsAPI({ rid, tmid }); - this.ActionManager = actionManager; + this.ActionManager = params.actionManager; const unimplemented = () => { throw new Error('Flow is not implemented'); diff --git a/apps/meteor/app/ui/client/lib/userCard.tsx b/apps/meteor/app/ui/client/lib/userCard.tsx index 98bfca9e53fc..e4fd5b343140 100644 --- a/apps/meteor/app/ui/client/lib/userCard.tsx +++ b/apps/meteor/app/ui/client/lib/userCard.tsx @@ -68,7 +68,7 @@ export const openUserCard = (params: Omit) => { if (!unregisterPortal) { const children = createElement(UserCardWithProps); - const portal = createPortal(children, container); + const portal = <>{createPortal(children, container)}; unregisterPortal = registerPortal(container, portal); } diff --git a/apps/meteor/app/utils/lib/i18n.ts b/apps/meteor/app/utils/lib/i18n.ts index 7fa491d965e8..a491159e49e9 100644 --- a/apps/meteor/app/utils/lib/i18n.ts +++ b/apps/meteor/app/utils/lib/i18n.ts @@ -5,7 +5,7 @@ import { isObject } from '../../../lib/utils/isObject'; export const i18n = i18next.use(sprintf); -export const addSprinfToI18n = function (t: (typeof i18n)['t']) { +export const addSprinfToI18n = function (t: (key: string, ...replaces: any) => string) { return function (key: string, ...replaces: any): string { if (replaces[0] === undefined || (isObject(replaces[0]) && !Array.isArray(replaces[0]))) { return t(key, ...replaces); diff --git a/apps/meteor/client/components/TooltipPortal.tsx b/apps/meteor/client/components/TooltipPortal.tsx index f841e59899f0..937f6ed879ca 100644 --- a/apps/meteor/client/components/TooltipPortal.tsx +++ b/apps/meteor/client/components/TooltipPortal.tsx @@ -1,5 +1,5 @@ import type { FC } from 'react'; -import { memo, useEffect, useState } from 'react'; +import React, { memo, useEffect, useState } from 'react'; import { createPortal } from 'react-dom'; import { createAnchor } from '../lib/utils/createAnchor'; @@ -8,7 +8,7 @@ import { deleteAnchor } from '../lib/utils/deleteAnchor'; const TooltipPortal: FC = ({ children }) => { const [tooltipRoot] = useState(() => createAnchor('react-tooltip')); useEffect(() => (): void => deleteAnchor(tooltipRoot), [tooltipRoot]); - return createPortal(children, tooltipRoot); + return <>{createPortal(children, tooltipRoot)}; }; export default memo(TooltipPortal); diff --git a/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx b/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx index 22db3777518b..dbdd8f4e731b 100644 --- a/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx +++ b/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx @@ -2,7 +2,6 @@ import type { IMessage, IRoom } from '@rocket.chat/core-typings'; import { MessageBlock } from '@rocket.chat/fuselage'; import { UiKitComponent, UiKitMessage as UiKitMessageSurfaceRender, UiKitContext } from '@rocket.chat/fuselage-ui-kit'; import type { MessageSurfaceLayout } from '@rocket.chat/ui-kit'; -import type { ReactElement } from 'react'; import React from 'react'; import { useMessageBlockContextValue } from '../../../uikit/hooks/useMessageBlockContextValue'; @@ -14,7 +13,7 @@ type UiKitMessageBlockProps = { blocks: MessageSurfaceLayout; }; -const UiKitMessageBlock = ({ rid, mid, blocks }: UiKitMessageBlockProps): ReactElement => { +const UiKitMessageBlock = ({ rid, mid, blocks }: UiKitMessageBlockProps) => { const contextValue = useMessageBlockContextValue(rid, mid); return ( diff --git a/apps/meteor/client/components/modal/ModalPortal.tsx b/apps/meteor/client/components/modal/ModalPortal.tsx index 2b2b198462f5..577f89e72103 100644 --- a/apps/meteor/client/components/modal/ModalPortal.tsx +++ b/apps/meteor/client/components/modal/ModalPortal.tsx @@ -1,5 +1,5 @@ import type { ReactElement, ReactNode } from 'react'; -import { memo, useEffect, useState } from 'react'; +import React, { memo, useEffect, useState } from 'react'; import { createPortal } from 'react-dom'; import { createAnchor } from '../../lib/utils/createAnchor'; @@ -15,7 +15,7 @@ type ModalPortalProps = { const ModalPortal = ({ children }: ModalPortalProps): ReactElement => { const [modalRoot] = useState(() => createAnchor('modal-root')); useEffect(() => (): void => deleteAnchor(modalRoot), [modalRoot]); - return createPortal(children, modalRoot); + return <>{createPortal(children, modalRoot)}; }; export default memo(ModalPortal); diff --git a/apps/meteor/client/hooks/useAppTranslations.ts b/apps/meteor/client/hooks/useAppTranslations.ts deleted file mode 100644 index bf4f83e48d85..000000000000 --- a/apps/meteor/client/hooks/useAppTranslations.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { useDebouncedCallback } from '@rocket.chat/fuselage-hooks'; -import { useEndpoint, useSingleStream, useUserId } from '@rocket.chat/ui-contexts'; -import { useQuery, useQueryClient } from '@tanstack/react-query'; -import { useEffect } from 'react'; - -import { i18n } from '../../app/utils/lib/i18n'; -import { Utilities } from '../../ee/lib/misc/Utilities'; - -export const useAppTranslations = () => { - const queryClient = useQueryClient(); - - const apps = useSingleStream('apps'); - const uid = useUserId(); - - const getAppsLanguages = useEndpoint('GET', '/apps/languages'); - - const result = useQuery(['apps', 'translations'], () => getAppsLanguages(), { - staleTime: Infinity, - }); - - useEffect(() => { - if (result.data) { - result.data.apps.forEach(({ id, languages }) => { - loadAppI18nResources(id, languages); - }); - } - }, [result.data]); - - const invalidate = useDebouncedCallback( - () => { - queryClient.invalidateQueries(['apps', 'translations']); - }, - 100, - [], - ); - - useEffect(() => { - if (!uid) { - return; - } - - return apps('apps', ([key]) => { - if (['app/added'].includes(key)) { - invalidate(); - } - }); - }, [uid, apps, invalidate]); - - const loadAppI18nResources = ( - appId: string, - languages: { - [key: string]: { - Params: string; - Description: string; - Setting_Name: string; - Setting_Description: string; - }; - }, - ) => { - Object.entries(languages).forEach(([language, translations]) => { - const regex = /([a-z]{2,3})-([a-z]{2,4})/; - const match = regex.exec(language); - const normalizedLanguage = match ? `${match[1]}-${match[2].toUpperCase()}` : language; - - // Translations keys must be scoped under app id - const scopedTranslations = Object.entries(translations).reduce>((acc, [key, value]) => { - acc[Utilities.getI18nKeyForApp(key, appId)] = value; - return acc; - }, {}); - - i18n.addResourceBundle(normalizedLanguage, 'core', scopedTranslations); - }); - }; -}; diff --git a/apps/meteor/client/hooks/useIsEnterprise.ts b/apps/meteor/client/hooks/useIsEnterprise.ts index f91d754014c4..e2622d8b695d 100644 --- a/apps/meteor/client/hooks/useIsEnterprise.ts +++ b/apps/meteor/client/hooks/useIsEnterprise.ts @@ -1,13 +1,8 @@ import type { OperationResult } from '@rocket.chat/rest-typings'; -import { useEndpoint } from '@rocket.chat/ui-contexts'; import type { UseQueryResult } from '@tanstack/react-query'; -import { useQuery } from '@tanstack/react-query'; -export const useIsEnterprise = (): UseQueryResult> => { - const isEnterpriseEdition = useEndpoint('GET', '/v1/licenses.isEnterprise'); +import { useLicenseBase } from './useLicense'; - return useQuery(['licenses', 'isEnterprise'], () => isEnterpriseEdition(), { - keepPreviousData: true, - staleTime: Infinity, - }); +export const useIsEnterprise = (): UseQueryResult> => { + return useLicenseBase({ select: (data) => ({ isEnterprise: Boolean(data?.license.license) }) }); }; diff --git a/apps/meteor/client/hooks/useLicense.ts b/apps/meteor/client/hooks/useLicense.ts index 70f83e8f6187..bdf983061d66 100644 --- a/apps/meteor/client/hooks/useLicense.ts +++ b/apps/meteor/client/hooks/useLicense.ts @@ -5,7 +5,7 @@ import type { QueryClient, UseQueryResult } from '@tanstack/react-query'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { useEffect } from 'react'; -type LicenseDataType = Awaited>['license']; +type LicenseDataType = Serialized>>; type LicenseParams = { loadValues?: boolean; @@ -18,12 +18,18 @@ const invalidateQueryClientLicenses = (() => { clearTimeout(timeout); timeout = setTimeout(() => { timeout = undefined; - queryClient.invalidateQueries(['licenses', 'getLicenses']); + queryClient.invalidateQueries(['licenses']); }, 5000); }; })(); -export const useLicense = (params?: LicenseParams): UseQueryResult> => { +export const useLicenseBase = ({ + params, + select, +}: { + params?: LicenseParams; + select: (data: LicenseDataType) => TData; +}) => { const uid = useUserId(); const getLicenses = useEndpoint('GET', '/v1/licenses.info'); @@ -34,32 +40,27 @@ export const useLicense = (params?: LicenseParams): UseQueryResult notify('license', () => invalidateQueries()), [notify, invalidateQueries]); - return useQuery(['licenses', 'getLicenses', params?.loadValues], () => getLicenses({ ...params }), { + return useQuery(['licenses', 'getLicenses', params], () => getLicenses({ ...params }), { staleTime: Infinity, keepPreviousData: true, - select: (data) => data.license, + select, enabled: !!uid, }); }; -export const useLicenseName = (params?: LicenseParams) => { - const getLicenses = useEndpoint('GET', '/v1/licenses.info'); - - const invalidateQueries = useInvalidateLicense(); - - const notify = useSingleStream('notify-all'); +export const useLicense = (params?: LicenseParams) => { + return useLicenseBase({ params, select: (data) => data.license }); +}; - useEffect(() => notify('license', () => invalidateQueries()), [notify, invalidateQueries]); +export const useHasLicense = (): UseQueryResult => { + return useLicenseBase({ select: (data) => Boolean(data.license) }); +}; - return useQuery(['licenses', 'getLicenses', params?.loadValues], () => getLicenses({ ...params }), { - staleTime: Infinity, - keepPreviousData: true, - select: (data) => data.license.tags?.map((tag) => tag.name).join(' ') ?? 'Community', - }); +export const useLicenseName = (params?: LicenseParams) => { + return useLicenseBase({ params, select: (data) => data?.license.tags?.map((tag) => tag.name).join(' ') || 'Community' }); }; export const useInvalidateLicense = () => { const queryClient = useQueryClient(); - return () => invalidateQueryClientLicenses(queryClient); }; diff --git a/apps/meteor/client/hooks/useTranslationsForApps.ts b/apps/meteor/client/hooks/useTranslationsForApps.ts new file mode 100644 index 000000000000..9cc4fd8c0991 --- /dev/null +++ b/apps/meteor/client/hooks/useTranslationsForApps.ts @@ -0,0 +1,58 @@ +import { normalizeLanguage } from '@rocket.chat/tools'; +import { useEndpoint, useSingleStream, useUserId } from '@rocket.chat/ui-contexts'; +import { useQuery, useQueryClient } from '@tanstack/react-query'; +import { useEffect } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { withDebouncing } from '../../lib/utils/highOrderFunctions'; + +export const useTranslationsForApps = () => { + const getAppsLanguages = useEndpoint('GET', '/apps/languages'); + + const { isSuccess, data } = useQuery({ + queryKey: ['apps', 'translations'] as const, + queryFn: () => getAppsLanguages(), + staleTime: Infinity, + }); + + const { i18n } = useTranslation(); + + useEffect(() => { + if (!isSuccess) { + return; + } + + data.apps.forEach(({ id: appId, languages }) => { + Object.entries(languages).forEach(([language, translations]) => { + const normalizedLanguage = normalizeLanguage(language); + const namespace = `app-${appId}`; + i18n.addResourceBundle(normalizedLanguage, namespace, translations); + }); + }); + }, [i18n, data, isSuccess]); + + const queryClient = useQueryClient(); + const subscribeToApps = useSingleStream('apps'); + const uid = useUserId(); + + useEffect(() => { + if (!uid) { + return; + } + + const invalidate = withDebouncing({ wait: 100 })(() => { + queryClient.invalidateQueries(['apps', 'translations']); + }); + + const unsubscribe = subscribeToApps('apps', ([key]) => { + if (key === 'app/added') { + invalidate(); + } + }); + + return () => { + unsubscribe(); + invalidate.cancel(); + }; + }, [uid, subscribeToApps, queryClient]); +}; diff --git a/apps/meteor/client/lib/appLayout.tsx b/apps/meteor/client/lib/appLayout.tsx index 1c39e3dece10..3962a0f300cb 100644 --- a/apps/meteor/client/lib/appLayout.tsx +++ b/apps/meteor/client/lib/appLayout.tsx @@ -7,6 +7,7 @@ const BannerRegion = lazy(() => import('../views/banners/BannerRegion')); const PortalsWrapper = lazy(() => import('../views/root/PortalsWrapper')); const ModalRegion = lazy(() => import('../views/modal/ModalRegion')); const ActionManagerBusyState = lazy(() => import('../components/ActionManagerBusyState')); +const CloudAnnouncementsRegion = lazy(() => import('../views/cloud/CloudAnnouncementsRegion')); type AppLayoutDescriptor = ReactElement | null; @@ -23,10 +24,6 @@ class AppLayoutSubscription extends Emitter<{ update: void }> { } render(element: ReactElement): void { - this.setCurrentValue(this.wrap(element)); - } - - renderStandalone(element: ReactElement): void { this.setCurrentValue(element); } @@ -35,6 +32,7 @@ class AppLayoutSubscription extends Emitter<{ update: void }> { <> + {element} diff --git a/apps/meteor/client/lib/chats/ChatAPI.ts b/apps/meteor/client/lib/chats/ChatAPI.ts index 8242de07d791..36f40f404a4f 100644 --- a/apps/meteor/client/lib/chats/ChatAPI.ts +++ b/apps/meteor/client/lib/chats/ChatAPI.ts @@ -1,4 +1,5 @@ import type { IMessage, IRoom, ISubscription } from '@rocket.chat/core-typings'; +import type { IActionManager } from '@rocket.chat/ui-contexts'; import type { UIEvent } from 'react'; import type { FormattingButton } from '../../../app/ui-message/client/messageBox/messageBoxFormatting'; @@ -141,7 +142,7 @@ export type ChatAPI = { performContinuously(action: 'recording' | 'uploading' | 'playing'): void; }; - ActionManager: any; + ActionManager: IActionManager; readonly flows: { readonly uploadFiles: (files: readonly File[], resetFileInput?: () => void) => Promise; diff --git a/apps/meteor/client/lib/chats/flows/processSlashCommand.ts b/apps/meteor/client/lib/chats/flows/processSlashCommand.ts index c9922162a67c..52fa050c743f 100644 --- a/apps/meteor/client/lib/chats/flows/processSlashCommand.ts +++ b/apps/meteor/client/lib/chats/flows/processSlashCommand.ts @@ -4,7 +4,6 @@ import { escapeHTML } from '@rocket.chat/string-helpers'; import { hasAtLeastOnePermission } from '../../../../app/authorization/client'; import { settings } from '../../../../app/settings/client'; -import { actionManager } from '../../../../app/ui-message/client/ActionManager'; import { slashCommands } from '../../../../app/utils/client'; import { sdk } from '../../../../app/utils/client/lib/SDKClient'; import { t } from '../../../../app/utils/lib/i18n'; @@ -78,7 +77,7 @@ export const processSlashCommand = async (chat: ChatAPI, message: IMessage): Pro params: [{ eventName: 'slashCommandsStats', timestamp: Date.now(), command: commandName }], }); - const triggerId = actionManager.generateTriggerId(appId); + const triggerId = chat.ActionManager.generateTriggerId(appId); const data = { cmd: commandName, @@ -89,7 +88,7 @@ export const processSlashCommand = async (chat: ChatAPI, message: IMessage): Pro try { if (appId) { - chat.ActionManager.events.emit('busy', { busy: true }); + chat.ActionManager.notifyBusy(); } const result = await sdk.call('slashCommand', { cmd: commandName, params, msg: message, triggerId }); @@ -101,7 +100,7 @@ export const processSlashCommand = async (chat: ChatAPI, message: IMessage): Pro } if (appId) { - chat.ActionManager.events.emit('busy', { busy: false }); + chat.ActionManager.notifyIdle(); } return true; diff --git a/apps/meteor/client/lib/utils/isOverLicenseLimits.ts b/apps/meteor/client/lib/utils/isOverLicenseLimits.ts index 3bb8d1d50dbf..e2978a2d4c28 100644 --- a/apps/meteor/client/lib/utils/isOverLicenseLimits.ts +++ b/apps/meteor/client/lib/utils/isOverLicenseLimits.ts @@ -9,4 +9,4 @@ type Limits = Record< >; export const isOverLicenseLimits = (limits: Limits): boolean => - Object.values(limits).some((limit) => limit.value !== undefined && limit.value > limit.max); + Object.values(limits).some((limit) => limit.value !== undefined && limit.max !== -1 && limit.value > limit.max); diff --git a/apps/meteor/client/portals/VideoConfPopupPortal.ts b/apps/meteor/client/portals/VideoConfPopupPortal.tsx similarity index 82% rename from apps/meteor/client/portals/VideoConfPopupPortal.ts rename to apps/meteor/client/portals/VideoConfPopupPortal.tsx index 5e4f22612c62..b1c0746e93e2 100644 --- a/apps/meteor/client/portals/VideoConfPopupPortal.ts +++ b/apps/meteor/client/portals/VideoConfPopupPortal.tsx @@ -1,5 +1,5 @@ import type { ReactElement, ReactNode } from 'react'; -import { memo, useEffect, useState } from 'react'; +import React, { memo, useEffect, useState } from 'react'; import { createPortal } from 'react-dom'; import { createAnchor } from '../lib/utils/createAnchor'; @@ -12,7 +12,7 @@ type VideoConfPortalProps = { const VideoConfPortal = ({ children }: VideoConfPortalProps): ReactElement => { const [videoConfRoot] = useState(() => createAnchor('video-conf-root')); useEffect(() => (): void => deleteAnchor(videoConfRoot), [videoConfRoot]); - return createPortal(children, videoConfRoot); + return <>{createPortal(children, videoConfRoot)}; }; export default memo(VideoConfPortal); diff --git a/apps/meteor/client/providers/ActionManagerProvider.tsx b/apps/meteor/client/providers/ActionManagerProvider.tsx index e8961ec357e9..7305a4b1a674 100644 --- a/apps/meteor/client/providers/ActionManagerProvider.tsx +++ b/apps/meteor/client/providers/ActionManagerProvider.tsx @@ -1,19 +1,22 @@ -import { ActionManagerContext } from '@rocket.chat/ui-contexts'; +import { ActionManagerContext, useRouter } from '@rocket.chat/ui-contexts'; import type { ReactNode, ReactElement } from 'react'; import React from 'react'; -import { actionManager } from '../../app/ui-message/client/ActionManager'; +import { ActionManager } from '../../app/ui-message/client/ActionManager'; import { useAppActionButtons } from '../hooks/useAppActionButtons'; import { useAppSlashCommands } from '../hooks/useAppSlashCommands'; -import { useAppTranslations } from '../hooks/useAppTranslations'; import { useAppUiKitInteraction } from '../hooks/useAppUiKitInteraction'; +import { useTranslationsForApps } from '../hooks/useTranslationsForApps'; +import { useInstance } from '../views/room/providers/hooks/useInstance'; type ActionManagerProviderProps = { children?: ReactNode; }; const ActionManagerProvider = ({ children }: ActionManagerProviderProps): ReactElement => { - useAppTranslations(); + const router = useRouter(); + const actionManager = useInstance(() => [new ActionManager(router)], [router]); + useTranslationsForApps(); useAppActionButtons(); useAppSlashCommands(); useAppUiKitInteraction(actionManager.handleServerInteraction.bind(actionManager)); diff --git a/apps/meteor/client/providers/AppsProvider.tsx b/apps/meteor/client/providers/AppsProvider.tsx index 45ea9eadec29..bb35c01c4ae2 100644 --- a/apps/meteor/client/providers/AppsProvider.tsx +++ b/apps/meteor/client/providers/AppsProvider.tsx @@ -6,6 +6,8 @@ import React, { useEffect } from 'react'; import { AppClientOrchestratorInstance } from '../../ee/client/apps/orchestrator'; import { AppsContext } from '../contexts/AppsContext'; +import { useIsEnterprise } from '../hooks/useIsEnterprise'; +import { useInvalidateLicense } from '../hooks/useLicense'; import { AsyncStatePhase } from '../lib/asyncState'; import { useInvalidateAppsCountQueryCallback } from '../views/marketplace/hooks/useAppsCountQuery'; import type { App } from '../views/marketplace/types'; @@ -17,7 +19,11 @@ const AppsProvider: FC = ({ children }) => { const queryClient = useQueryClient(); + const { data } = useIsEnterprise(); + const isEnterprise = !!data?.isEnterprise; + const invalidateAppsCountQuery = useInvalidateAppsCountQueryCallback(); + const invalidateLicenseQuery = useInvalidateLicense(); const stream = useSingleStream('apps'); @@ -35,8 +41,11 @@ const AppsProvider: FC = ({ children }) => { if (['app/added', 'app/removed', 'app/updated', 'app/statusUpdate', 'app/settingUpdated'].includes(key)) { invalidate(); } + if (['app/added', 'app/removed'].includes(key) && !isEnterprise) { + invalidateLicenseQuery(); + } }); - }, [invalidate, stream]); + }, [invalidate, invalidateLicenseQuery, isEnterprise, stream]); const marketplace = useQuery( ['marketplace', 'apps-marketplace', isAdminUser], diff --git a/apps/meteor/client/providers/RouterProvider.tsx b/apps/meteor/client/providers/RouterProvider.tsx index 0f146ec83128..4f0aab3a602b 100644 --- a/apps/meteor/client/providers/RouterProvider.tsx +++ b/apps/meteor/client/providers/RouterProvider.tsx @@ -131,7 +131,7 @@ const defineRoutes = (routes: RouteObject[]) => { const flowRoutes = routes.map((route) => { if (route.path === '*') { FlowRouter.notFound = { - action: () => appLayout.renderStandalone(<>{route.element}), + action: () => appLayout.render(<>{route.element}), }; return FlowRouter.notFound; @@ -139,7 +139,7 @@ const defineRoutes = (routes: RouteObject[]) => { return FlowRouter.route(route.path, { name: route.id, - action: () => appLayout.renderStandalone(<>{route.element}), + action: () => appLayout.render(<>{route.element}), }); }); @@ -156,7 +156,7 @@ const defineRoutes = (routes: RouteObject[]) => { delete FlowRouter._routesMap[flowRoute.name]; } else { FlowRouter.notFound = { - action: () => appLayout.renderStandalone(<>), + action: () => appLayout.render(<>), }; } }); diff --git a/apps/meteor/client/providers/TranslationProvider.tsx b/apps/meteor/client/providers/TranslationProvider.tsx index 2cf47066c4e4..f9fdf299a5d6 100644 --- a/apps/meteor/client/providers/TranslationProvider.tsx +++ b/apps/meteor/client/providers/TranslationProvider.tsx @@ -1,6 +1,7 @@ import { useLocalStorage, useMutableCallback } from '@rocket.chat/fuselage-hooks'; import languages from '@rocket.chat/i18n/dist/languages'; import en from '@rocket.chat/i18n/src/locales/en.i18n.json'; +import { normalizeLanguage } from '@rocket.chat/tools'; import type { TranslationKey, TranslationContextValue } from '@rocket.chat/ui-contexts'; import { useMethod, useSetting, TranslationContext } from '@rocket.chat/ui-contexts'; import type i18next from 'i18next'; @@ -16,7 +17,6 @@ import { getURL } from '../../app/utils/client'; import { i18n, addSprinfToI18n } from '../../app/utils/lib/i18n'; import { AppClientOrchestratorInstance } from '../../ee/client/apps/orchestrator'; import { applyCustomTranslations } from '../lib/utils/applyCustomTranslations'; -import { filterLanguage } from '../lib/utils/filterLanguage'; import { isRTLScriptLanguage } from '../lib/utils/isRTLScriptLanguage'; i18n.use(I18NextHttpBackend).use(initReactI18next).use(sprintf); @@ -180,7 +180,7 @@ type TranslationProviderProps = { const useAutoLanguage = () => { const serverLanguage = useSetting('Language'); - const browserLanguage = filterLanguage(window.navigator.userLanguage ?? window.navigator.language); + const browserLanguage = normalizeLanguage(window.navigator.userLanguage ?? window.navigator.language); const defaultUserLanguage = browserLanguage || serverLanguage || 'en'; // if the language is supported, if not remove the region diff --git a/apps/meteor/client/sidebar/SidebarPortal.tsx b/apps/meteor/client/sidebar/SidebarPortal.tsx index 2b6594d11561..59856df71773 100644 --- a/apps/meteor/client/sidebar/SidebarPortal.tsx +++ b/apps/meteor/client/sidebar/SidebarPortal.tsx @@ -10,7 +10,7 @@ const SidebarPortal: FC = ({ children }) => { return null; } - return createPortal({children}, sidebarRoot); + return <>{createPortal({children}, sidebarRoot)}; }; export default memo(SidebarPortal); diff --git a/apps/meteor/client/sidebar/header/actions/hooks/useAuditItems.spec.tsx b/apps/meteor/client/sidebar/header/actions/hooks/useAuditItems.spec.tsx index a5a280262bd4..95d2d219bc14 100644 --- a/apps/meteor/client/sidebar/header/actions/hooks/useAuditItems.spec.tsx +++ b/apps/meteor/client/sidebar/header/actions/hooks/useAuditItems.spec.tsx @@ -6,7 +6,12 @@ import { useAuditItems } from './useAuditItems'; it('should return an empty array if doesn`t have license', async () => { const { result, waitFor } = renderHook(() => useAuditItems(), { wrapper: mockAppRoot() - .withMethod('license:getModules', () => []) + .withEndpoint('GET', '/v1/licenses.info', () => ({ + // @ts-expect-error: just for testing + license: { + activeModules: [], + }, + })) .withJohnDoe() .withPermission('can-audit') .withPermission('can-audit-log') @@ -21,6 +26,16 @@ it('should return an empty array if doesn`t have license', async () => { it('should return an empty array if have license and not have permissions', async () => { const { result, waitFor } = renderHook(() => useAuditItems(), { wrapper: mockAppRoot() + .withEndpoint('GET', '/v1/licenses.info', () => ({ + license: { + license: { + // @ts-expect-error: just for testing + grantedModules: [{ module: 'auditing' }], + }, + // @ts-expect-error: just for testing + activeModules: ['auditing'], + }, + })) .withMethod('license:getModules', () => ['auditing']) .withJohnDoe() .build(), @@ -34,7 +49,16 @@ it('should return an empty array if have license and not have permissions', asyn it('should return auditItems if have license and permissions', async () => { const { result, waitFor } = renderHook(() => useAuditItems(), { wrapper: mockAppRoot() - .withMethod('license:getModules', () => ['auditing']) + .withEndpoint('GET', '/v1/licenses.info', () => ({ + license: { + license: { + // @ts-expect-error: just for testing + grantedModules: [{ module: 'auditing' }], + }, + // @ts-expect-error: just for testing + activeModules: ['auditing'], + }, + })) .withJohnDoe() .withPermission('can-audit') .withPermission('can-audit-log') @@ -59,7 +83,16 @@ it('should return auditItems if have license and permissions', async () => { it('should return auditMessages item if have license and can-audit permission', async () => { const { result, waitFor } = renderHook(() => useAuditItems(), { wrapper: mockAppRoot() - .withMethod('license:getModules', () => ['auditing']) + .withEndpoint('GET', '/v1/licenses.info', () => ({ + license: { + license: { + // @ts-expect-error: just for testing + grantedModules: [{ module: 'auditing' }], + }, + // @ts-expect-error: just for testing + activeModules: ['auditing'], + }, + })) .withJohnDoe() .withPermission('can-audit') .build(), @@ -77,7 +110,16 @@ it('should return auditMessages item if have license and can-audit permission', it('should return audiLogs item if have license and can-audit-log permission', async () => { const { result, waitFor } = renderHook(() => useAuditItems(), { wrapper: mockAppRoot() - .withMethod('license:getModules', () => ['auditing']) + .withEndpoint('GET', '/v1/licenses.info', () => ({ + license: { + license: { + // @ts-expect-error: just for testing + grantedModules: [{ module: 'auditing' }], + }, + // @ts-expect-error: just for testing + activeModules: ['auditing'], + }, + })) .withJohnDoe() .withPermission('can-audit-log') .build(), diff --git a/apps/meteor/client/startup/startup.ts b/apps/meteor/client/startup/startup.ts index 6b2b66ec69d7..2541529a1aef 100644 --- a/apps/meteor/client/startup/startup.ts +++ b/apps/meteor/client/startup/startup.ts @@ -5,14 +5,11 @@ import { Session } from 'meteor/session'; import { Tracker } from 'meteor/tracker'; import moment from 'moment'; -import { hasPermission } from '../../app/authorization/client'; import { register } from '../../app/markdown/lib/hljs'; import { settings } from '../../app/settings/client'; import { getUserPreference } from '../../app/utils/client'; import 'hljs9/styles/github.css'; import { sdk } from '../../app/utils/client/lib/SDKClient'; -import { t } from '../../app/utils/lib/i18n'; -import * as banners from '../lib/banners'; import { synchronizeUserData, removeLocalUserData } from '../lib/userData'; import { fireGlobalEvent } from '../lib/utils/fireGlobalEvent'; @@ -60,31 +57,6 @@ Meteor.startup(() => { fireGlobalEvent('status-changed', status); } }); - - Tracker.autorun(async (c) => { - const uid = Meteor.userId(); - if (!uid) { - return; - } - - if (!hasPermission('manage-cloud')) { - return; - } - - const { - registrationStatus: { workspaceRegistered }, - } = await sdk.rest.get('/v1/cloud.registrationStatus'); - c.stop(); - - if (workspaceRegistered !== true) { - banners.open({ - id: 'cloud-registration', - title: () => t('Cloud_registration_pending_title'), - html: () => t('Cloud_registration_pending_html'), - modifiers: ['large', 'danger'], - }); - } - }); }); Meteor.startup(() => { Tracker.autorun(() => { diff --git a/apps/meteor/client/views/admin/subscription/SubscriptionCalloutLimits.tsx b/apps/meteor/client/views/admin/subscription/SubscriptionCalloutLimits.tsx index d82bb6cd3d28..8982492bb4a8 100644 --- a/apps/meteor/client/views/admin/subscription/SubscriptionCalloutLimits.tsx +++ b/apps/meteor/client/views/admin/subscription/SubscriptionCalloutLimits.tsx @@ -62,13 +62,12 @@ export const SubscriptionCalloutLimits = () => { const map = (key: keyof typeof limits) => t(`subscription.callout.${key}`); - const handleClick = (e: React.MouseEvent) => { + const handleClick = (params: Record) => (e: React.MouseEvent) => { e.preventDefault(); if (mutation.isLoading) { return; } - - mutation.mutate(); + mutation.mutate(params); }; return ( @@ -77,7 +76,14 @@ export const SubscriptionCalloutLimits = () => { Your workspace reached the <>{{ val: start_fair_policy.map(map) }} limit. - + Manage your subscription to increase limits. @@ -88,7 +94,14 @@ export const SubscriptionCalloutLimits = () => { Your workspace exceeded the <>{{ val: prevent_action.map(map) }} license limit. - + Manage your subscription to increase limits. @@ -100,9 +113,16 @@ export const SubscriptionCalloutLimits = () => { Your workspace exceeded the <>{{ val: disable_modules.map(map) }} license limit. - + Manage your subscription - {' '} + to increase limits. @@ -112,7 +132,14 @@ export const SubscriptionCalloutLimits = () => { Your workspace exceeded the <>{{ val: invalidate_license.map(map) }} license limit. - + Manage your subscription to increase limits. diff --git a/apps/meteor/client/views/admin/subscription/SubscriptionPage.tsx b/apps/meteor/client/views/admin/subscription/SubscriptionPage.tsx index fdaf1e5467f5..e6b03b0237a4 100644 --- a/apps/meteor/client/views/admin/subscription/SubscriptionPage.tsx +++ b/apps/meteor/client/views/admin/subscription/SubscriptionPage.tsx @@ -1,11 +1,11 @@ import { Box, Button, ButtonGroup, Callout, Grid, Throbber } from '@rocket.chat/fuselage'; import { useRouter } from '@rocket.chat/ui-contexts'; import { t } from 'i18next'; -import React, { memo, useEffect } from 'react'; +import React, { memo, useCallback, useEffect } from 'react'; import Page from '../../../components/Page'; import { useIsEnterprise } from '../../../hooks/useIsEnterprise'; -import { useLicense } from '../../../hooks/useLicense'; +import { useInvalidateLicense, useLicense } from '../../../hooks/useLicense'; import { useRegistrationStatus } from '../../../hooks/useRegistrationStatus'; import { SubscriptionCalloutLimits } from './SubscriptionCalloutLimits'; import SubscriptionPageSkeleton from './SubscriptionPageSkeleton'; @@ -27,8 +27,9 @@ const SubscriptionPage = () => { const router = useRouter(); const { data: enterpriseData } = useIsEnterprise(); const { isRegistered } = useRegistrationStatus(); - const { data: licensesData, isLoading: isLicenseLoading, refetch: refetchLicense } = useLicense({ loadValues: true }); + const { data: licensesData, isLoading: isLicenseLoading } = useLicense({ loadValues: true }); const syncLicenseUpdate = useWorkspaceSync(); + const invalidateLicenseQuery = useInvalidateLicense(); const { subscriptionSuccess } = router.getSearchParameters(); @@ -46,24 +47,17 @@ const SubscriptionPage = () => { const macLimit = getKeyLimit('monthlyActiveContacts'); const seatsLimit = getKeyLimit('activeUsers'); - const handleSyncLicenseUpdateClick = () => { - syncLicenseUpdate.mutate(); - }; + const handleSyncLicenseUpdate = useCallback(() => { + syncLicenseUpdate.mutate(undefined, { + onSuccess: () => invalidateLicenseQuery(), + }); + }, [invalidateLicenseQuery, syncLicenseUpdate]); useEffect(() => { if (subscriptionSuccess && syncLicenseUpdate.isIdle) { - syncLicenseUpdate.mutate(undefined, { - onSuccess: () => - router.navigate( - { - name: router.getRouteName()!, - params: Object.fromEntries(Object.entries(router.getSearchParameters()).filter(([key]) => key !== 'subscriptionSuccess')), - }, - { replace: true }, - ), - }); + handleSyncLicenseUpdate(); } - }, [refetchLicense, router, subscriptionSuccess, syncLicenseUpdate]); + }, [handleSyncLicenseUpdate, subscriptionSuccess, syncLicenseUpdate]); return ( @@ -73,12 +67,12 @@ const SubscriptionPage = () => { )} - + {t(isEnterprise ? 'Manage_subscription' : 'Upgrade')} @@ -111,7 +105,7 @@ const SubscriptionPage = () => { {seatsLimit.value !== undefined && ( {seatsLimit.max !== Infinity ? ( - + ) : ( )} @@ -121,7 +115,7 @@ const SubscriptionPage = () => { {macLimit.value !== undefined && ( {macLimit.max !== Infinity ? ( - + ) : ( )} diff --git a/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx b/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx index eca4b58695de..bcde39d701fd 100644 --- a/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/FeatureUsageCard.tsx @@ -3,7 +3,6 @@ import type { ReactElement, ReactNode } from 'react'; import React, { memo } from 'react'; import InfoTextIconModal from './InfoTextIconModal'; -import UpgradeButton from './UpgradeButton'; type FeatureUsageCardProps = { children?: ReactNode; @@ -13,11 +12,11 @@ type FeatureUsageCardProps = { export type CardProps = { title: string; infoText?: string; - upgradeButtonText?: string; + upgradeButton?: ReactNode; }; const FeatureUsageCard = ({ children, card }: FeatureUsageCardProps): ReactElement => { - const { title, infoText, upgradeButtonText } = card; + const { title, infoText, upgradeButton } = card; return ( @@ -28,11 +27,7 @@ const FeatureUsageCard = ({ children, card }: FeatureUsageCardProps): ReactEleme {children} - {upgradeButtonText && ( - - {upgradeButtonText} - - )} + {upgradeButton && {upgradeButton}} ); }; diff --git a/apps/meteor/client/views/admin/subscription/components/UpgradeButton.tsx b/apps/meteor/client/views/admin/subscription/components/UpgradeButton.tsx index e6a89240b73d..7c28094ff58a 100644 --- a/apps/meteor/client/views/admin/subscription/components/UpgradeButton.tsx +++ b/apps/meteor/client/views/admin/subscription/components/UpgradeButton.tsx @@ -5,7 +5,15 @@ import React, { memo } from 'react'; import { useCheckoutUrlAction } from '../hooks/useCheckoutUrl'; -const UpgradeButton = ({ children, ...props }: Partial): ReactElement => { +const UpgradeButton = ({ + children, + target = '_blank', + action, + ...props +}: Partial & { + target: string; + action: string; +}): ReactElement => { const mutation = useCheckoutUrlAction(); const handleBtnClick = () => { @@ -13,7 +21,10 @@ const UpgradeButton = ({ children, ...props }: Partial): ReactEleme return; } - mutation.mutate(); + mutation.mutate({ + target, + action, + }); }; return ( diff --git a/apps/meteor/client/views/admin/subscription/components/UsagePieGraph.tsx b/apps/meteor/client/views/admin/subscription/components/UsagePieGraph.tsx index af5d4b673410..143f85bd34e6 100644 --- a/apps/meteor/client/views/admin/subscription/components/UsagePieGraph.tsx +++ b/apps/meteor/client/views/admin/subscription/components/UsagePieGraph.tsx @@ -87,9 +87,11 @@ const UsagePieGraph = ({ used = 0, total = 0, label, color, size = 140 }: UsageP {used} / {unlimited ? '∞' : total} - - {label} - + {label && ( + + {label} + + )} ); }; diff --git a/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsCard.tsx index 74f50474f7ec..fbd850f262ba 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsCard.tsx @@ -6,6 +6,7 @@ import { useTranslation } from 'react-i18next'; import { useActiveConnections } from '../../../../hooks/useActiveConnections'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; +import UpgradeButton from '../UpgradeButton'; const getLimits = ({ max, current }: { max: number; current: number }) => { const total = max || 0; @@ -30,6 +31,7 @@ const ActiveSessionsCard = (): ReactElement => { title: t('ActiveSessions'), infoText: t('ActiveSessions_InfoText'), }; + if (result.isLoading || result.isError) { return ( @@ -45,7 +47,11 @@ const ActiveSessionsCard = (): ReactElement => { card={{ ...card, ...(exceedLimit && { - upgradeButtonText: t('Upgrade'), + upgradeButton: ( + + {t('Upgrade')} + + ), }), }} > diff --git a/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsPeakCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsPeakCard.tsx index 7015e5b93145..f62ec2ad164c 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsPeakCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/ActiveSessionsPeakCard.tsx @@ -7,6 +7,7 @@ import { useFormatDate } from '../../../../../hooks/useFormatDate'; import { useStatistics } from '../../../../hooks/useStatistics'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; +import UpgradeButton from '../UpgradeButton'; const ActiveSessionsPeakCard = (): ReactElement => { const { t } = useTranslation(); @@ -24,13 +25,17 @@ const ActiveSessionsPeakCard = (): ReactElement => { title: t('ActiveSessionsPeak'), infoText: t('ActiveSessionsPeak_InfoText'), ...(exceedLimit && { - upgradeButtonText: t('Upgrade'), + upgradeButton: ( + + {t('Upgrade')} + + ), }), }; return ( - {!isLoading && maxMonthlyPeakConnections ? ( + {!isLoading && maxMonthlyPeakConnections !== undefined ? ( {used} / {total} diff --git a/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx index a8d3891c8570..0043e12d02d1 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/AppsUsageCard.tsx @@ -5,6 +5,7 @@ import { useTranslation } from 'react-i18next'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; +import UpgradeButton from '../UpgradeButton'; type AppsUsageCardProps = { privateAppsLimit?: { value?: number; max: number }; @@ -26,7 +27,11 @@ const AppsUsageCard = ({ privateAppsLimit, marketplaceAppsLimit }: AppsUsageCard title: t('Apps'), infoText: t('Apps_InfoText'), ...((marketplaceAppsPercentage || 0) >= 80 && { - upgradeButtonText: t('Upgrade'), + upgradeButton: ( + + {t('Upgrade')} + + ), }), }; diff --git a/apps/meteor/client/views/admin/subscription/components/cards/MACCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/MACCard.tsx index 4c4232034ce8..e22231294fae 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/MACCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/MACCard.tsx @@ -5,9 +5,18 @@ import { useTranslation } from 'react-i18next'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; +import UpgradeButton from '../UpgradeButton'; import UsagePieGraph from '../UsagePieGraph'; -const MACCard = ({ value = 0, max }: { value: number; max: number }): ReactElement => { +const MACCard = ({ + value = 0, + max, + hideManageSubscription, +}: { + value: number; + max: number; + hideManageSubscription?: boolean; +}): ReactElement => { const { t } = useTranslation(); const pieGraph = { @@ -22,15 +31,26 @@ const MACCard = ({ value = 0, max }: { value: number; max: number }): ReactEleme const card: CardProps = { title: t('Monthly_active_contacts'), infoText: t('MAC_InfoText'), - upgradeButtonText: t('Buy_more'), - ...(nearLimit && { - upgradeButtonText: t('Upgrade'), + ...(hideManageSubscription && { + upgradeButton: ( + + {t('Buy_more')} + + ), + + ...(nearLimit && { + upgradeButton: ( + + {t('Upgrade')} + + ), + }), }), }; const color = nearLimit ? Palette.statusColor['status-font-on-danger'].toString() : undefined; - const message = macLeft > 0 ? t('MAC_Available', { macLeft }) : t('MAC_Required', { macRequired: -macLeft }); + const message = macLeft > 0 ? t('MAC_Available', { macLeft }) : undefined; return ( diff --git a/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardPremium.tsx b/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardPremium.tsx index de298c10e43a..d829cd4affc2 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardPremium.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardPremium.tsx @@ -44,18 +44,20 @@ const PlanCardPremium = ({ licenseInformation, licenseLimits }: PlanCardProps): {licenseLimits?.activeUsers.max !== Infinity && licenseLimits?.monthlyActiveContacts.max === Infinity && t('Unlimited_MACs')} ))} - - - - {isAutoRenew ? ( - t('Renews_DATE', { date: formatDate(visualExpiration) }) - ) : ( - - Contact sales to check plan renew date. - - )} + {visualExpiration && ( + + + + {isAutoRenew ? ( + t('Renews_DATE', { date: formatDate(visualExpiration) }) + ) : ( + + Contact sales to check plan renew date. + + )} + - + )} {!isLoading ? ( {isSelfHosted ? t('Self_managed_hosting') : t('Cloud_hosting')} diff --git a/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardTrial.tsx b/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardTrial.tsx index 38005bbef870..f1d3001bd508 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardTrial.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/PlanCard/PlanCardTrial.tsx @@ -22,14 +22,15 @@ const PlanCardTrial = ({ licenseInformation }: PlanCardProps): ReactElement => { const isSalesAssisted = licenseInformation.grantedBy?.method !== 'self-service' || true; const { visualExpiration } = licenseInformation; - const trialDaysLeft = differenceInDays(new Date(visualExpiration), new Date()); - return ( - - {t('Trial_active')} {t('n_days_left', { n: trialDaysLeft })} - + {visualExpiration && ( + + {t('Trial_active')}{' '} + {t('n_days_left', { n: differenceInDays(new Date(visualExpiration), new Date()) })} + + )} {isSalesAssisted ? ( @@ -48,7 +49,7 @@ const PlanCardTrial = ({ licenseInformation }: PlanCardProps): ReactElement => { - + {isSalesAssisted ? t('Finish_purchase') : t('Contact_sales')} diff --git a/apps/meteor/client/views/admin/subscription/components/cards/SeatsCard.tsx b/apps/meteor/client/views/admin/subscription/components/cards/SeatsCard.tsx index 90b9a0d43029..34a58fb1791c 100644 --- a/apps/meteor/client/views/admin/subscription/components/cards/SeatsCard.tsx +++ b/apps/meteor/client/views/admin/subscription/components/cards/SeatsCard.tsx @@ -5,14 +5,16 @@ import { useTranslation } from 'react-i18next'; import type { CardProps } from '../FeatureUsageCard'; import FeatureUsageCard from '../FeatureUsageCard'; +import UpgradeButton from '../UpgradeButton'; import UsagePieGraph from '../UsagePieGraph'; type SeatsCardProps = { value: number; max: number; + hideManageSubscription?: boolean; }; -const SeatsCard = ({ value, max }: SeatsCardProps): ReactElement => { +const SeatsCard = ({ value, max, hideManageSubscription }: SeatsCardProps): ReactElement => { const { t } = useTranslation(); const pieGraph = { @@ -25,15 +27,20 @@ const SeatsCard = ({ value, max }: SeatsCardProps): ReactElement => { const card: CardProps = { title: t('Seats'), infoText: t('Seats_InfoText'), - ...(nearLimit && { - upgradeButtonText: t('Buy_more'), - }), + ...(hideManageSubscription && + nearLimit && { + upgradeButton: ( + + {t('Buy_more')} + + ), + }), }; const seatsLeft = pieGraph.total - pieGraph.used; const color = pieGraph.used / pieGraph.total >= 0.8 ? Palette.statusColor['status-font-on-danger'].toString() : undefined; - const message = seatsLeft > 0 ? t('Seats_Available', { seatsLeft }) : t('Seats_Required', { seatsRequired: -seatsLeft }); + const message = seatsLeft > 0 ? t('Seats_Available', { seatsLeft }) : undefined; return ( diff --git a/apps/meteor/client/views/admin/subscription/hooks/useCheckoutUrl.ts b/apps/meteor/client/views/admin/subscription/hooks/useCheckoutUrl.ts index 56ef0396e93e..e4ea7ef042bd 100644 --- a/apps/meteor/client/views/admin/subscription/hooks/useCheckoutUrl.ts +++ b/apps/meteor/client/views/admin/subscription/hooks/useCheckoutUrl.ts @@ -9,12 +9,29 @@ export const useCheckoutUrlAction = () => { const handleExternalLink = useExternalLink(); return useMutation({ - mutationFn: async () => { + mutationFn: async (extraData?: Record) => { const { url } = await getCheckoutUrl(); - handleExternalLink(url); + + const extraUrlParams = new URL(url); + + if (extraData) { + Object.entries(extraData).forEach(([key, value]) => { + extraUrlParams.searchParams.append(key, value.toString()); + }); + } + + handleExternalLink(extraUrlParams.toString()); }, - onError: () => { - handleExternalLink(CONTACT_SALES_LINK); + onError: (_e, extraData) => { + const extraUrlParams = new URL(CONTACT_SALES_LINK); + + if (extraData) { + Object.entries(extraData).forEach(([key, value]) => { + extraUrlParams.searchParams.append(key, value.toString()); + }); + } + + handleExternalLink(extraUrlParams.toString()); }, }); }; diff --git a/apps/meteor/client/views/admin/workspace/VersionCard/VersionCard.tsx b/apps/meteor/client/views/admin/workspace/VersionCard/VersionCard.tsx index d318d15bf516..3af049a25809 100644 --- a/apps/meteor/client/views/admin/workspace/VersionCard/VersionCard.tsx +++ b/apps/meteor/client/views/admin/workspace/VersionCard/VersionCard.tsx @@ -29,22 +29,6 @@ type VersionCardProps = { serverInfo: IWorkspaceInfo; }; -const getVersionStatus = (serverVersion: string, versions: { version: string }[]): VersionStatus => { - const coercedServerVersion = String(semver.coerce(serverVersion)); - const highestVersion = versions.reduce((prev, current) => (prev.version > current.version ? prev : current)); - const isSupported = versions.some((v) => v.version === coercedServerVersion || v.version === serverVersion); - - if (semver.gte(coercedServerVersion, highestVersion.version)) { - return 'latest'; - } - - if (isSupported && semver.gt(highestVersion.version, coercedServerVersion)) { - return 'available_version'; - } - - return 'outdated'; -}; - const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { const mediaQuery = useMediaQuery('(min-width: 1024px)'); @@ -62,29 +46,31 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { const formatDate = useFormatDate(); - const { data: licenseData, isLoading, refetch: refetchLicense } = useLicense(); + const { data: licenseData, isLoading, refetch: refetchLicense } = useLicense({ loadValues: true }); const { isRegistered } = useRegistrationStatus(); const { license, limits } = licenseData || {}; const isAirgapped = license?.information?.offline; const licenseName = useLicenseName(); - const visualExpiration = formatDate(license?.information?.visualExpiration || ''); const serverVersion = serverInfo.version; - const supportedVersions = useMemo( - () => decodeBase64(serverInfo?.supportedVersions?.signed || ''), - [serverInfo?.supportedVersions?.signed], - ); + const { versionStatus, versions } = useMemo(() => { + const supportedVersions = serverInfo?.supportedVersions?.signed ? decodeBase64(serverInfo?.supportedVersions?.signed) : undefined; - const isOverLimits = limits && isOverLicenseLimits(limits); - - const versionStatus = useMemo(() => { - if (!supportedVersions.versions) { - return; + if (!supportedVersions) { + return {}; } - return getVersionStatus(serverVersion, supportedVersions.versions); - }, [serverVersion, supportedVersions.versions]); + + const versionStatus = getVersionStatus(serverVersion, supportedVersions?.versions); + + return { + versionStatus, + versions: supportedVersions?.versions, + }; + }, [serverInfo?.supportedVersions?.signed, serverVersion]); + + const isOverLimits = limits && isOverLicenseLimits(limits); const actionButton: | undefined @@ -109,7 +95,7 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { }; } - if (versionStatus === 'outdated') { + if (versionStatus?.label === 'outdated') { return { action: () => { window.open(RELEASES_EXTERNAL_LINK, '_blank'); @@ -137,7 +123,7 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { icon: 'check', label: t('Operating_withing_plan_limits'), }, - isAirgapped && { + (isAirgapped || !versions) && { type: 'neutral', icon: 'warning', label: ( @@ -149,28 +135,28 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { ), }, - versionStatus !== 'outdated' - ? { - type: 'neutral', - icon: 'check', - label: ( - - Version - supported - until {visualExpiration} - - ), - } - : { - type: 'danger', - icon: 'warning', - label: ( - - Version - not supported - - ), - }, + versionStatus?.label !== 'outdated' && + versionStatus?.expiration && { + type: 'neutral', + icon: 'check', + label: ( + + Version + supported + until {formatDate(versionStatus?.expiration)} + + ), + }, + versionStatus?.label === 'outdated' && { + type: 'danger', + icon: 'warning', + label: ( + + Version + not supported + + ), + }, isRegistered ? { type: 'neutral', @@ -184,7 +170,7 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { }, ].filter(Boolean) as VersionActionItem[] ).sort((a) => (a.type === 'danger' ? -1 : 1)); - }, [isOverLimits, isAirgapped, versionStatus, isRegistered, t, visualExpiration]); + }, [isOverLimits, t, isAirgapped, versions, versionStatus?.label, versionStatus?.expiration, formatDate, isRegistered]); return ( @@ -196,7 +182,7 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { {t('Version_version', { version: serverVersion })} - + {!isAirgapped && versions && } @@ -228,7 +214,33 @@ const VersionCard = ({ serverInfo }: VersionCardProps): ReactElement => { export default VersionCard; -const decodeBase64 = (b64: string): SupportedVersions => { +const decodeBase64 = (b64: string): SupportedVersions | undefined => { const [, bodyEncoded] = b64.split('.'); + if (!bodyEncoded) { + return; + } + return JSON.parse(atob(bodyEncoded)); }; + +const getVersionStatus = ( + serverVersion: string, + versions: SupportedVersions['versions'], +): { label: VersionStatus; expiration: Date | undefined } => { + const coercedServerVersion = String(semver.coerce(serverVersion)); + const highestVersion = versions.reduce((prev, current) => (prev.version > current.version ? prev : current)); + const currentVersionData = versions.find((v) => v.version.includes(coercedServerVersion) || v.version.includes(serverVersion)); + const isSupported = currentVersionData?.version === coercedServerVersion || currentVersionData?.version === serverVersion; + + const versionStatus: { + label: VersionStatus; + expiration: Date | undefined; + } = { + label: 'outdated', + ...(semver.gte(coercedServerVersion, highestVersion.version) && { label: 'latest' }), + ...(isSupported && semver.gt(highestVersion.version, coercedServerVersion) && { label: 'available_version' }), + expiration: currentVersionData?.expiration, + }; + + return versionStatus; +}; diff --git a/apps/meteor/client/views/cloud/CloudAnnouncementHandler.tsx b/apps/meteor/client/views/cloud/CloudAnnouncementHandler.tsx new file mode 100644 index 000000000000..c2fef93c6f29 --- /dev/null +++ b/apps/meteor/client/views/cloud/CloudAnnouncementHandler.tsx @@ -0,0 +1,56 @@ +import type { Cloud, UiKit } from '@rocket.chat/core-typings'; +import { useEffect, useRef } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { exhaustiveCheck } from '../../../lib/utils/exhaustiveCheck'; +import { useUiKitActionManager } from '../../uikit/hooks/useUiKitActionManager'; + +type CloudAnnouncementHandlerProps = Pick; + +const CloudAnnouncementHandler = ({ dictionary = {}, surface, view }: CloudAnnouncementHandlerProps) => { + const { i18n } = useTranslation(); + + useEffect(() => { + const appNs = `app-cloud-announcements-core`; + + for (const [language, translations] of Object.entries(dictionary)) { + i18n.addResources(language, appNs, translations); + } + }, [i18n, dictionary]); + + const actionManager = useUiKitActionManager(); + + const viewRef = useRef({ ...view, appId: 'cloud-announcements-core' }); + viewRef.current = { ...view, appId: 'cloud-announcements-core' }; + + useEffect(() => { + switch (surface) { + case 'modal': { + const modalView = viewRef.current as UiKit.ModalView; + + actionManager.openView('modal', modalView); + + return () => { + actionManager.disposeView(modalView.id); + }; + } + + case 'banner': { + const bannerView = viewRef.current as UiKit.BannerView; + + actionManager.openView('banner', { ...bannerView }); + + return () => { + actionManager.disposeView(bannerView.viewId); + }; + } + + default: + exhaustiveCheck(surface); + } + }, [actionManager, surface]); + + return null; +}; + +export default CloudAnnouncementHandler; diff --git a/apps/meteor/client/views/cloud/CloudAnnouncementsRegion.tsx b/apps/meteor/client/views/cloud/CloudAnnouncementsRegion.tsx new file mode 100644 index 000000000000..7f08fb3f83ae --- /dev/null +++ b/apps/meteor/client/views/cloud/CloudAnnouncementsRegion.tsx @@ -0,0 +1,32 @@ +import { useEndpoint, useUserId } from '@rocket.chat/ui-contexts'; +import { useQuery } from '@tanstack/react-query'; +import React from 'react'; + +import CloudAnnouncementHandler from './CloudAnnouncementHandler'; + +const CloudAnnouncementsRegion = () => { + const uid = useUserId(); + + const getAnnouncements = useEndpoint('GET', '/v1/cloud.announcements'); + + const { isSuccess, data: announcements } = useQuery({ + queryKey: ['cloud', 'announcements'], + queryFn: () => getAnnouncements(), + select: (data) => data.announcements, + enabled: !!uid, + }); + + if (!isSuccess) { + return null; + } + + return ( + <> + {announcements.map((announcement) => ( + + ))} + + ); +}; + +export default CloudAnnouncementsRegion; diff --git a/apps/meteor/client/views/invite/hooks/useValidateInviteQuery.ts b/apps/meteor/client/views/invite/hooks/useValidateInviteQuery.ts index a68f47a3fb09..0d5d8bfc6dc1 100644 --- a/apps/meteor/client/views/invite/hooks/useValidateInviteQuery.ts +++ b/apps/meteor/client/views/invite/hooks/useValidateInviteQuery.ts @@ -37,7 +37,7 @@ export const useValidateInviteQuery = (userId: string | null, token: string | un } if (registrationForm !== 'Disabled') { - setLoginDefaultState('register'); + setLoginDefaultState('invite-register'); } else { setLoginDefaultState('login'); } diff --git a/apps/meteor/client/views/room/providers/hooks/useChatMessagesInstance.ts b/apps/meteor/client/views/room/providers/hooks/useChatMessagesInstance.ts index 93ccddeadff3..a468efd68fc6 100644 --- a/apps/meteor/client/views/room/providers/hooks/useChatMessagesInstance.ts +++ b/apps/meteor/client/views/room/providers/hooks/useChatMessagesInstance.ts @@ -5,6 +5,7 @@ import { useEffect } from 'react'; import { ChatMessages } from '../../../../../app/ui/client/lib/ChatMessages'; import { useEmojiPicker } from '../../../../contexts/EmojiPickerContext'; import type { ChatAPI } from '../../../../lib/chats/ChatAPI'; +import { useUiKitActionManager } from '../../../../uikit/hooks/useUiKitActionManager'; import { useRoomSubscription } from '../../contexts/RoomContext'; import { useInstance } from './useInstance'; import { useUserCard } from './useUserCard'; @@ -12,8 +13,9 @@ import { useUserCard } from './useUserCard'; export function useChatMessagesInstance({ rid, tmid }: { rid: IRoom['_id']; tmid?: IMessage['_id'] }): ChatAPI { const uid = useUserId(); const subscription = useRoomSubscription(); + const actionManager = useUiKitActionManager(); const chatMessages = useInstance(() => { - const instance = new ChatMessages({ rid, tmid, uid }); + const instance = new ChatMessages({ rid, tmid, uid, actionManager }); return [instance, () => instance.release()]; }, [rid, tmid, uid]); diff --git a/apps/meteor/client/views/root/AppLayout.tsx b/apps/meteor/client/views/root/AppLayout.tsx index 83614e4ae67f..5bdcd9d6a5b5 100644 --- a/apps/meteor/client/views/root/AppLayout.tsx +++ b/apps/meteor/client/views/root/AppLayout.tsx @@ -5,7 +5,6 @@ import { useAnalytics } from '../../../app/analytics/client/loadScript'; import { useAnalyticsEventTracking } from '../../hooks/useAnalyticsEventTracking'; import { appLayout } from '../../lib/appLayout'; import PageLoading from './PageLoading'; -import { useCloudAnnouncements } from './hooks/useCloudAnnouncements'; import { useEscapeKeyStroke } from './hooks/useEscapeKeyStroke'; import { useGoogleTagManager } from './hooks/useGoogleTagManager'; import { useMessageLinkClicks } from './hooks/useMessageLinkClicks'; @@ -24,7 +23,6 @@ const AppLayout = () => { useAnalytics(); useEscapeKeyStroke(); useAnalyticsEventTracking(); - useCloudAnnouncements(); const layout = useSyncExternalStore(appLayout.subscribe, appLayout.getSnapshot); diff --git a/apps/meteor/client/views/root/hooks/useCloudAnnouncements.ts b/apps/meteor/client/views/root/hooks/useCloudAnnouncements.ts deleted file mode 100644 index a6326565b80d..000000000000 --- a/apps/meteor/client/views/root/hooks/useCloudAnnouncements.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { UiKit } from '@rocket.chat/core-typings'; -import { useEndpoint, useUserId } from '@rocket.chat/ui-contexts'; -import { useQuery } from '@tanstack/react-query'; -import { useEffect } from 'react'; - -import { useUiKitActionManager } from '../../../uikit/hooks/useUiKitActionManager'; - -export const useCloudAnnouncements = () => { - const uid = useUserId(); - - const getAnnouncements = useEndpoint('GET', '/v1/cloud.announcements'); - - const actionManager = useUiKitActionManager(); - - const { data: firstModalAnnouncement } = useQuery({ - queryKey: ['cloud', 'announcements'], - queryFn: () => getAnnouncements(), - select: (data) => data.announcements.filter((announcement) => announcement.surface === 'modal')[0], - enabled: !!uid, - }); - - useEffect(() => { - if (!firstModalAnnouncement) { - return; - } - - const view = firstModalAnnouncement.view as UiKit.ModalView; - - actionManager.openView('modal', view); - - return () => { - actionManager.disposeView(view.id); - }; - }, [firstModalAnnouncement, actionManager]); - - const { data: firstBannerAnnouncement } = useQuery({ - queryKey: ['cloud', 'announcements'], - queryFn: () => getAnnouncements(), - select: (data) => data.announcements.filter((announcement) => announcement.surface === 'banner')[0], - enabled: !!uid, - }); - - useEffect(() => { - if (!firstBannerAnnouncement) { - return; - } - - const view = firstBannerAnnouncement.view as UiKit.BannerView; - - actionManager.openView('banner', view); - - return () => { - actionManager.disposeView(view.viewId); - }; - }, [firstBannerAnnouncement, actionManager]); -}; diff --git a/apps/meteor/client/views/setupWizard/steps/RegisterServerStep.tsx b/apps/meteor/client/views/setupWizard/steps/RegisterServerStep.tsx index 26d69a5ff6fc..b8370897104b 100644 --- a/apps/meteor/client/views/setupWizard/steps/RegisterServerStep.tsx +++ b/apps/meteor/client/views/setupWizard/steps/RegisterServerStep.tsx @@ -37,8 +37,13 @@ const RegisterServerStep = (): ReactElement => { staleTime: Infinity, }); - const { data } = useQuery(['setupWizard/registerIntent'], async () => registerPreIntent(), { + const { + data: offline, + isLoading, + isError, + } = useQuery(['setupWizard/registerIntent'], async () => registerPreIntent(), { staleTime: Infinity, + select: (data) => data.offline, }); const { mutate } = useMutation( @@ -77,7 +82,7 @@ const RegisterServerStep = (): ReactElement => { stepCount={maxSteps} onSubmit={handleRegister} currentStep={currentStep} - offline={!data || data.offline} + offline={isError || (!isLoading && offline)} /> ); }; diff --git a/apps/meteor/ee/app/canned-responses/client/startup/responses.js b/apps/meteor/ee/app/canned-responses/client/startup/responses.js index 7979f74b0630..6d5834d91cc0 100644 --- a/apps/meteor/ee/app/canned-responses/client/startup/responses.js +++ b/apps/meteor/ee/app/canned-responses/client/startup/responses.js @@ -24,20 +24,23 @@ Meteor.startup(() => { if (!hasPermission('view-canned-responses')) { return; } - try { - // TODO: check options - sdk.stream('canned-responses', 'canned-responses', (response, options) => { - const { agentsId } = options || {}; - if (Array.isArray(agentsId) && !agentsId.includes(Meteor.userId())) { - return; - } - events[response.type](response); - }); - const { responses } = await sdk.rest.get('/v1/canned-responses.get'); - responses.forEach((response) => CannedResponse.insert(response)); - c.stop(); - } catch (error) { - console.log(error); - } + Tracker.afterFlush(() => { + try { + // TODO: check options + sdk.stream('canned-responses', ['canned-responses'], (response, options) => { + const { agentsId } = options || {}; + if (Array.isArray(agentsId) && !agentsId.includes(Meteor.userId())) { + return; + } + events[response.type](response); + }); + } catch (error) { + console.log(error); + } + }); + + const { responses } = await sdk.rest.get('/v1/canned-responses.get'); + responses.forEach((response) => CannedResponse.insert(response)); + c.stop(); }); }); diff --git a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts index b5aba719f29d..c94ee41248bf 100644 --- a/apps/meteor/ee/app/license/server/maxSeatsBanners.ts +++ b/apps/meteor/ee/app/license/server/maxSeatsBanners.ts @@ -15,7 +15,7 @@ const makeWarningBanner = (seats: number): IBanner => ({ view: { icon: 'warning', variant: 'warning', - viewId: '', + viewId: WARNING_BANNER_ID, appId: 'banner-core', blocks: [ { @@ -49,7 +49,7 @@ const makeDangerBanner = (): IBanner => ({ view: { icon: 'ban', variant: 'danger', - viewId: '', + viewId: DANGER_BANNER_ID, appId: 'banner-core', blocks: [ { diff --git a/apps/meteor/ee/app/license/server/settings.ts b/apps/meteor/ee/app/license/server/settings.ts index 8cf8c6237f52..beea68ee2b5f 100644 --- a/apps/meteor/ee/app/license/server/settings.ts +++ b/apps/meteor/ee/app/license/server/settings.ts @@ -14,7 +14,6 @@ Meteor.startup(async () => { await this.add('Enterprise_License_Data', '', { type: 'string', hidden: true, - blocked: true, public: false, }); await this.add('Enterprise_License_Status', '', { diff --git a/apps/meteor/ee/app/license/server/startup.ts b/apps/meteor/ee/app/license/server/startup.ts index 422e453b591c..e0dd567da392 100644 --- a/apps/meteor/ee/app/license/server/startup.ts +++ b/apps/meteor/ee/app/license/server/startup.ts @@ -42,7 +42,29 @@ const applyLicense = async (license: string, isNewLicense: boolean): Promise { +/** + * This is a debounced function that will sync the workspace data to the cloud. + * it caches the context, waits for a second and then syncs the data. + */ + +const syncByTriggerDebounced = (() => { + let timeout: NodeJS.Timeout | undefined; + const contexts: Set = new Set(); + return async (context: string) => { + contexts.add(context); + if (timeout) { + clearTimeout(timeout); + } + + timeout = setTimeout(() => { + timeout = undefined; + void syncByTrigger([...contexts]); + contexts.clear(); + }, 1000); + }; +})(); + +const syncByTrigger = async (contexts: string[]) => { if (!License.encryptedLicense) { return; } @@ -60,16 +82,19 @@ const syncByTrigger = async (context: string) => { const [, , signed] = License.encryptedLicense.split('.'); // Check if this sync has already been done. Based on License, behavior. - if (existingData.signed === signed && existingData[context] === period) { + + if ([...contexts.values()].every((context) => existingData.signed === signed && existingData[context] === period)) { return; } + const obj = Object.fromEntries(contexts.map((context) => [context, period])); + await Settings.updateValueById( 'Enterprise_License_Data', JSON.stringify({ ...(existingData.signed === signed && existingData), ...existingData, - [context]: period, + ...obj, signed, }), ); @@ -91,11 +116,11 @@ settings.onReady(async () => { callbacks.add('workspaceLicenseChanged', async (updatedLicense) => applyLicense(updatedLicense, true)); - License.onBehaviorTriggered('prevent_action', (context) => syncByTrigger(`prevent_action_${context.limit}`)); + License.onBehaviorTriggered('prevent_action', (context) => syncByTriggerDebounced(`prevent_action_${context.limit}`)); - License.onBehaviorTriggered('start_fair_policy', async (context) => syncByTrigger(`start_fair_policy_${context.limit}`)); + License.onBehaviorTriggered('start_fair_policy', async (context) => syncByTriggerDebounced(`start_fair_policy_${context.limit}`)); - License.onBehaviorTriggered('disable_modules', async (context) => syncByTrigger(`disable_modules_${context.limit}`)); + License.onBehaviorTriggered('disable_modules', async (context) => syncByTriggerDebounced(`disable_modules_${context.limit}`)); License.onChange(() => api.broadcast('license.sync')); @@ -123,4 +148,4 @@ License.setLicenseLimitCounter('guestUsers', () => Users.getActiveLocalGuestCoun License.setLicenseLimitCounter('roomsPerGuest', async (context) => (context?.userId ? Subscriptions.countByUserId(context.userId) : 0)); License.setLicenseLimitCounter('privateApps', () => getAppCount('private')); License.setLicenseLimitCounter('marketplaceApps', () => getAppCount('marketplace')); -License.setLicenseLimitCounter('monthlyActiveContacts', async () => LivechatVisitors.countVisitorsOnPeriod(moment.utc().format('YYYY-MM'))); +License.setLicenseLimitCounter('monthlyActiveContacts', () => LivechatVisitors.countVisitorsOnPeriod(moment.utc().format('YYYY-MM'))); diff --git a/apps/meteor/ee/client/apps/orchestrator.ts b/apps/meteor/ee/client/apps/orchestrator.ts index 2433d79aa7b5..eaaf367796ae 100644 --- a/apps/meteor/ee/client/apps/orchestrator.ts +++ b/apps/meteor/ee/client/apps/orchestrator.ts @@ -1,14 +1,13 @@ import { AppClientManager } from '@rocket.chat/apps-engine/client/AppClientManager'; -import type { IApiEndpointMetadata } from '@rocket.chat/apps-engine/definition/api'; import type { IPermission } from '@rocket.chat/apps-engine/definition/permissions/IPermission'; import type { ISetting } from '@rocket.chat/apps-engine/definition/settings'; -import type { AppScreenshot, AppRequestFilter, Serialized, AppRequestsStats, PaginatedAppRequests } from '@rocket.chat/core-typings'; +import type { Serialized } from '@rocket.chat/core-typings'; import { hasAtLeastOnePermission } from '../../../app/authorization/client'; import { sdk } from '../../../app/utils/client/lib/SDKClient'; import { dispatchToastMessage } from '../../../client/lib/toast'; import type { App } from '../../../client/views/marketplace/types'; -import type { IAppLanguage, IAppExternalURL, ICategory } from './@types/IOrchestrator'; +import type { IAppExternalURL, ICategory } from './@types/IOrchestrator'; import { RealAppsEngineUIHost } from './RealAppsEngineUIHost'; class AppClientOrchestrator { @@ -43,11 +42,6 @@ class AppClientOrchestrator { } } - public async screenshots(appId: string): Promise { - const { screenshots } = await sdk.rest.get(`/apps/${appId}/screenshots`); - return screenshots; - } - public async getInstalledApps(): Promise { const result = await sdk.rest.get<'/apps/installed'>('/apps/installed'); @@ -87,53 +81,15 @@ class AppClientOrchestrator { return apps; } - public async getAppsLanguages(): Promise { - const { apps } = await sdk.rest.get('/apps/languages'); - return apps; - } - public async getApp(appId: string): Promise { const { app } = await sdk.rest.get(`/apps/${appId}` as any); return app; } - public async getAppFromMarketplace(appId: string, version: string): Promise<{ app: App; success: boolean }> { - const result = await sdk.rest.get( - `/apps/${appId}` as any, - { - marketplace: 'true', - version, - } as any, - ); - return result; - } - - public async getLatestAppFromMarketplace(appId: string, version: string): Promise { - const { app } = await sdk.rest.get( - `/apps/${appId}` as any, - { - marketplace: 'true', - update: 'true', - appVersion: version, - } as any, - ); - return app; - } - public async setAppSettings(appId: string, settings: ISetting[]): Promise { await sdk.rest.post(`/apps/${appId}/settings`, { settings }); } - public async getAppApis(appId: string): Promise { - const { apis } = await sdk.rest.get(`/apps/${appId}/apis`); - return apis; - } - - public async getAppLanguages(appId: string) { - const { languages } = await sdk.rest.get(`/apps/${appId}/languages`); - return languages; - } - public async installApp(appId: string, version: string, permissionsGranted?: IPermission[]): Promise { const { app } = await sdk.rest.post<'/apps/'>('/apps/', { appId, @@ -197,32 +153,6 @@ class AppClientOrchestrator { throw new Error('Failed to build external url'); } - public async appRequests( - appId: string, - filter?: AppRequestFilter, - sort?: string, - limit?: number, - offset?: number, - ): Promise { - try { - const response = await sdk.rest.get(`/apps/app-request?appId=${appId}&q=${filter}&sort=${sort}&limit=${limit}&offset=${offset}`); - - return response; - } catch (e: unknown) { - throw new Error('Could not get the list of app requests'); - } - } - - public async getAppRequestsStats(): Promise { - try { - const response = await sdk.rest.get('/apps/app-request/stats'); - - return response; - } catch (e: unknown) { - throw new Error('Could not get the app requests stats'); - } - } - public async getCategories(): Promise> { const result = await sdk.rest.get('/apps/categories'); @@ -232,10 +162,6 @@ class AppClientOrchestrator { } throw new Error('Failed to get categories'); } - - public getUIHost(): RealAppsEngineUIHost { - return this._appClientUIHost; - } } export const AppClientOrchestratorInstance = new AppClientOrchestrator(); diff --git a/apps/meteor/ee/client/hooks/useHasLicenseModule.ts b/apps/meteor/ee/client/hooks/useHasLicenseModule.ts index c7d76b093c3b..4e44029c60f4 100644 --- a/apps/meteor/ee/client/hooks/useHasLicenseModule.ts +++ b/apps/meteor/ee/client/hooks/useHasLicenseModule.ts @@ -1,14 +1,11 @@ import type { LicenseModule } from '@rocket.chat/license'; -import { useMethod, useUserId } from '@rocket.chat/ui-contexts'; -import { useQuery } from '@tanstack/react-query'; -export const useHasLicenseModule = (licenseName: LicenseModule): 'loading' | boolean => { - const method = useMethod('license:getModules'); - const uid = useUserId(); - - const features = useQuery(['ee.features'], method, { - enabled: !!uid, - }); +import { useLicenseBase } from '../../../client/hooks/useLicense'; - return features.data?.includes(licenseName) ?? 'loading'; +export const useHasLicenseModule = (licenseName: LicenseModule): 'loading' | boolean => { + return ( + useLicenseBase({ + select: (data) => data.license.activeModules.includes(licenseName), + }).data ?? 'loading' + ); }; diff --git a/apps/meteor/ee/lib/misc/Utilities.js b/apps/meteor/ee/lib/misc/Utilities.ts similarity index 70% rename from apps/meteor/ee/lib/misc/Utilities.js rename to apps/meteor/ee/lib/misc/Utilities.ts index 3d2d9a96270d..5ce7184aa601 100644 --- a/apps/meteor/ee/lib/misc/Utilities.js +++ b/apps/meteor/ee/lib/misc/Utilities.ts @@ -1,9 +1,31 @@ export class Utilities { - static getI18nKeyForApp(key, appId) { - return key && `apps-${appId}-${key}`; + static getI18nKeyForApp(key: TKey, appId: TAppId) { + return `app-${appId}.${key}` as const; } - static curl({ method, params, auth, headers = {}, url, query, content }, opts = {}) { + static curl( + { + method, + params, + auth, + headers = {}, + url, + query, + content, + }: { + method: string; + params?: Record; + auth?: string; + headers?: Record; + url: string; + query?: Record; + content?: unknown; + }, + opts: { + verbose?: boolean; + headers?: boolean; + } = {}, + ) { const newLine = '\\\n '; const cmd = ['curl']; @@ -45,7 +67,7 @@ export class Utilities { } // headers - const headerKeys = []; + const headerKeys: string[] = []; Object.entries(headers).forEach(([key, val]) => { key = key.toLowerCase(); headerKeys.push(key); diff --git a/apps/meteor/ee/server/lib/deviceManagement/session.ts b/apps/meteor/ee/server/lib/deviceManagement/session.ts index 33ed220f4183..7d68f89942cd 100644 --- a/apps/meteor/ee/server/lib/deviceManagement/session.ts +++ b/apps/meteor/ee/server/lib/deviceManagement/session.ts @@ -2,6 +2,7 @@ import type { ISocketConnection } from '@rocket.chat/core-typings'; import { Users } from '@rocket.chat/models'; import { Accounts } from 'meteor/accounts-base'; import { Meteor } from 'meteor/meteor'; +import moment from 'moment'; import { UAParser } from 'ua-parser-js'; import * as Mailer from '../../../../app/mailer/server/api'; @@ -58,6 +59,8 @@ export const listenSessionLogin = () => { return; } + const dateFormat = settings.get('Message_TimeAndDateFormat'); + const { name, username, @@ -75,6 +78,7 @@ export const listenSessionLogin = () => { }`, ipInfo: connection.clientAddress, userAgent: '', + date: moment().format(String(dateFormat)), }; switch (device.type) { diff --git a/apps/meteor/ee/server/lib/deviceManagement/startup.ts b/apps/meteor/ee/server/lib/deviceManagement/startup.ts index 963f479f5675..ee79d34da651 100644 --- a/apps/meteor/ee/server/lib/deviceManagement/startup.ts +++ b/apps/meteor/ee/server/lib/deviceManagement/startup.ts @@ -18,7 +18,7 @@ export const createEmailTemplates = async (): Promise => { }); await this.add( 'Device_Management_Email_Body', - '

{Login_Detected}

[name] ([username]) {Logged_In_Via}

{Device_Management_Client}: [browserInfo]
{Device_Management_OS}: [osInfo]
{Device_Management_Device}: [deviceInfo]
{Device_Management_IP}:[ipInfo]

[userAgent]

{Access_Your_Account}

{Or_Copy_And_Paste_This_URL_Into_A_Tab_Of_Your_Browser}
[SITE_URL]

{Thank_You_For_Choosing_RocketChat}

', + '

{Login_Detected}

[name] ([username]) {Logged_In_Via}

{Device_Management_Client}: [browserInfo]
{Device_Management_OS}: [osInfo]
{Device_Management_Device}: [deviceInfo]
{Device_Management_IP}:[ipInfo]
{Date}: [date]

[userAgent]

{Access_Your_Account}

{Or_Copy_And_Paste_This_URL_Into_A_Tab_Of_Your_Browser}
[SITE_URL]

{Thank_You_For_Choosing_RocketChat}

', { type: 'code', code: 'text/html', diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index 4aebc6d6445c..7836b8eb1868 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,55 @@ # rocketchat-services +## 1.1.15-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 1.1.15-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 1.1.15-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 1.1.15-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 1.1.15-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 1.1.15-rc.2 ### Patch Changes @@ -39,6 +89,36 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 1.1.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 1.1.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 1.1.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 1.1.14 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 5f0c33919d50..d6d6c527fbfc 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -1,7 +1,7 @@ { "name": "rocketchat-services", "private": true, - "version": "1.1.15-rc.2", + "version": "1.1.18-rc.0", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { @@ -40,7 +40,7 @@ "fibers": "^5.0.3", "jaeger-client": "^3.19.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.6.1", "pino": "^8.15.0", @@ -51,13 +51,13 @@ }, "devDependencies": { "@rocket.chat/icons": "^0.32.0", - "@types/cookie": "^0.5.1", - "@types/cookie-parser": "^1.4.3", - "@types/ejson": "^2.2.0", - "@types/express": "^4.17.17", - "@types/fibers": "^3.1.1", - "@types/node": "^14.18.51", - "@types/ws": "^8.5.5", + "@types/cookie": "^0.5.3", + "@types/cookie-parser": "^1.4.5", + "@types/ejson": "^2.2.1", + "@types/express": "^4.17.20", + "@types/fibers": "^3.1.3", + "@types/node": "^14.18.63", + "@types/ws": "^8.5.8", "npm-run-all": "^4.1.5", "pino-pretty": "^7.6.1", "pm2": "^5.2.0", diff --git a/apps/meteor/ee/server/startup/engagementDashboard.ts b/apps/meteor/ee/server/startup/engagementDashboard.ts index ca5dda577bb0..f7a18f1f347b 100644 --- a/apps/meteor/ee/server/startup/engagementDashboard.ts +++ b/apps/meteor/ee/server/startup/engagementDashboard.ts @@ -1,17 +1,14 @@ import { License } from '@rocket.chat/license'; -import { Meteor } from 'meteor/meteor'; License.onToggledFeature('engagement-dashboard', { - up: () => - Meteor.startup(async () => { - const { prepareAnalytics, attachCallbacks } = await import('../lib/engagementDashboard/startup'); - await prepareAnalytics(); - attachCallbacks(); - await import('../api/engagementDashboard'); - }), - down: () => - Meteor.startup(async () => { - const { detachCallbacks } = await import('../lib/engagementDashboard/startup'); - detachCallbacks(); - }), + up: async () => { + const { prepareAnalytics, attachCallbacks } = await import('../lib/engagementDashboard/startup'); + await prepareAnalytics(); + attachCallbacks(); + await import('../api/engagementDashboard'); + }, + down: async () => { + const { detachCallbacks } = await import('../lib/engagementDashboard/startup'); + detachCallbacks(); + }, }); diff --git a/apps/meteor/lib/utils/exhaustiveCheck.ts b/apps/meteor/lib/utils/exhaustiveCheck.ts new file mode 100644 index 000000000000..bf09ea3f6bad --- /dev/null +++ b/apps/meteor/lib/utils/exhaustiveCheck.ts @@ -0,0 +1,3 @@ +export const exhaustiveCheck = (_: never): never => { + throw new Error('Exhaustive check failed'); +}; diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 0d25ab558dbd..b8a860dccad2 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -64,13 +64,13 @@ }, "devDependencies": { "@axe-core/playwright": "^4.7.3", - "@babel/core": "~7.22.9", - "@babel/eslint-parser": "~7.22.9", + "@babel/core": "~7.22.20", + "@babel/eslint-parser": "~7.22.15", "@babel/plugin-proposal-nullish-coalescing-operator": "~7.18.6", "@babel/plugin-proposal-optional-chaining": "~7.21.0", - "@babel/preset-env": "~7.22.9", - "@babel/preset-react": "~7.22.5", - "@babel/register": "~7.22.5", + "@babel/preset-env": "~7.22.20", + "@babel/preset-react": "~7.22.15", + "@babel/register": "~7.22.15", "@faker-js/faker": "~8.0.2", "@playwright/test": "^1.37.1", "@rocket.chat/eslint-config": "workspace:^", @@ -84,85 +84,85 @@ "@storybook/addons": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "0.0.13", - "@swc/core": "^1.3.66", - "@swc/jest": "^0.2.26", + "@swc/core": "^1.3.95", + "@swc/jest": "^0.2.29", "@tanstack/react-query-devtools": "^4.19.1", "@testing-library/react": "~12.1.5", "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "~13.5.0", - "@types/adm-zip": "^0.5.0", - "@types/archiver": "^5.3.2", - "@types/bad-words": "^3.0.1", - "@types/bcrypt": "^5.0.0", - "@types/body-parser": "^1.19.2", - "@types/busboy": "^1.5.0", - "@types/chai": "^4.3.5", - "@types/chai-as-promised": "^7.1.5", - "@types/chai-datetime": "0.0.37", - "@types/chai-dom": "0.0.13", - "@types/chai-spies": "~1.0.3", + "@types/adm-zip": "^0.5.3", + "@types/archiver": "^5.3.4", + "@types/bad-words": "^3.0.2", + "@types/bcrypt": "^5.0.1", + "@types/body-parser": "^1.19.4", + "@types/busboy": "^1.5.2", + "@types/chai": "^4.3.9", + "@types/chai-as-promised": "^7.1.7", + "@types/chai-datetime": "0.0.38", + "@types/chai-dom": "1.11.2", + "@types/chai-spies": "~1.0.5", "@types/clipboard": "^2.0.7", - "@types/codemirror": "^5.60.8", - "@types/cookie-parser": "^1.4.3", - "@types/cors": "^2.8.13", - "@types/cssom": "^0.4.1", + "@types/codemirror": "^5.60.12", + "@types/cookie-parser": "^1.4.5", + "@types/cors": "^2.8.15", + "@types/cssom": "^0.4.2", "@types/dompurify": "^2.3.3", - "@types/ejson": "^2.2.0", - "@types/express": "^4.17.17", + "@types/ejson": "^2.2.1", + "@types/express": "^4.17.20", "@types/express-rate-limit": "^5.1.3", - "@types/fibers": "^3.1.1", - "@types/google-libphonenumber": "^7.4.23", - "@types/gravatar": "^1.8.3", + "@types/fibers": "^3.1.3", + "@types/google-libphonenumber": "^7.4.29", + "@types/gravatar": "^1.8.5", "@types/he": "^1.1.2", - "@types/i18next-sprintf-postprocessor": "^0.2.0", - "@types/imap": "^0.8.37", + "@types/i18next-sprintf-postprocessor": "^0.2.2", + "@types/imap": "^0.8.39", "@types/jsdom": "^16.2.15", - "@types/jsdom-global": "^3.0.4", - "@types/jsrsasign": "^10.5.8", - "@types/later": "^1.2.7", + "@types/jsdom-global": "^3.0.6", + "@types/jsrsasign": "^10.5.11", + "@types/later": "^1.2.8", "@types/ldapjs": "^2.2.5", - "@types/less": "~3.0.3", - "@types/lodash.get": "^4.4.7", - "@types/mailparser": "^3.4.0", + "@types/less": "~3.0.5", + "@types/lodash.get": "^4.4.8", + "@types/mailparser": "^3.4.3", "@types/marked": "^4.0.8", - "@types/meteor-collection-hooks": "^0.8.6", + "@types/meteor-collection-hooks": "^0.8.8", "@types/mkdirp": "^1.0.2", "@types/mocha": "github:whitecolor/mocha-types", "@types/moment-timezone": "^0.5.30", - "@types/node": "^14.18.51", - "@types/node-gcm": "^1.0.1", - "@types/node-rsa": "^1.1.1", - "@types/nodemailer": "^6.4.8", - "@types/oauth2-server": "^3.0.13", - "@types/parseurl": "^1.3.1", - "@types/photoswipe": "^4.1.2", - "@types/prometheus-gc-stats": "^0.6.2", - "@types/proxyquire": "^1.3.28", - "@types/psl": "^1.1.0", - "@types/react": "~17.0.62", - "@types/react-dom": "~17.0.20", - "@types/rewire": "^2.5.28", - "@types/sanitize-html": "^2.9.0", + "@types/node": "^14.18.63", + "@types/node-gcm": "^1.0.3", + "@types/node-rsa": "^1.1.3", + "@types/nodemailer": "^6.4.13", + "@types/oauth2-server": "^3.0.15", + "@types/parseurl": "^1.3.2", + "@types/photoswipe": "^4.1.5", + "@types/prometheus-gc-stats": "^0.6.3", + "@types/proxyquire": "^1.3.30", + "@types/psl": "^1.1.2", + "@types/react": "~17.0.69", + "@types/react-dom": "~17.0.22", + "@types/rewire": "^2.5.29", + "@types/sanitize-html": "^2.9.3", "@types/semver": "^7.3.10", "@types/sharp": "^0.30.5", - "@types/sinon": "^10.0.15", - "@types/strict-uri-encode": "^2.0.0", + "@types/sinon": "^10.0.20", + "@types/strict-uri-encode": "^2.0.1", "@types/string-strip-html": "^5.0.1", - "@types/supertest": "^2.0.12", - "@types/textarea-caret": "^3.0.1", - "@types/ua-parser-js": "^0.7.36", - "@types/use-subscription": "^1.0.0", - "@types/use-sync-external-store": "^0.0.3", + "@types/supertest": "^2.0.15", + "@types/textarea-caret": "^3.0.2", + "@types/ua-parser-js": "^0.7.38", + "@types/use-subscription": "^1.0.1", + "@types/use-sync-external-store": "^0.0.5", "@types/uuid": "^8.3.4", - "@types/xml-crypto": "~1.4.2", - "@types/xml-encryption": "~1.2.1", + "@types/xml-crypto": "~1.4.4", + "@types/xml-encryption": "~1.2.3", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "autoprefixer": "^9.8.8", "babel-loader": "^8.3.0", "babel-plugin-array-includes": "^2.0.3", "babel-plugin-istanbul": "^6.1.1", - "chai": "^4.3.7", + "chai": "^4.3.10", "chai-as-promised": "^7.1.1", "chai-datetime": "^1.8.0", "chai-dom": "^1.11.0", @@ -174,22 +174,22 @@ "eslint-plugin-anti-trojan-source": "~1.1.1", "eslint-plugin-import": "~2.26.0", "eslint-plugin-no-floating-promise": "~1.0.2", - "eslint-plugin-playwright": "~0.15.0", + "eslint-plugin-playwright": "~0.15.3", "eslint-plugin-prettier": "~4.2.1", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-testing-library": "~5.11.0", + "eslint-plugin-testing-library": "~5.11.1", "eslint-plugin-you-dont-need-lodash-underscore": "~6.12.0", "fast-glob": "^3.2.12", - "i18next": "~23.4.5", - "jest": "~29.6.1", + "i18next": "~23.4.9", + "jest": "~29.6.4", "jsdom-global": "^3.0.2", "mocha": "^9.2.2", "nyc": "^15.1.0", "outdent": "~0.8.0", "pino-pretty": "^7.6.1", - "playwright-qase-reporter": "^1.2.0-alpha.3", - "postcss": "~8.4.24", + "playwright-qase-reporter": "^1.2.1", + "postcss": "~8.4.31", "postcss-custom-properties": "^11.0.0", "postcss-easy-import": "^3.0.0", "postcss-load-config": "^3.1.4", @@ -210,7 +210,7 @@ "typescript": "~5.2.2" }, "dependencies": { - "@babel/runtime": "~7.22.6", + "@babel/runtime": "~7.22.15", "@bugsnag/js": "~7.20.2", "@bugsnag/plugin-react": "~7.19.0", "@google-cloud/storage": "^6.11.0", @@ -221,7 +221,7 @@ "@nivo/line": "0.80.0", "@nivo/pie": "0.80.0", "@react-aria/color": "^3.0.0-beta.15", - "@react-pdf/renderer": "^3.1.12", + "@react-pdf/renderer": "^3.1.14", "@rocket.chat/account-utils": "workspace:^", "@rocket.chat/agenda": "workspace:^", "@rocket.chat/api-client": "workspace:^", @@ -280,14 +280,14 @@ "@slack/bolt": "^3.14.0", "@slack/rtm-api": "^6.0.0", "@tanstack/react-query": "^4.16.1", - "@types/cookie": "^0.5.1", + "@types/cookie": "^0.5.3", "@types/katex": "^0.14.0", - "@types/lodash": "^4.14.195", - "@types/lodash.debounce": "^4.0.7", - "@types/object-path": "^0.11.1", - "@types/proxy-from-env": "^1.0.1", - "@types/speakeasy": "^2.0.7", - "@xmldom/xmldom": "^0.8.8", + "@types/lodash": "^4.14.200", + "@types/lodash.debounce": "^4.0.8", + "@types/object-path": "^0.11.3", + "@types/proxy-from-env": "^1.0.3", + "@types/speakeasy": "^2.0.9", + "@xmldom/xmldom": "^0.8.10", "adm-zip": "0.5.10", "ajv": "^8.11.0", "ajv-formats": "~2.1.1", @@ -307,7 +307,7 @@ "change-case": "^4.1.2", "chart.js": "^3.8.0", "clipboard": "^2.0.11", - "codemirror": "^5.65.13", + "codemirror": "^5.65.15", "colorette": "^2.0.20", "colors": "^1.4.0", "connect": "^3.7.0", @@ -335,8 +335,8 @@ "file-type": "^16.5.4", "filenamify": "^4.3.0", "filesize": "9.0.11", - "generate-password": "^1.7.0", - "google-libphonenumber": "^3.2.32", + "generate-password": "^1.7.1", + "google-libphonenumber": "^3.2.33", "googleapis": "^104.0.0", "gravatar": "^1.8.2", "he": "^1.2.0", @@ -357,7 +357,7 @@ "jsdom": "^16.7.0", "jsrsasign": "^10.5.24", "juice": "^8.0.0", - "katex": "^0.16.7", + "katex": "~0.16.9", "ldap-escape": "^2.0.6", "ldapjs": "^2.3.3", "limax": "^3.0.0", @@ -372,7 +372,7 @@ "mime-db": "^1.52.0", "mime-type": "^4.0.0", "mkdirp": "^1.0.4", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "moment": "^2.29.4", "moment-timezone": "^0.5.43", "mongo-message-queue": "^1.0.0", @@ -393,24 +393,24 @@ "pino": "^8.15.0", "postis": "^2.2.0", "prom-client": "^14.0.1", - "prometheus-gc-stats": "^0.6.4", + "prometheus-gc-stats": "^0.6.5", "proxy-from-env": "^1.1.0", "psl": "^1.8.0", "query-string": "^7.1.3", "queue-fifo": "^0.2.6", - "rc-scrollbars": "^1.1.5", + "rc-scrollbars": "^1.1.6", "react": "~17.0.2", "react-aria": "~3.23.1", "react-dom": "~17.0.2", "react-error-boundary": "^3.1.4", "react-hook-form": "~7.45.4", - "react-i18next": "~13.2.1", + "react-i18next": "~13.2.2", "react-keyed-flatten-children": "^1.3.0", "react-virtuoso": "^1.11.1", "redis": "^4.0.6", "sanitize-html": "^2.7.2", "semver": "^7.3.7", - "sharp": "^0.30.7", + "sharp": "^0.32.6", "sip.js": "^0.20.1", "sodium-native": "^3.3.0", "sodium-plus": "^0.9.0", @@ -425,7 +425,7 @@ "turndown": "^7.1.2", "twilio": "^3.76.1", "twit": "^2.2.11", - "ua-parser-js": "^1.0.35", + "ua-parser-js": "^1.0.37", "underscore": "^1.13.6", "universal-perf-hooks": "^1.0.1", "url-polyfill": "^1.1.12", @@ -433,7 +433,7 @@ "use-sync-external-store": "^1.2.0", "uuid": "^8.3.2", "vm2": "^3.9.19", - "webdav": "^4.11.2", + "webdav": "^4.11.3", "xml-crypto": "~3.1.0", "xml-encryption": "~3.0.2", "xml2js": "~0.5.0", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json index c6d61a871a1c..72a16aa8184a 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ar.i18n.json @@ -4275,7 +4275,6 @@ "Transcript_message": "رسالة لإظهارها عند السؤال عن النسخة المكتوبة", "Transcript_of_your_livechat_conversation": "نسخة مكتوبة من محادثة القناة متعددة الاتجاهات", "Transcript_Request": "طلب نسخة مكتوبة", - "onboarding.form.registeredServerForm.continueStandalone": "المتابعة كمستقل", "transfer-livechat-guest": "نقل ضيوف Livechat", "transfer-livechat-guest_description": "إذن لنقل ضيوف Livechat", "Transferred": "تم النقل", @@ -4813,77 +4812,6 @@ "registration.component.form.confirmation": "التأكيد", "registration.component.form.sendConfirmationEmail": "إرسال رسالة تأكيد", "registration.component.form.register": "تسجيل", - "onboarding.component.form.requiredField": "هذا الحقل مطلوب", - "onboarding.component.form.steps": "الخطوة {{currentStep}} من {{stepCount}}", - "onboarding.component.form.action.back": "عودة", - "onboarding.component.form.action.next": "التالي", - "onboarding.component.form.action.skip": "تخطي هذه الخطوة", - "onboarding.component.form.action.register": "تسجيل", - "onboarding.component.form.action.confirm": "تأكيد", - "onboarding.component.form.action.pasteHere": "لصق هنا...", - "onboarding.component.form.termsAndConditions": "أوافق على <1>البنود والشروط و<3>سياسة الخصوصية", - "onboarding.component.emailCodeFallback": "ألم تتلق رسالة بريد إلكتروني؟ <1>إعادة الإرسال or <3>تغيير البريد الإلكتروني", - "onboarding.page.form.title": "دعنا <1>نطلق مساحة العمل الخاصة بك", - "onboarding.page.emailConfirmed.title": "تم تأكيد البريد الإلكتروني!", - "onboarding.page.emailConfirmed.subtitle": "يمكنك العودة إلى تطبيق Rocket.Chat الخاص بك - لقد أطلقنا مساحة العمل الخاصة بك سابقًا.", - "onboarding.page.checkYourEmail.title": "تحقق من بريدك الالكتروني", - "onboarding.page.checkYourEmail.subtitle": "تم إرسال طلبك بنجاح.<1>تحقق من صندوق بريدك الإلكتروني لبدء الإصدار التجريبي من ‏Enterprise.‏<1>ستنتهي صلاحية الرابط في غضون 30 دقيقة.", - "onboarding.page.confirmationProcess.title": "التأكيد قيد التقدم", - "onboarding.page.cloudDescription.title": "لنبدأ مساحة العمل الخاصة بك و<1>الإصدار التجريبي لمدة 14 يومًا", - "onboarding.page.cloudDescription.tryGold": "جرب أفضل خطة ذهبية لدينا لمدة 14 يومًا مجانًا", - "onboarding.page.cloudDescription.numberOfIntegrations": "1000 عملية تكامل", - "onboarding.page.cloudDescription.availability": "قابلية وصول عالية", - "onboarding.page.cloudDescription.auditing": "لوحة تدقيق الرسائل/سجلات التدقيق", - "onboarding.page.cloudDescription.engagement": "لوحة معلومات المشاركة", - "onboarding.page.cloudDescription.ldap": "مزامنة LDAP المحسّنة", - "onboarding.page.cloudDescription.omnichannel": "تجربة متميزة للقناة متعددة الاتجاهات", - "onboarding.page.cloudDescription.sla": "اتفاقية مستوى الخدمة: الإصدار المتميز", - "onboarding.page.cloudDescription.push": "الإشعارات المنبثقة الآمنة", - "onboarding.page.cloudDescription.goldIncludes": "* تشمل الباقة الذهبية جميع الميزات الموجودة في الخطط الأخرى", - "onboarding.page.alreadyHaveAccount": "هل لديك حساب؟ <1>إدارة مساحات العمل الخاصة بك.", - "onboarding.page.invalidLink.title": "لم يعد الرابط الخاص بك صالحًا", - "onboarding.page.invalidLink.content": "يبدو أنه سبق لك استخدام رابط الدعوة. تم إنشاؤه لتسجيل دخول واحد. اطلب رابطًا جديدًا للانضمام إلى مساحة العمل الخاصة بك.", - "onboarding.page.invalidLink.button.text": "طلب رابط جديد", - "onboarding.page.requestTrial.title": "طلب <1>نسخة تجريبية لمدة 30 يومًا", - "onboarding.page.requestTrial.subtitle": "جرب أفضل خطة إصدار Enterprise لمدة 30 يومًا مجانًا", - "onboarding.page.magicLinkEmail.title": "أرسلنا لك رابط تسجيل الدخول عبر البريد الإلكتروني", - "onboarding.page.magicLinkEmail.subtitle": "انقر فوق الرابط الموجود في البريد الإلكتروني الذي أرسلناه لك للتو لتسجيل الدخول إلى مساحة العمل الخاصة بك. <1>ستنتهي صلاحية الرابط خلال 30 دقيقة.", - "onboarding.form.adminInfoForm.title": "معلومات المسؤول", - "onboarding.form.adminInfoForm.subtitle": "نحتاج إلى هذا لإنشاء ملف شخصي مسؤول داخل مساحة العمل الخاصة بك", - "onboarding.form.adminInfoForm.fields.fullName.label": "الاسم الكامل", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "الاسم الأول واسم العائلة", - "onboarding.form.adminInfoForm.fields.username.label": "اسم المستخدم", - "onboarding.form.adminInfoForm.fields.username.placeholder": "‎@username", - "onboarding.form.adminInfoForm.fields.email.label": "البريد الإلكتروني", - "onboarding.form.adminInfoForm.fields.email.placeholder": "البريد الإلكتروني", - "onboarding.form.adminInfoForm.fields.password.label": "كلمة المرور", - "onboarding.form.adminInfoForm.fields.password.placeholder": "إنشاء كلمة مرور", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "أبقني على اطلاع بتحديثات Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "بانتظار التأكيد", - "onboarding.form.organizationInfoForm.title": "معلومات المؤسسة", - "onboarding.form.organizationInfoForm.subtitle": "نرجو أن تتعاون معنا. ستساعدنا هذه المعلومات على تخصيص مساحة عملك", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "اسم المؤسسة", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "اسم المؤسسة", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "نوع المؤسسة", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "تحديد", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "مجال المؤسسة", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "تحديد", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "حجم المؤسسة", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "تحديد", - "onboarding.form.organizationInfoForm.fields.country.label": "البلد", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "تحديد", - "onboarding.form.registerOfflineForm.title": "التسجيل دون اتصال", - "onboarding.form.registeredServerForm.title": "تسجيل الخادم الخاص بك", - "onboarding.form.registeredServerForm.included.push": "الإشعارات المرسلة عبر الهاتف المحمول", - "onboarding.form.registeredServerForm.included.externalProviders": "التكامل مع مقدمي الخدمات الخارجيين (WhatsApp وFacebook وTelegram وTwitter)", - "onboarding.form.registeredServerForm.included.apps": "الوصول إلى تطبيقات السوق", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "البريد الإلكتروني لحساب السحابة", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "يرجى إدخال بريدك الإلكتروني", - "onboarding.form.registeredServerForm.keepInformed": "أبقني على اطلاع بالأخبار والأحداث", - "onboarding.form.standaloneServerForm.title": "تأكيد الخادم المستقل", - "onboarding.form.standaloneServerForm.servicesUnavailable": "لن تكون بعض الخدمات متاحة أو ستتطلب إعدادًا يدويًا", - "onboarding.form.standaloneServerForm.publishOwnApp": "لإرسال الإشعارات، تحتاج إلى تجميع تطبيقك الخاص ونشره على Google Play وApp Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "تحتاج إلى التكامل مع الخدمات الخارجية يدويًا", "Awaiting_confirmation": "بانتظار التأكيد", "RegisterWorkspace_Features_MobileNotifications_Title": "الإشعارات المرسلة عبر الهاتف المحمول", "RegisterWorkspace_Features_Marketplace_Title": "السوق", @@ -4892,4 +4820,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "أوافق على <1>البنود والشروط و<3>سياسة الخصوصية", "UpgradeToGetMore_engagement-dashboard_Title": "التحليلات", "UpgradeToGetMore_auditing_Title": "تدقيق الرسائل" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json index 4163c48d413f..a0d2c67273da 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/de.i18n.json @@ -4797,7 +4797,6 @@ "Transcript_message": "Nachricht, die bei der Nachfrage bzgl. einer Mitschrift gesendet wird", "Transcript_of_your_livechat_conversation": "Transkript deiner Omnichannel-Konversation", "Transcript_Request": "Protokollanforderung", - "onboarding.form.registeredServerForm.continueStandalone": "Als Stand-alone fortfahren", "transfer-livechat-guest": "Livechat Gäste übertragen", "transfer-livechat-guest_description": "Berechtigung, Livechat-Gäste zu übertragen", "Transferred": "Übertragen", @@ -5424,77 +5423,6 @@ "registration.component.form.confirmation": "Bestätigung", "registration.component.form.sendConfirmationEmail": "Bestätigungsmail versenden", "registration.component.form.register": "Registrieren", - "onboarding.component.form.requiredField": "Dies ist ein Pflichtfeld", - "onboarding.component.form.steps": "Schrit {{currentStep}} von {{stepCount}}", - "onboarding.component.form.action.back": "Zurück", - "onboarding.component.form.action.next": "Nächster", - "onboarding.component.form.action.skip": "Überspringen", - "onboarding.component.form.action.register": "Registrieren", - "onboarding.component.form.action.confirm": "Bestätigen", - "onboarding.component.form.action.pasteHere": "Hier einfügen...", - "onboarding.component.form.termsAndConditions": "Ich bin mit den Nutzungsvereinbarung und den Datenschutzbestimmungen einverstanden", - "onboarding.component.emailCodeFallback": "Keine E-Mail erhalten? Noch einemal versenden oder E-Mailadresse ändern", - "onboarding.page.form.title": "<1>Starten wir Ihren Arbeitsbereich", - "onboarding.page.emailConfirmed.title": "E-Mail bestätigt", - "onboarding.page.emailConfirmed.subtitle": "Sie können zu Ihrer Rocket.Chat-Anwendung zurückkehren - wir haben Ihren Arbeitsbereich bereits gestartet.", - "onboarding.page.checkYourEmail.title": "Bitte prüfe Deine E-Mail", - "onboarding.page.checkYourEmail.subtitle": "Ihre Anforderung wurde erfolgreich gesendet.<1>Prüfen Sie Ihren E-Mail-Eingang, um Ihre Unternehmens-Testversion zu starten.<1>Der Link verfällt in 30 Minuten.", - "onboarding.page.confirmationProcess.title": "Bestätigung in Bearbeitung", - "onboarding.page.cloudDescription.title": "Starten Sie Ihren Arbeitsbereich und die <1>14-tägige Testphase", - "onboarding.page.cloudDescription.tryGold": "Testen Sie unseren besten Gold-Plan 14 Tage gratis", - "onboarding.page.cloudDescription.numberOfIntegrations": "1.000 Integrationen", - "onboarding.page.cloudDescription.availability": "Hohe Verfügbarkeit", - "onboarding.page.cloudDescription.auditing": "Auditpanel/Auditprotokolle für Nachrichten", - "onboarding.page.cloudDescription.engagement": "Einsatz-Dashboard", - "onboarding.page.cloudDescription.ldap": "Erweiterte LDAP-Synchronisierung", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel Premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Sichere Push-Benachrichtigungen", - "onboarding.page.cloudDescription.goldIncludes": "* der Gold-Plan enthält alle Funktionen der anderen Pläne", - "onboarding.page.alreadyHaveAccount": "Haben Sie bereits ein Konto? <1>Verwalten Sie Ihre Arbeitsbereiche.", - "onboarding.page.invalidLink.title": "Ihr Link ist nicht mehr gültig", - "onboarding.page.invalidLink.content": "Scheinbar haben Sie den Einladungslink bereits verwendet. Er wird für eine einmalige Anmeldung generiert. Fordern Sie einen neuen an, um Ihrem Arbeitsbereich beizutreten.", - "onboarding.page.invalidLink.button.text": "Neuen Link anfordern", - "onboarding.page.requestTrial.title": "<1>30-Tage Testversion anfordern", - "onboarding.page.requestTrial.subtitle": "Testen Sie unseren besten Enterprise Edition-Plan 30 Tage lang gratis", - "onboarding.page.magicLinkEmail.title": "Wir haben Ihnen einen Anmeldelink gesendet", - "onboarding.page.magicLinkEmail.subtitle": "Klicken Sie auf den Link, in der gerade an Sie versandten E-Mail, um sich bei Ihrem Arbeitsbereich anzumelden. <1>Der Link verfällt in 30 Minuten.", - "onboarding.form.adminInfoForm.title": "Admin-Info", - "onboarding.form.adminInfoForm.subtitle": "Das ist erforderlich, um ein Admin-Profil in Ihrem Arbeitsbereich zu erstellen", - "onboarding.form.adminInfoForm.fields.fullName.label": "Vollständiger Name", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Vor- und Zuname", - "onboarding.form.adminInfoForm.fields.username.label": "Benutzername", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@benutzername", - "onboarding.form.adminInfoForm.fields.email.label": "E-Mail", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-Mail", - "onboarding.form.adminInfoForm.fields.password.label": "Passwort", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Passwort erstellen", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Halten Sie mich über Rocket.Chat-Updates auf dem Laufenden", - "onboarding.form.awaitConfirmationForm.title": "Warten auf Bestätigung", - "onboarding.form.organizationInfoForm.title": "Organisations-Info", - "onboarding.form.organizationInfoForm.subtitle": "Bitte, haben Sie Verständnis. Diese Informationen helfen uns, Ihren Arbeitsbereich zu personalisieren.", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Name der Organisation", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Name der Organisation", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Art der Organisation", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Auswählen", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Branche der Organisation", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Auswählen", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Größe der Organisation", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Auswählen", - "onboarding.form.organizationInfoForm.fields.country.label": "Land", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Auswählen", - "onboarding.form.registerOfflineForm.title": "Manuell registrieren", - "onboarding.form.registeredServerForm.title": "Registrieren Sie Ihren Server", - "onboarding.form.registeredServerForm.included.push": "Mobile Push-Benachrichtigungen", - "onboarding.form.registeredServerForm.included.externalProviders": "Integration mit externen Anbietern (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Zugriff auf Marktplatz-Apps", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Cloud-Konto-E-Mail", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein", - "onboarding.form.registeredServerForm.keepInformed": "Informieren Sie mich über Neuigkeiten und Ereignisse", - "onboarding.form.standaloneServerForm.title": "Stand-alone-Server-Bestätigung", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Einige der Services werden nicht verfügbar sein oder erfordern eine manuelle Einrichtung", - "onboarding.form.standaloneServerForm.publishOwnApp": "Um Push-Benachrichtigungen zu senden, müssen Sie Ihre eigene App kompilieren und in Google Play und im App Store veröffentlichen", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Manuelle Integration mit externen Services erforderlich", "Something_Went_Wrong": "Etwas ist schief gelaufen", "Toolbox_room_actions": "Primäre Room-Aktionen", "Theme_light": "Hell", @@ -5523,4 +5451,4 @@ "Uninstall_grandfathered_app": "{{appName}} deinstallieren?", "UpgradeToGetMore_engagement-dashboard_Title": "Analytics", "UpgradeToGetMore_auditing_Title": "Nachrichtenüberprüfung" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json index 1b84e684b02d..44522e7140a2 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/en.i18n.json @@ -1060,8 +1060,6 @@ "Cloud_register_offline_finish_helper": "After completing the registration process in the Cloud Console you should be presented with some text. Please paste it here to finish the registration.", "Cloud_register_offline_helper": "Workspaces can be manually registered if airgapped or network access is restricted. Copy the text below and go to our Cloud Console to complete the process.", "Cloud_register_success": "Your workspace has been successfully registered!", - "Cloud_registration_pending_html": "Push notifications will not work until the registration is finished. Learn more", - "Cloud_registration_pending_title": "Cloud registration is still pending", "Cloud_registration_required": "Registration Required", "Cloud_registration_required_description": "Looks like during setup you didn't chose to register your workspace.", "Cloud_registration_required_link_text": "Click here to register your workspace.", @@ -1861,7 +1859,7 @@ "Enterprise_Departments_description_free_trial": "Workspaces on Community Edition can create one department. Start a free Enterprise trial to create multiple departments today!", "email_style_description": "Avoid nested selectors", "email_style_label": "Email Style", - "Enterprise_Description": "Manually update your Enterprise license.", + "Enterprise_Description": "Manually update your Premium license.", "Email_subject": "Email Subject", "Enterprise_License": "Enterprise License", "Enterprise_License_Description": "If your workspace is registered and license is provided by Rocket.Chat cloud you don't need to manually update the license here.", @@ -6162,7 +6160,7 @@ "Premium": "Premium", "Enterprise": "Premium", "Premium_capability": "Premium capability", - "Operating_withing_plan_limits": "Operating withing plan limits", + "Operating_withing_plan_limits": "Operating within plan limits", "Plan_limits_reached": "Plan limits reached", "Workspace_not_registered": "Workspace not registered", "Users_Connected": "Users connected", diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json index 1b2af26be2f8..e7228feb72d6 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/es.i18n.json @@ -4241,7 +4241,6 @@ "Transcript_message": "Mensaje para mostrar al preguntar sobre la transcripción", "Transcript_of_your_livechat_conversation": "Transcripción de tu conversación de Omnichannel.", "Transcript_Request": "Solicitud de transcripción", - "onboarding.form.registeredServerForm.continueStandalone": "Continuar como independiente", "transfer-livechat-guest": "Transferir invitados de Livechat", "transfer-livechat-guest_description": "Permiso para transferir invitados de Livechat", "Transferred": "Transferido", @@ -4764,77 +4763,6 @@ "registration.component.form.confirmPassword": "Confirma tu contraseña", "registration.component.form.confirmation": "Confirmación", "registration.component.form.register": "Registrar", - "onboarding.component.form.requiredField": "Este campo es obligatorio", - "onboarding.component.form.steps": "Paso {{currentStep}} de {{stepCount}}", - "onboarding.component.form.action.back": "Anterior", - "onboarding.component.form.action.next": "Siguiente", - "onboarding.component.form.action.skip": "Omitir este paso", - "onboarding.component.form.action.register": "Registrar", - "onboarding.component.form.action.confirm": "Confirmar", - "onboarding.component.form.action.pasteHere": "Pegar aquí...", - "onboarding.component.form.termsAndConditions": "Acepto los <1>términos y condiciones y la <3>política de privacidad", - "onboarding.component.emailCodeFallback": "¿No has recibido el correo electrónico? <1>Volver a enviar o <3>cambiar correo electrónico", - "onboarding.page.form.title": "Vamos a <1>Iniciar tu espacio de trabajo", - "onboarding.page.emailConfirmed.title": "Correo electrónico confirmado", - "onboarding.page.emailConfirmed.subtitle": "Puedes volver a la aplicación de Rocket.Chat. Ya hemos iniciado tu espacio de trabajo.", - "onboarding.page.checkYourEmail.title": "Comprueba tu correo electrónico", - "onboarding.page.checkYourEmail.subtitle": "Se ha enviado correctamente tu solicitud.<1>Consulta tu bandeja de entrada de correo electrónico para iniciar la prueba empresarial.<1>El enlace caducará en 30 minutos.", - "onboarding.page.confirmationProcess.title": "Confirmación en curso", - "onboarding.page.cloudDescription.title": "Vamos a iniciar tu espacio de trabajo y la <1>prueba de 14 días", - "onboarding.page.cloudDescription.tryGold": "Prueba nuestro plan Gold gratis durante 14 días", - "onboarding.page.cloudDescription.numberOfIntegrations": "1000 integraciones", - "onboarding.page.cloudDescription.availability": "Alta disponibilidad", - "onboarding.page.cloudDescription.auditing": "Registros de auditoría/Panel de auditoría de mensajes", - "onboarding.page.cloudDescription.engagement": "Panel de interacción", - "onboarding.page.cloudDescription.ldap": "Sincronización mejorada LDAP", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "Acuerdo de nivel de servicio: Premium", - "onboarding.page.cloudDescription.push": "Notificaciones push seguras", - "onboarding.page.cloudDescription.goldIncludes": "* El plan Gold incluye todas las funciones del resto de planes", - "onboarding.page.alreadyHaveAccount": "¿Ya tienes una cuenta? <1>Gestiona tus espacios de trabajo", - "onboarding.page.invalidLink.title": "El enlace ya no es válido", - "onboarding.page.invalidLink.content": "Parece que ya has usado este enlace de invitación. Se ha generado para un uso único. Solicita uno nuevo para unirte a tu espacio de trabajo.", - "onboarding.page.invalidLink.button.text": "Solicitar nuevo enlace", - "onboarding.page.requestTrial.title": "Solicitar una <1>prueba de 30 días", - "onboarding.page.requestTrial.subtitle": "Prueba nuestro mejor plan Enterprise Edition gratis durante 30 días", - "onboarding.page.magicLinkEmail.title": "Te hemos enviado un enlace de inicio de sesión por correo electrónico", - "onboarding.page.magicLinkEmail.subtitle": "Haz clic en el enlace del mensaje que acabamos de enviarte para iniciar sesión en tu espacio de trabajo. <1>El enlace caducará en 30 minutos.", - "onboarding.form.adminInfoForm.title": "Información de administrador", - "onboarding.form.adminInfoForm.subtitle": "Necesitamos esto para crear un perfil de administrador en tu espacio de trabajo", - "onboarding.form.adminInfoForm.fields.fullName.label": "Nombre completo", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Nombre y apellido", - "onboarding.form.adminInfoForm.fields.username.label": "Nombre de usuario", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "Correo electrónico", - "onboarding.form.adminInfoForm.fields.email.placeholder": "Correo electrónico", - "onboarding.form.adminInfoForm.fields.password.label": "Contraseña", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Crear contraseña", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Recibir información sobre Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "Esperando confirmación", - "onboarding.form.organizationInfoForm.title": "Información de organización", - "onboarding.form.organizationInfoForm.subtitle": "Ya falta poco. Esta información nos ayudará a personalizar tu espacio de trabajo", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Nombre de la organización", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Nombre de la organización", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Tipo de organización", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Seleccionar", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Sector de la organización", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Seleccionar", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Tamaño de la organización", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Seleccionar", - "onboarding.form.organizationInfoForm.fields.country.label": "País", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Seleccionar", - "onboarding.form.registerOfflineForm.title": "Registrarse fuera de línea", - "onboarding.form.registeredServerForm.title": "Registrar tu servidor", - "onboarding.form.registeredServerForm.included.push": "Notificaciones push para móviles", - "onboarding.form.registeredServerForm.included.externalProviders": "Integración con proveedores externos (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Acceso al Marketplace de aplicaciones", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Cuenta de correo electrónico en la nube", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Introduce tu correo electrónico", - "onboarding.form.registeredServerForm.keepInformed": "Recibir información sobre noticias y eventos", - "onboarding.form.standaloneServerForm.title": "Confirmación de servidor independiente", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Algunos servicios no estarán disponibles o requerirán configuración manual", - "onboarding.form.standaloneServerForm.publishOwnApp": "Para enviarte notificaciones push, debes compilar y publicar tu propia aplicación en Google Play y App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Necesita integrarse manualmente con servicios externos", "This_attachment_is_not_supported": "El formato de archivo no es soportado", "Awaiting_confirmation": "Esperando confirmación", "RegisterWorkspace_Features_MobileNotifications_Title": "Notificaciones push para móviles", @@ -4844,4 +4772,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "Acepto los <1>términos y condiciones y la <3>política de privacidad", "UpgradeToGetMore_engagement-dashboard_Title": "Análisis", "UpgradeToGetMore_auditing_Title": "Auditoría de mensajes" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json index 4ea8994cfe66..c6fbfa677d42 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fi.i18n.json @@ -4894,7 +4894,6 @@ "Transcript_message": "Viesti, kun kysytään puhtaaksikirjoituksesta", "Transcript_of_your_livechat_conversation": "Puhtaaksikirjoitus Omnichannel-keskustelustasi.", "Transcript_Request": "Puhtaaksikirjoituspyyntö", - "onboarding.form.registeredServerForm.continueStandalone": "Jatka itsenäisellä versiolla", "transfer-livechat-guest": "Siirrä Livechat-vieraita", "transfer-livechat-guest_description": "Lupa siirtää livechat-vieraita", "Transferred": "Siirretty", @@ -5565,77 +5564,6 @@ "registration.component.form.confirmation": "Vahvistus", "registration.component.form.sendConfirmationEmail": "Lähetä vahvistussähköposti", "registration.component.form.register": "Rekisteröidy", - "onboarding.component.form.requiredField": "Tämä kenttä on pakollinen", - "onboarding.component.form.steps": "Vaihe {{currentStep}} / {{stepCount}}", - "onboarding.component.form.action.back": "Takaisin", - "onboarding.component.form.action.next": "Seuraava", - "onboarding.component.form.action.skip": "Ohita tämä vaihe", - "onboarding.component.form.action.register": "Rekisteröi", - "onboarding.component.form.action.confirm": "Vahvista", - "onboarding.component.form.termsAndConditions": "Hyväksyn käyttöehdot <1>ja <3>tietosuojaselosteen", - "onboarding.component.emailCodeFallback": "Etkö saanut sähköpostia? <1>Lähetä uudelleen tai <3>muuta sähköpostia", - "onboarding.page.form.title": " <1>Käynnistetään työtilasi", - "onboarding.page.emailConfirmed.title": "Sähköposti vahvistettu!", - "onboarding.page.emailConfirmed.subtitle": "Voit palata chatsovellukseen, olemme jo käynnistäneet työtilasi.", - "onboarding.page.checkYourEmail.title": "Tarkista sähköpostisi", - "onboarding.page.checkYourEmail.subtitle": "Your request has been sent successfully.<1>Check your email inbox to launch your Enterprise trial.<1>The link will expire in 30 minutes.", - "onboarding.page.confirmationProcess.title": "Vahvistus käynnissä", - "onboarding.page.cloudDescription.title": "Käynnistetään työtilasi ja <1>14 päivän kokeilujakso", - "onboarding.page.cloudDescription.tryGold": "Kokeile parasta Gold-pakettiamme 14 päivän ajan ilmaiseksi", - "onboarding.page.cloudDescription.numberOfIntegrations": "1,000 integraatiota", - "onboarding.page.cloudDescription.availability": "Korkea saatavuus", - "onboarding.page.cloudDescription.auditing": "Viestien tarkastuspaneeli / Tarkastuslokit", - "onboarding.page.cloudDescription.engagement": "Engagement Dashboard", - "onboarding.page.cloudDescription.ldap": "Parannettu LDAP-synkronointi", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel-premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Suojatut push-ilmoitukset", - "onboarding.page.cloudDescription.goldIncludes": "* Kultainen taso sisältää kaikki muiden tasojen ominaisuudet", - "onboarding.page.alreadyHaveAccount": "Onko sinulla jo tili? <1>Hallitse työtilojasi.", - "onboarding.page.invalidLink.title": "Linkkisi ei ole enää voimassa", - "onboarding.page.invalidLink.content": "Näyttää siltä, että olet jo käyttänyt kutsulinkkiä. Se on luotu yhtä sisäänkirjautumista varten. Pyydä uusi kutsu liittyäksesi työtilaasi.", - "onboarding.page.invalidLink.button.text": "Pyydä uusi linkki", - "onboarding.page.requestTrial.title": "Pyydä <1>30 päivän kokeilujakso", - "onboarding.page.requestTrial.subtitle": "Kokeile parasta yritysversion sopimustamme 30 päivää maksutta", - "onboarding.page.magicLinkEmail.title": "Lähetimme sinulle kirjautumislinkin sähköpostitse", - "onboarding.page.magicLinkEmail.subtitle": "Klikkaa juuri lähettämässämme sähköpostiviestissä olevaa linkkiä kirjautuaksesi työtilaasi. <1>Linkki päättyy 30 minuutin kuluttua.", - "onboarding.form.adminInfoForm.title": "Admin Info", - "onboarding.form.adminInfoForm.subtitle": "Tarvitsemme tätä luodaksemme ylläpitäjäprofiilin työtilaasi", - "onboarding.form.adminInfoForm.fields.fullName.label": "Koko nimi", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Etu- ja sukunimi", - "onboarding.form.adminInfoForm.fields.username.label": "Käyttäjänimi", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "Sähköposti", - "onboarding.form.adminInfoForm.fields.email.placeholder": "Sähköposti", - "onboarding.form.adminInfoForm.fields.password.label": "Salasana", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Luo salasana", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Pidä minut ajan tasalla chatsovelluksen päivityksistä", - "onboarding.form.awaitConfirmationForm.title": "Odotamme vahvistusta", - "onboarding.form.organizationInfoForm.title": "Organisaation tiedot", - "onboarding.form.organizationInfoForm.subtitle": "Pyydämme kärsivällisyyttä, nämä tiedot auttavat meitä muokkaamaan työtilasi yksilölliseksi", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Organisaation nimi", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Organisaation nimi", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Organisaation tyyppi", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Valitse", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Organisaation toimiala", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Valitse", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Organisaation koko", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Valitse", - "onboarding.form.organizationInfoForm.fields.country.label": "Maa", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Valitse", - "onboarding.form.registeredServerForm.title": "Rekisteröi palvelimesi", - "onboarding.form.registeredServerForm.included.push": "Mobiili push-ilmoitukset", - "onboarding.form.registeredServerForm.included.externalProviders": "Integrointi ulkoisten palveluntarjoajien kanssa (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Pääsy kauppapaikan sovelluksiin", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Cloud-tilin sähköposti", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Kirjoita sähköpostiosoitteesi", - "onboarding.form.registeredServerForm.keepInformed": "Pidä minut ajan tasalla uutisista ja tapahtumista", - "onboarding.form.registeredServerForm.registerLater": "Rekisteröidy myöhemmin", - "onboarding.form.registeredServerForm.notConnectedToInternet": "Palvelin ei ole yhteydessä internetiin, joten työtila on rekisteröitävä offline-tilassa.", - "onboarding.form.standaloneServerForm.title": "Itsenäisen palvelimen vahvistus", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Jotkin palvelut eivät ole käytettävissä tai vaativat manuaalista asennusta", - "onboarding.form.standaloneServerForm.publishOwnApp": "Jotta voit lähettää push-ilmoituksia, sinun on koottava ja julkaistava oma sovelluksesi Google Play- ja App Store -sovelluksissa", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Tarve integroida manuaalisesti ulkoisiin palveluihin", "Something_Went_Wrong": "Jokin meni pieleen", "Toolbox_room_actions": "Ensisijaiset huoneen Room toimet", "Theme_light": "Vaalea", @@ -5748,4 +5676,4 @@ "App_will_lose_grandfathered_status": "**Tämä {{context}}sovellus menettää aikaisemmin käytetössä olleen sovelluksen tilansa.** \n \nYhteisöversion työtiloissa voi olla käytössä enintään {{limit}} {{context}} sovellusta. aikaisemmin Aikaisemmin käytössä olleet sovellukset lasketaan mukaan rajoitukseen, mutta rajoitusta ei sovelleta niihin.", "Theme_Appearence": "Teeman ulkoasu", "UpgradeToGetMore_engagement-dashboard_Title": "Analytics" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json index fff018a84dae..acb08457e133 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -4276,7 +4276,6 @@ "Transcript_message": "Message à afficher pour demander si la transcription est voulue", "Transcript_of_your_livechat_conversation": "Transcription de votre conversation omnicanale", "Transcript_Request": "Demande de transcription", - "onboarding.form.registeredServerForm.continueStandalone": "Continuer en mode autonome", "transfer-livechat-guest": "Transférer les invités Livechat", "transfer-livechat-guest_description": "Autorisation de transférer des invités Livechat", "Transferred": "Transféré", @@ -4813,77 +4812,6 @@ "registration.component.form.confirmation": "Confirmation", "registration.component.form.sendConfirmationEmail": "Envoyer un e-mail de confirmation", "registration.component.form.register": "S'inscrire", - "onboarding.component.form.requiredField": "Ce champ est requis", - "onboarding.component.form.steps": "Étape {{currentStep}} sur {{stepCount}}", - "onboarding.component.form.action.back": "Retour", - "onboarding.component.form.action.next": "Suivant", - "onboarding.component.form.action.skip": "Passer cette étape", - "onboarding.component.form.action.register": "S'inscrire", - "onboarding.component.form.action.confirm": "Confirmer", - "onboarding.component.form.action.pasteHere": "Coller ici...", - "onboarding.component.form.termsAndConditions": "J'accepte les <1>Conditions d'utilisation et la <3>Politique de confidentialité", - "onboarding.component.emailCodeFallback": "Vous n'avez pas reçu d'e-mail ? <1>Renvoyer ou <3>Modifier l'adresse mail", - "onboarding.page.form.title": "<1>Lancez votre espace de travail", - "onboarding.page.emailConfirmed.title": "E-mail confirmé !", - "onboarding.page.emailConfirmed.subtitle": "Vous pouvez retourner à votre application Rocket.Chat : nous avons déjà lancé votre espace de travail.", - "onboarding.page.checkYourEmail.title": "Vérifiez votre messagerie", - "onboarding.page.checkYourEmail.subtitle": "Votre demande a été envoyée. <1>Vérifiez votre boîte de réception pour commencer votre essai de la version Entreprise.<1>Le lien expirera dans 30 minutes.", - "onboarding.page.confirmationProcess.title": "Confirmation en cours", - "onboarding.page.cloudDescription.title": "Lancez votre espace de travail et <1>l'essai de 14 jours", - "onboarding.page.cloudDescription.tryGold": "Essayez gratuitement notre meilleur forfait Gold pendant 14 jours", - "onboarding.page.cloudDescription.numberOfIntegrations": "1 000 intégrations", - "onboarding.page.cloudDescription.availability": "Haute disponibilité", - "onboarding.page.cloudDescription.auditing": "Panneau d'audit des messages/journaux d'audit", - "onboarding.page.cloudDescription.engagement": "Tableau de bord d'engagement", - "onboarding.page.cloudDescription.ldap": "Synchronisation LDAP améliorée", - "onboarding.page.cloudDescription.omnichannel": "Omnicanal premium", - "onboarding.page.cloudDescription.sla": "SLA : Premium", - "onboarding.page.cloudDescription.push": "Notifications push sécurisées", - "onboarding.page.cloudDescription.goldIncludes": "* Le forfait Golden comprend toutes les fonctionnalités des autres forfaits", - "onboarding.page.alreadyHaveAccount": "Vous avez déjà un compte ? <1>Gérez vos espaces de travail.", - "onboarding.page.invalidLink.title": "Votre lien n'est plus valide", - "onboarding.page.invalidLink.content": "Il semble que vous ayez déjà utilisé le lien d'invitation. Il est généré pour une connexion unique. Demandez-en un nouveau pour rejoindre votre espace de travail.", - "onboarding.page.invalidLink.button.text": "Demander un nouveau lien", - "onboarding.page.requestTrial.title": "Demander un <1>essai de 30 jours", - "onboarding.page.requestTrial.subtitle": "Essayez notre meilleur forfait Enterprise Edition gratuitement pendant 30 jours", - "onboarding.page.magicLinkEmail.title": "Nous vous avons envoyé un lien de connexion par e-mail", - "onboarding.page.magicLinkEmail.subtitle": "Cliquez sur le lien dans l'e-mail que nous venons de vous envoyer pour vous connecter à votre espace de travail. <1>Le lien expirera dans 30 minutes.", - "onboarding.form.adminInfoForm.title": "Infos sur l'administrateur", - "onboarding.form.adminInfoForm.subtitle": "Nous en avons besoin pour créer un profil d'administrateur dans votre espace de travail", - "onboarding.form.adminInfoForm.fields.fullName.label": "Nom complet", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Prénom et nom", - "onboarding.form.adminInfoForm.fields.username.label": "Nom d'utilisateur", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@nomdutilisateur", - "onboarding.form.adminInfoForm.fields.email.label": "E-mail", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-mail", - "onboarding.form.adminInfoForm.fields.password.label": "Mot de passe", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Créer un mot de passe", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "M'informer des mises à jour de Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "En attente de confirmation", - "onboarding.form.organizationInfoForm.title": "Informations sur l'organisation", - "onboarding.form.organizationInfoForm.subtitle": "Aidez-nous ! Grâce à ces informations, nous pourrons personnaliser votre espace de travail", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Nom de l'organisation", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Nom de l'organisation", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Type d'organisation", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Sélectionnez", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Secteur de l'organisation", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Sélectionnez", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Taille de l'organisation", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Sélectionnez", - "onboarding.form.organizationInfoForm.fields.country.label": "Pays", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Sélectionnez", - "onboarding.form.registerOfflineForm.title": "S'inscrire hors ligne", - "onboarding.form.registeredServerForm.title": "Enregistrer votre serveur", - "onboarding.form.registeredServerForm.included.push": "Notifications push mobiles", - "onboarding.form.registeredServerForm.included.externalProviders": "Intégration avec des fournisseurs externes (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Accès aux applications du marketplace", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "E-mail du compte cloud", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Entrez votre adresse e-mail", - "onboarding.form.registeredServerForm.keepInformed": "Me tenir informé des actualités et des événements", - "onboarding.form.standaloneServerForm.title": "Confirmation du serveur autonome", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Certains services ne seront pas disponibles ou nécessiteront une configuration manuelle", - "onboarding.form.standaloneServerForm.publishOwnApp": "Pour envoyer des notifications push, vous devez compiler et publier votre propre application sur Google Play et App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Intégration manuelle des services externes requise", "Awaiting_confirmation": "En attente de confirmation", "RegisterWorkspace_Features_MobileNotifications_Title": "Notifications push mobiles", "RegisterWorkspace_Features_Marketplace_Title": "Marketplace", @@ -4892,4 +4820,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "J'accepte les <1>Conditions d'utilisation et la <3>Politique de confidentialité", "UpgradeToGetMore_engagement-dashboard_Title": "Analyses", "UpgradeToGetMore_auditing_Title": "Audit des messages" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json index 168339ec2714..c45c3559bbe2 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/gl.i18n.json @@ -270,7 +270,6 @@ "Threads": "Fíos", "to_see_more_details_on_how_to_integrate": "para ver máis detalles sobre como integrarse.", "Total_Threads": "Fíos totais", - "onboarding.form.registeredServerForm.continueStandalone": "Continúa como autónomo", "Travel_and_Places": "Viaxes e Lugares", "Type_your_message": "Escribe a túa mensaxe", "Unpin_Message": "Anular fixación da mensaxe", @@ -316,74 +315,5 @@ "Your_question": "A túa pregunta", "Your_server_link": "O teu enlace do servidor", "Your_temporary_password_is_password": "A túa contrasinal temporal é [password].", - "Your_workspace_is_ready": "O teu espazo de traballo está preparado para usarse🎉", - "onboarding.component.form.requiredField": "Este campo é necesario", - "onboarding.component.form.steps": "Paso {{currentStep}} de {{stepCount}}", - "onboarding.component.form.action.back": "De volta", - "onboarding.component.form.action.next": "A continuación", - "onboarding.component.form.action.skip": "Ignore este paso", - "onboarding.component.form.action.register": "Rexistrarse", - "onboarding.component.form.action.confirm": "Confirmar", - "onboarding.component.form.termsAndConditions": "Acepto os <1>Termos e condicións e a <3>Política de privacidade", - "onboarding.component.emailCodeFallback": "Non recibiches o correo electrónico? <1>Reenviar ou <3>Cambiar correo electrónico", - "onboarding.page.form.title": "Imos <1>Iniciar o teu espazo de traballo", - "onboarding.page.emailConfirmed.title": "Correo electrónico confirmado!", - "onboarding.page.emailConfirmed.subtitle": "Podes volver á túa aplicación Rocket.Chat: xa lanzamos o teu espazo de traballo.", - "onboarding.page.checkYourEmail.title": "Comprobe o seu correo electrónico", - "onboarding.page.checkYourEmail.subtitle": "A túa solicitude enviouse correctamente.<1>Comproba a túa caixa de entrada de correo electrónico para iniciar a proba de Enterprise.<1>A ligazón caducará en 30 minutos.", - "onboarding.page.confirmationProcess.title": "Confirmación en proceso", - "onboarding.page.cloudDescription.title": "Imos lanzar o teu espazo de traballo e a <1>proba de 14 días", - "onboarding.page.cloudDescription.tryGold": "Proba o noso mellor plan Gold durante 14 días de balde", - "onboarding.page.cloudDescription.numberOfIntegrations": "1.000 integracións", - "onboarding.page.cloudDescription.availability": "Alta dispoñibilidade", - "onboarding.page.cloudDescription.auditing": "Panel de auditoría de mensaxes / Rexistros de auditoría", - "onboarding.page.cloudDescription.engagement": "Panel de control de compromiso", - "onboarding.page.cloudDescription.ldap": "Sincronización mellorada por LDAP", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Notificacións push seguras", - "onboarding.page.cloudDescription.goldIncludes": "* O plano dourado inclúe todas as funcións doutros planos", - "onboarding.page.alreadyHaveAccount": "Xa ten unha conta? <1>Xestiona os teus espazos de traballo.", - "onboarding.page.invalidLink.title": "A tú link xa non é válido", - "onboarding.page.invalidLink.content": "Parece que xa usaches a link de invitación. Xérase para un único inicio de sesión. Solicita un novo para unirse ao teu espazo de traballo.", - "onboarding.page.invalidLink.button.text": "Solicita un novo link", - "onboarding.page.requestTrial.title": "Solicita unha <1>proba de 30 días", - "onboarding.page.requestTrial.subtitle": "Proba o noso mellor plana de empresas durante 30 días de balde", - "onboarding.page.magicLinkEmail.title": "Enviámosche por correo electrónico un link de inicio de sesión", - "onboarding.page.magicLinkEmail.subtitle": "Fai clic na ligazón do correo electrónico que che acabamos de enviar para iniciar sesión no teu espazo de traballo. <1>A ligazón caducará en 30 minutos.", - "onboarding.form.adminInfoForm.title": "Información administrativa", - "onboarding.form.adminInfoForm.subtitle": "Necesitamos isto para crear un perfil de administrador dentro do teu espazo de traballo", - "onboarding.form.adminInfoForm.fields.fullName.label": "Nome completo", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Nome e apelidos", - "onboarding.form.adminInfoForm.fields.username.label": "Nome de usuario", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@nome-de-usuario", - "onboarding.form.adminInfoForm.fields.email.label": "Email", - "onboarding.form.adminInfoForm.fields.email.placeholder": "Email", - "onboarding.form.adminInfoForm.fields.password.label": "Contrasinal", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Crear contrasinal", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Mantéñame informado sobre as actualizacións de Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "Agardando confirmación", - "onboarding.form.organizationInfoForm.title": "Información da organización", - "onboarding.form.organizationInfoForm.subtitle": "Por favor, ten paciencia connosco. Esta información axudaranos a personalizar o teu espazo de traballo", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Nome da Organización", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Nome da Organización", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Tipo de organización", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Seleccione", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Industria da organización", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Seleccione", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Tamaño da organización", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Seleccione", - "onboarding.form.organizationInfoForm.fields.country.label": "País", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Seleccione", - "onboarding.form.registeredServerForm.title": "Rexistra o teu servidor", - "onboarding.form.registeredServerForm.included.push": "Notificacións push móbiles", - "onboarding.form.registeredServerForm.included.externalProviders": "Integración con provedores externos (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Acceso a aplicacións do mercado", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Correo electrónico da conta na nube", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Introduce o teu correo electrónico", - "onboarding.form.registeredServerForm.keepInformed": "Mantéñame informado sobre novidades e eventos", - "onboarding.form.standaloneServerForm.title": "Confirmación do servidor autónomo", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Algúns dos servizos non estarán dispoñibles ou requirirán unha configuración manual", - "onboarding.form.standaloneServerForm.publishOwnApp": "Para enviar notificacións push, debes compilar e publicar a túa propia aplicación en Google Play e App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Necesita integrarse manualmente con servizos externos" -} \ No newline at end of file + "Your_workspace_is_ready": "O teu espazo de traballo está preparado para usarse🎉" +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json index 0429d2667998..d72382c06ae9 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -4712,7 +4712,6 @@ "Transcript_message": "Az átirattal kapcsolatos kérdezéskor megjelenítendő üzenet", "Transcript_of_your_livechat_conversation": "Az összcsatornás beszélgetésének átirata.", "Transcript_Request": "Átírási kérés", - "onboarding.form.registeredServerForm.continueStandalone": "Folytatás egyedülállóként", "transfer-livechat-guest": "Élő csevegés vendégeinek átadása", "transfer-livechat-guest_description": "Jogosultság az élő csevegés vendégeinek átadásához", "Transferred": "Átadva", @@ -5351,76 +5350,6 @@ "registration.component.form.invalidConfirmPass": "A két jelszó nem eggyezik", "registration.component.form.confirmPassword": "Erősítse meg a jelszavát", "registration.component.form.sendConfirmationEmail": "Megerősítő email elküldése", - "onboarding.component.form.requiredField": "Ez a mező kötelező", - "onboarding.component.form.steps": "{{currentStep}} / {{stepCount}} lépés", - "onboarding.component.form.action.back": "Vissza", - "onboarding.component.form.action.next": "Következő", - "onboarding.component.form.action.skip": "Lépés kihagyása", - "onboarding.component.form.action.register": "Regisztráció", - "onboarding.component.form.action.confirm": "Megerősítés", - "onboarding.component.form.action.pasteHere": "Beillesztés ide...", - "onboarding.component.form.termsAndConditions": "Elfogadom a <1>használati feltételeket és az <3>adatvédelmi irányelveket", - "onboarding.component.emailCodeFallback": "Nem kapott levelet? <1>Újraküldés vagy <3>e-mail-cím megváltoztatása", - "onboarding.page.form.title": "<1>Indítsuk el a munkaterületét", - "onboarding.page.emailConfirmed.title": "E-mail-cím megerősítve!", - "onboarding.page.emailConfirmed.subtitle": "Visszatérhet a Rocket.Chat alkalmazásához – már elindítottuk a munkaterületét.", - "onboarding.page.checkYourEmail.title": "Nézze meg a leveleit", - "onboarding.page.checkYourEmail.subtitle": "A kérése sikeresen el lett küldve.<1>Nézze meg a beérkező levelek mappát a vállalati próbaverzió indításához.<1>A hivatkozás 30 percen belül lejár.", - "onboarding.page.confirmationProcess.title": "Megerősítés folyamatban", - "onboarding.page.cloudDescription.title": "Indítsuk el a munkaterületét és egy <1>14 napos próbaverziót", - "onboarding.page.cloudDescription.tryGold": "Próbálja ki a legjobb arany előfizetéses csomagunkat 14 napig ingyen", - "onboarding.page.cloudDescription.numberOfIntegrations": "1000 integráció", - "onboarding.page.cloudDescription.availability": "Magas rendelkezésre állás", - "onboarding.page.cloudDescription.auditing": "Üzenetauditálási panel / audit naplók", - "onboarding.page.cloudDescription.engagement": "Részvételi vezérlőpult", - "onboarding.page.cloudDescription.ldap": "Javított LDAP-szinkronizáció", - "onboarding.page.cloudDescription.omnichannel": "Prémium összcsatorna", - "onboarding.page.cloudDescription.sla": "SLA: prémium", - "onboarding.page.cloudDescription.push": "Biztonságossá tett leküldéses értesítések", - "onboarding.page.cloudDescription.goldIncludes": "* Az arany előfizetéses csomag a más előfizetéses csomagokban lévő összes funkciót tartalmazza", - "onboarding.page.alreadyHaveAccount": "Már van fiókja? <1>Munkaterületek kezelése.", - "onboarding.page.invalidLink.title": "A hivatkozása többé nem érvényes", - "onboarding.page.invalidLink.content": "Úgy tűnik, hogy már használta a meghívási hivatkozást. Csak egyszeri bejelentkezéshez lett előállítva. Kérjen egy újat, hogy csatlakozhasson a munkaterületéhez.", - "onboarding.page.invalidLink.button.text": "Új hivatkozás kérése", - "onboarding.page.requestTrial.title": "<1>30 napos próbaverzió kérése", - "onboarding.page.requestTrial.subtitle": "Próbálja ki a legjobb vállalati kiadású előfizetéses csomagunkat 30 napig ingyen", - "onboarding.page.magicLinkEmail.title": "Elküldünk Önnek egy bejelentkezési hivatkozást e-mailben", - "onboarding.page.magicLinkEmail.subtitle": "Kattintson a most elküldött levélben lévő hivatkozásra, hogy bejelentkezhessen a munkaterületére. <1>A hivatkozás 30 percen belül lejár.", - "onboarding.form.adminInfoForm.title": "Adminisztrátor-információk", - "onboarding.form.adminInfoForm.subtitle": "Erre azért van szükségünk, hogy létrehozzunk egy adminisztrátori profilt a munkaterületén belül", - "onboarding.form.adminInfoForm.fields.fullName.label": "Teljes név", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Keresztnév és vezetéknév", - "onboarding.form.adminInfoForm.fields.username.label": "Felhasználónév", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "E-mail-cím", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-mail-cím", - "onboarding.form.adminInfoForm.fields.password.label": "Jelszó", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Jelszó létrehozása", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Tájékoztassanak a Rocket.Chat frissítéseiről", - "onboarding.form.awaitConfirmationForm.title": "Megerősítésre vár", - "onboarding.form.organizationInfoForm.title": "Szervezetinformációk", - "onboarding.form.organizationInfoForm.subtitle": "Legyen türelemmel. Ezek az információk segítenek nekünk személyre szabni a munkaterületét.", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Szervezet neve", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Szervezet neve", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Szervezet típusa", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Kiválasztás", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Szervezet iparága", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Kiválasztás", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Szervezet mérete", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Kiválasztás", - "onboarding.form.organizationInfoForm.fields.country.label": "Ország", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Kiválasztás", - "onboarding.form.registeredServerForm.title": "Kiszolgáló regisztrálása", - "onboarding.form.registeredServerForm.included.push": "Mobil leküldéses értesítések", - "onboarding.form.registeredServerForm.included.externalProviders": "Integráció külső szolgáltatókkal (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Hozzáférés a piactér alkalmazásaihoz", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Felhős fiók e-mail-címe", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Adja meg az e-mail-címét", - "onboarding.form.registeredServerForm.keepInformed": "Tájékoztassanak a hírekről és az eseményekről", - "onboarding.form.standaloneServerForm.title": "Egyedülálló kiszolgáló megerősítése", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Néhány szolgáltatás nem lesz elérhető, vagy kézi beállítást igényel", - "onboarding.form.standaloneServerForm.publishOwnApp": "A leküldéses értesítések küldéséhez saját alkalmazást kell összeállítania és közzétennie a Google Play és az App Store áruházakban", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Kézzel kell integrálni a külső szolgáltatásokkal", "Something_Went_Wrong": "Valami elromlott", "Toolbox_room_actions": "Elsődleges szoba műveletei", "Theme_light": "Világos", @@ -5430,4 +5359,4 @@ "RegisterWorkspace_Features_Marketplace_Title": "Piactér", "UpgradeToGetMore_engagement-dashboard_Title": "Analitika", "UpgradeToGetMore_auditing_Title": "Üzenet ellenőrzés" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json index 84f8d1035d3a..5fac2ab6e26c 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -4231,7 +4231,6 @@ "Transcript_message": "トランスクリプトについて質問するときに表示するメッセージ", "Transcript_of_your_livechat_conversation": "オムニチャネル会話のトランスクリプト。", "Transcript_Request": "トランスクリプト要求", - "onboarding.form.registeredServerForm.continueStandalone": "スタンドアロンとして続行", "transfer-livechat-guest": "ライブチャットゲストの転送", "transfer-livechat-guest_description": "ライブチャットゲストを転送する権限", "Transferred": "転送済み", @@ -4763,77 +4762,6 @@ "registration.component.form.confirmation": "確認", "registration.component.form.sendConfirmationEmail": "確認メールを送信", "registration.component.form.register": "登録", - "onboarding.component.form.requiredField": "このフィールドは必須です", - "onboarding.component.form.steps": "ステップ{{currentStep}}/{{stepCount}}", - "onboarding.component.form.action.back": "戻る", - "onboarding.component.form.action.next": "次へ", - "onboarding.component.form.action.skip": "このステップをスキップ", - "onboarding.component.form.action.register": "登録", - "onboarding.component.form.action.confirm": "確認", - "onboarding.component.form.action.pasteHere": "ここに貼り付け...", - "onboarding.component.form.termsAndConditions": "<1>使用と<3>プライバシーポリシーに同意します", - "onboarding.component.emailCodeFallback": "メールを受け取っていませんか?返信または <3>メールを変更してください", - "onboarding.page.form.title": "ワークスペースを<1>起動しましょう", - "onboarding.page.emailConfirmed.title": "メールを確認しました!", - "onboarding.page.emailConfirmed.subtitle": "Rocket.Chatアプリケーションに戻ることができます。すでにワークスペースを起動しています。", - "onboarding.page.checkYourEmail.title": "メールのチェック", - "onboarding.page.checkYourEmail.subtitle": "要求が正常に送信されました。<1>受信トレイをチェックし、Enterprise試用版を起動してください。<1>リンクの有効期間は30分です。", - "onboarding.page.confirmationProcess.title": "確認中", - "onboarding.page.cloudDescription.title": "ワークスペースと<1>14日間の試用版を起動しましょう", - "onboarding.page.cloudDescription.tryGold": "14日間の最上位のGoldプランを無料でお試しください", - "onboarding.page.cloudDescription.numberOfIntegrations": "1,000件を統合", - "onboarding.page.cloudDescription.availability": "高可用性", - "onboarding.page.cloudDescription.auditing": "メッセージ監査パネル/監査ログ", - "onboarding.page.cloudDescription.engagement": "エンゲージメントダッシュボード", - "onboarding.page.cloudDescription.ldap": "LDAP拡張同期", - "onboarding.page.cloudDescription.omnichannel": "オムニチャネルプレミアム", - "onboarding.page.cloudDescription.sla": "SLA:プレミアム", - "onboarding.page.cloudDescription.push": "安全なプッシュ通知", - "onboarding.page.cloudDescription.goldIncludes": "*Goldプランには他のプランのすべての機能が含まれます", - "onboarding.page.alreadyHaveAccount": "アカウントをすでにお持ちの場合は、<1>ワークスペースを管理してください。", - "onboarding.page.invalidLink.title": "リンクが無効になりました", - "onboarding.page.invalidLink.content": "すでに招待リンクを使用しているようです。このリンクはシングルサインイン用に生成されます。ワークスペースに参加するための新しいサインインを要求してください。", - "onboarding.page.invalidLink.button.text": "新しいリンクを要求", - "onboarding.page.requestTrial.title": "<1>30日間の試用版の要求", - "onboarding.page.requestTrial.subtitle": "30日間の最上位のEnterprise Editionプランを無料でお試しください", - "onboarding.page.magicLinkEmail.title": "ログインリンクをメールで送信しました", - "onboarding.page.magicLinkEmail.subtitle": "送信されたメールのリンクをクリックし、ワークスペースにサインインしてください。 <1>リンクの有効期間は30分です。", - "onboarding.form.adminInfoForm.title": "管理者情報", - "onboarding.form.adminInfoForm.subtitle": "これはワークスペース内に管理プロファイルを作成するために必要です", - "onboarding.form.adminInfoForm.fields.fullName.label": "氏名", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "姓名", - "onboarding.form.adminInfoForm.fields.username.label": "ユーザー名", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@ユーザー名", - "onboarding.form.adminInfoForm.fields.email.label": "メール", - "onboarding.form.adminInfoForm.fields.email.placeholder": "メール", - "onboarding.form.adminInfoForm.fields.password.label": "パスワード", - "onboarding.form.adminInfoForm.fields.password.placeholder": "パスワードを作成", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Rocket.Chatの更新に関する投稿を受け取る", - "onboarding.form.awaitConfirmationForm.title": "確認を待っています", - "onboarding.form.organizationInfoForm.title": "組織情報", - "onboarding.form.organizationInfoForm.subtitle": "しばらくお待ちください。この情報はワークスペースのパーソナライズに役立ちます", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "組織名", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "組織名", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "組織の種類", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "選択", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "組織の業種", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "選択", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "組織の規模", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "選択", - "onboarding.form.organizationInfoForm.fields.country.label": "国", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "選択", - "onboarding.form.registerOfflineForm.title": "オフラインで登録", - "onboarding.form.registeredServerForm.title": "サーバーの登録", - "onboarding.form.registeredServerForm.included.push": "モバイルプッシュ通知", - "onboarding.form.registeredServerForm.included.externalProviders": "外部プロバイダー(WhatsApp、Facebook、Telegram、Twitter)との統合", - "onboarding.form.registeredServerForm.included.apps": "マーケットプレイスアプリにアクセス", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "クラウドアカウントメール", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "メールアドレスを入力してください", - "onboarding.form.registeredServerForm.keepInformed": "ニュースとイベントの情報を受け取る", - "onboarding.form.standaloneServerForm.title": "スタンドアロンサーバーの確認", - "onboarding.form.standaloneServerForm.servicesUnavailable": "一部のサービスは利用できないか、手動で設定する必要があります", - "onboarding.form.standaloneServerForm.publishOwnApp": "プッシュ通知を送信するには、独自のアプリをコンパイルしてGoogle PlayとApp Storeに公開する必要があります", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "外部サービスと手動で統合する必要があります", "Awaiting_confirmation": "確認を待っています", "RegisterWorkspace_Features_MobileNotifications_Title": "モバイルプッシュ通知", "RegisterWorkspace_Features_Marketplace_Title": "マーケットプレイス", @@ -4842,4 +4770,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "<1>使用と<3>プライバシーポリシーに同意します", "UpgradeToGetMore_engagement-dashboard_Title": "分析", "UpgradeToGetMore_auditing_Title": "メッセージ監査" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json index 4e0f9794fb97..0a9deaf7bf26 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -4266,7 +4266,6 @@ "Transcript_message": "Bericht dat moet worden weergegeven bij vragen over transcript", "Transcript_of_your_livechat_conversation": "Transcript van uw omnichannel-gesprek.", "Transcript_Request": "Transcriptieverzoek", - "onboarding.form.registeredServerForm.continueStandalone": "Ga verder als standalone", "transfer-livechat-guest": "Transfer Livechat-gasten", "transfer-livechat-guest_description": "Toestemming om livechat-gasten over te dragen", "Transferred": "Overgedragen", @@ -4801,77 +4800,6 @@ "registration.component.form.confirmation": "Bevestiging", "registration.component.form.sendConfirmationEmail": "Stuur een bevestigingsmail", "registration.component.form.register": "Registreren", - "onboarding.component.form.requiredField": "Dit veld is verplicht", - "onboarding.component.form.steps": "Stap {{currentStep}} van {{stepCount}}", - "onboarding.component.form.action.back": "Terug", - "onboarding.component.form.action.next": "Volgende", - "onboarding.component.form.action.skip": "Sla deze stap over", - "onboarding.component.form.action.register": "Registreren", - "onboarding.component.form.action.confirm": "Bevestigen", - "onboarding.component.form.action.pasteHere": "Plak hier...", - "onboarding.component.form.termsAndConditions": "Ik ga akkoord met de <1>Algemene voorwaarden en <3>Privacybeleid", - "onboarding.component.emailCodeFallback": "Geen e-mail ontvangen? <1>Opnieuw verzenden of <3>E-mailadres wijzigen", - "onboarding.page.form.title": "<1>Lanceer uw werkruimte", - "onboarding.page.emailConfirmed.title": "E-mail bevestigd!", - "onboarding.page.emailConfirmed.subtitle": "U kunt terugkeren naar uw Rocket.Chat-toepassing - we hebben uw werkruimte al gelanceerd.", - "onboarding.page.checkYourEmail.title": "Controleer je e-mail", - "onboarding.page.checkYourEmail.subtitle": "Uw verzoek is succesvol verzonden.<1>Controleer uw e-mailinbox om uw Enterprise-proefversie te starten.<1>De link verloopt over 30 minuten.", - "onboarding.page.confirmationProcess.title": "Bevestiging in verwerking", - "onboarding.page.cloudDescription.title": "Laten we uw werkruimte en <1>14-daagse proefversie lanceren", - "onboarding.page.cloudDescription.tryGold": "Probeer gratis gedurende 14 dagen onze beste Gold-abonnement", - "onboarding.page.cloudDescription.numberOfIntegrations": "1.000 integraties", - "onboarding.page.cloudDescription.availability": "Hoge beschikbaarheid", - "onboarding.page.cloudDescription.auditing": "Controlepaneel voor berichten / Auditlogboeken", - "onboarding.page.cloudDescription.engagement": "Betrokkenheidsdashboard", - "onboarding.page.cloudDescription.ldap": "Uitgebreide LDAP synchronisatie", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Beveiligde pushmeldingen", - "onboarding.page.cloudDescription.goldIncludes": "* Gouden abonnement bevat alle functies van andere abonnementen", - "onboarding.page.alreadyHaveAccount": "Heb je al een account? <1>Beheer jouw werkruimten.", - "onboarding.page.invalidLink.title": "Uw link is niet meer geldig", - "onboarding.page.invalidLink.content": "Het lijkt erop dat je de uitnodigingslink al hebt gebruikt. Het wordt voor een eenmalige aanmelding gegenereerd. Vraag een nieuwe aan om lid te worden van jouw werkruimte.", - "onboarding.page.invalidLink.button.text": "Nieuwe link aanvragen", - "onboarding.page.requestTrial.title": "Vraag een <1>30-daagse proefversie aan", - "onboarding.page.requestTrial.subtitle": "Probeer gratis onze beste Enterprise Edition-abonnement gedurende 30 dagen", - "onboarding.page.magicLinkEmail.title": "We hebben je een inloglink gemaild.", - "onboarding.page.magicLinkEmail.subtitle": "Klik op de link in de e-mail die we u zojuist hebben gestuurd om u aan te melden bij uw werkruimte. <1>De link verloopt over 30 minuten.", - "onboarding.form.adminInfoForm.title": "Admin info", - "onboarding.form.adminInfoForm.subtitle": "We hebben dit nodig om een beheerdersprofiel in uw werkruimte te maken", - "onboarding.form.adminInfoForm.fields.fullName.label": "Volledige naam", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Voornaam en naam", - "onboarding.form.adminInfoForm.fields.username.label": "Gebruikersnaam", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@gebruikersnaam", - "onboarding.form.adminInfoForm.fields.email.label": "E-mailadres", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-mailadres", - "onboarding.form.adminInfoForm.fields.password.label": "Wachtwoord", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Wachtwoord aanmaken", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Hou me op de hoogte van Rocket.Chat-updates", - "onboarding.form.awaitConfirmationForm.title": "Wachtend op bevestiging", - "onboarding.form.organizationInfoForm.title": "Organisatie info", - "onboarding.form.organizationInfoForm.subtitle": "Wees geduldig met ons. Met deze informatie kunnen we uw werkruimte personaliseren", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Organisatie naam", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Organisatie naam", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Organisatie type", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Selecteer", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Organisatie industrie", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Selecteer", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Organisatiegrootte", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Selecteer", - "onboarding.form.organizationInfoForm.fields.country.label": "Land", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Selecteer", - "onboarding.form.registerOfflineForm.title": "Offline registreren", - "onboarding.form.registeredServerForm.title": "Registreer uw server", - "onboarding.form.registeredServerForm.included.push": "Mobiele pushmeldingen", - "onboarding.form.registeredServerForm.included.externalProviders": "Integratie met externe providers (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Toegang tot Marketplace-apps", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "E-mailadres van cloudaccount", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Voer uw e-mailadres in", - "onboarding.form.registeredServerForm.keepInformed": "Hou me op de hoogte van nieuws en evenementen", - "onboarding.form.standaloneServerForm.title": "Standalone serverbevestiging", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Sommige diensten zullen niet beschikbaar zijn of vereisen handmatige configuratie", - "onboarding.form.standaloneServerForm.publishOwnApp": "Om pushmeldingen te verzenden, moet u uw eigen app compileren en publiceren in Google Play en App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Moet handmatig worden geïntegreerd met externe services", "Awaiting_confirmation": "Wachtend op bevestiging", "RegisterWorkspace_Features_MobileNotifications_Title": "Mobiele pushmeldingen", "RegisterWorkspace_Features_Marketplace_Title": "Marktplaats", @@ -4880,4 +4808,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "Ik ga akkoord met de <1>Algemene voorwaarden en <3>Privacybeleid", "UpgradeToGetMore_engagement-dashboard_Title": "Analytics", "UpgradeToGetMore_auditing_Title": "Bericht auditing" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json index 9105bdf634fd..53a6c9d5f26b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pl.i18n.json @@ -4643,7 +4643,6 @@ "Transcript_message": "Wiadomość do wyświetlenia przy zapytaniu o transkrypt.", "Transcript_of_your_livechat_conversation": "Transkrypt twojej rozmowy.", "Transcript_Request": "Wniosek o transkrypt", - "onboarding.form.registeredServerForm.continueStandalone": "Kontynuuj jako standalone", "transfer-livechat-guest": "Przenieś gości Livechat", "transfer-livechat-guest_description": "Zezwolenie na przeniesienie gości livechat", "Transferred": "Przekazane", @@ -5262,77 +5261,6 @@ "registration.component.form.confirmation": "Potwierdzenie", "registration.component.form.sendConfirmationEmail": "Wyślij e-mail z potwierdzeniem", "registration.component.form.register": "Rejestracja", - "onboarding.component.form.requiredField": "To pole jest wymagane", - "onboarding.component.form.steps": "Krok {{currentStep}} z {{stepCount}}", - "onboarding.component.form.action.back": "Wstecz", - "onboarding.component.form.action.next": "Następny", - "onboarding.component.form.action.skip": "Pomiń ten krok", - "onboarding.component.form.action.register": "Rejestracja", - "onboarding.component.form.action.confirm": "Potwierdź", - "onboarding.component.form.action.pasteHere": "Wklej tutaj...", - "onboarding.component.form.termsAndConditions": "Zgadzam się z <1>zasadami i warunkami i <3>Polityką prywatności.", - "onboarding.component.emailCodeFallback": "Nie otrzymałeś emaila? <1>Wyślij ponownie lub <3>Zmień e-mail.", - "onboarding.page.form.title": "<1> Uruchom <1> swoją przestrzeń roboczą", - "onboarding.page.emailConfirmed.title": "Email potwierdzony!", - "onboarding.page.emailConfirmed.subtitle": "Możesz wrócić do swojej aplikacji Rocket.Chat - uruchomiliśmy już Twój obszar roboczy.", - "onboarding.page.checkYourEmail.title": "Sprawdź swój email", - "onboarding.page.checkYourEmail.subtitle": "Twoja prośba została wysłana pomyślnie.<1>Sprawdź swoją skrzynkę e-mail, aby uruchomić wersję próbną Enterprise.<1>Link wygaśnie za 30 minut.", - "onboarding.page.confirmationProcess.title": "Potwierdzenie w toku", - "onboarding.page.cloudDescription.title": "Uruchom swój obszar roboczy i <1>14-dniowy okres próbny.", - "onboarding.page.cloudDescription.tryGold": "Wypróbuj nasz najlepszy plan Gold przez 14 dni za darmo", - "onboarding.page.cloudDescription.numberOfIntegrations": "1000 integracji", - "onboarding.page.cloudDescription.availability": "Wysoka dostępność", - "onboarding.page.cloudDescription.auditing": "Panel audytu wiadomości / Logi audytu", - "onboarding.page.cloudDescription.engagement": "Engagement Dashboard", - "onboarding.page.cloudDescription.ldap": "Ulepszona synchronizacja LDAP", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Bezpieczne powiadomienia push", - "onboarding.page.cloudDescription.goldIncludes": "* Złoty plan zawiera wszystkie funkcje z innych planów", - "onboarding.page.alreadyHaveAccount": "Masz już konto? <1>Zarządzaj swoimi obszarami roboczymi.", - "onboarding.page.invalidLink.title": "Twój link jest nieważny", - "onboarding.page.invalidLink.content": "Wygląda na to, że już używałeś linku z zaproszeniem. Jest on generowany dla pojedynczego logowania. Poproś o nowy, aby dołączyć do swojej przestrzeni roboczej.", - "onboarding.page.invalidLink.button.text": "Zażądaj nowego linku", - "onboarding.page.requestTrial.title": "Zamów <1>30-dniową wersję próbną.", - "onboarding.page.requestTrial.subtitle": "Wypróbuj nasz najlepszy plan Enterprise Edition przez 30 dni za darmo", - "onboarding.page.magicLinkEmail.title": "Wysłaliśmy Ci link do logowania", - "onboarding.page.magicLinkEmail.subtitle": "Kliknij link w wiadomości e-mail, którą właśnie do Ciebie wysłaliśmy, aby zalogować się do swojego obszaru roboczego. <1>Link wygaśnie za 30 minut.", - "onboarding.form.adminInfoForm.title": "Admin Info", - "onboarding.form.adminInfoForm.subtitle": "Potrzebujemy tego, aby utworzyć profil administratora w twoim obszarze roboczym", - "onboarding.form.adminInfoForm.fields.fullName.label": "Pełna nazwa", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Imię i nazwisko", - "onboarding.form.adminInfoForm.fields.username.label": "Nazwa użytkownika", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "E-mail", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-mail", - "onboarding.form.adminInfoForm.fields.password.label": "Hasło", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Utwórz hasło", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Informuj mnie o aktualizacjach Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "Oczekuje na potwierdzenie", - "onboarding.form.organizationInfoForm.title": "Informacje o organizacji", - "onboarding.form.organizationInfoForm.subtitle": "Prosimy, bądź z nami. Te informacje pomogą nam spersonalizować Twoje miejsce pracy.", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Nazwa organizacji", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Nazwa organizacji", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Typ organizacji", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Wybór", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Branża organizacji", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Wybór", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Wielkość organizacji", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Wybór", - "onboarding.form.organizationInfoForm.fields.country.label": "Kraj", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Wybór", - "onboarding.form.registerOfflineForm.title": "Zarejestruj się w trybie offline", - "onboarding.form.registeredServerForm.title": "Zarejestruj swój serwer", - "onboarding.form.registeredServerForm.included.push": "Powiadomienia mobilne push", - "onboarding.form.registeredServerForm.included.externalProviders": "Integracja z zewnętrznymi dostawcami (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Dostęp do aplikacji w Marketplace", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "E-mail konta w chmurze", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Proszę wpisać swój adres e-mail", - "onboarding.form.registeredServerForm.keepInformed": "Informuj mnie o nowościach i wydarzeniach", - "onboarding.form.standaloneServerForm.title": "Potwierdzenie serwera standalone", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Niektóre z usług będą niedostępne lub będą wymagały ręcznej konfiguracji", - "onboarding.form.standaloneServerForm.publishOwnApp": "W celu wysyłania powiadomień push należy skompilować i opublikować własną aplikację w Google Play i App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Konieczność ręcznej integracji z usługami zewnętrznymi", "Something_Went_Wrong": "Coś poszło nie tak", "Join_your_team": "Dołącz do swojego zespołu", "Create_an_account": "Utwórz konto", @@ -5351,4 +5279,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "Zgadzam się z <1>zasadami i warunkami i <3>Polityką prywatności.", "UpgradeToGetMore_engagement-dashboard_Title": "Analityka", "UpgradeToGetMore_auditing_Title": "Audyt wiadomości" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index d202720dee71..241db63d3f87 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -4350,7 +4350,6 @@ "Transcript_message": "Mensagem para mostrar ao perguntar sobre a transcrição", "Transcript_of_your_livechat_conversation": "Transcrição da sua conversa do omnichannel.", "Transcript_Request": "Solicitação de transcrição", - "onboarding.form.registeredServerForm.continueStandalone": "Continuar como standalone", "transfer-livechat-guest": "Transferir convidados do livechat", "transfer-livechat-guest_description": "Permissão para transferir convidados do livechat", "Transferred": "Transferido", @@ -4901,77 +4900,6 @@ "registration.component.form.confirmation": "Confirmação", "registration.component.form.sendConfirmationEmail": "Enviar email de confirmação", "registration.component.form.register": "Registrar", - "onboarding.component.form.requiredField": "Este campo é obrigatório", - "onboarding.component.form.steps": "Etapa {{currentStep}} de {{stepCount}}", - "onboarding.component.form.action.back": "Voltar", - "onboarding.component.form.action.next": "Avançar", - "onboarding.component.form.action.skip": "Pular essa etapa", - "onboarding.component.form.action.register": "Registrar", - "onboarding.component.form.action.confirm": "Confirmar", - "onboarding.component.form.action.pasteHere": "Cole aqui...", - "onboarding.component.form.termsAndConditions": "Eu concordo com os <1>Termos e condições e a <3>Política de privacidade", - "onboarding.component.emailCodeFallback": "Não recebeu e-mail? <1>Reenviar ou <3>Alterar e-mail", - "onboarding.page.form.title": "Vamos <1>Iniciar seu espaço de trabalho", - "onboarding.page.emailConfirmed.title": "E-mail confirmado!", - "onboarding.page.emailConfirmed.subtitle": "Você pode retornar para seu aplicativo Rocket.Chat - nós já iniciamos seu espaço de trabalho.", - "onboarding.page.checkYourEmail.title": "Verifique seu e-mail", - "onboarding.page.checkYourEmail.subtitle": "Sua solicitação foi enviada com sucesso. <1>Verifique sua caixa de e-mail para iniciar seu teste Enterprise. <1>O link expirará em 30 minutos.", - "onboarding.page.confirmationProcess.title": "Confirmação em processo", - "onboarding.page.cloudDescription.title": "Vamos iniciar seu espaço de trabalho e o <1>teste de 14 dias", - "onboarding.page.cloudDescription.tryGold": "Experimento nosso melhor plano Gold grátis por 14 dias", - "onboarding.page.cloudDescription.numberOfIntegrations": "1.000 integrações", - "onboarding.page.cloudDescription.availability": "Alta disponibilidade", - "onboarding.page.cloudDescription.auditing": "Painel de auditoria de mensagem/Logs de auditoria", - "onboarding.page.cloudDescription.engagement": "Painel de engajamento", - "onboarding.page.cloudDescription.ldap": "Sincronização melhorada de LDAP", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "SLA: Premium", - "onboarding.page.cloudDescription.push": "Notificações push seguras", - "onboarding.page.cloudDescription.goldIncludes": "* Plano Golden inclui todas as funcionalidades dos outros planos", - "onboarding.page.alreadyHaveAccount": "Já tem uma conta? <1>Gerencie seus espaços de trabalho.", - "onboarding.page.invalidLink.title": "Seu link não é mais válido", - "onboarding.page.invalidLink.content": "Parece que você já usou link de convite. Ele é gerado para um único login. Solicite um novo para entrar no espaço de trabalho.", - "onboarding.page.invalidLink.button.text": "Solicitar novo link", - "onboarding.page.requestTrial.title": "Solicitar <1>Teste de 30 dias", - "onboarding.page.requestTrial.subtitle": "Experimento nosso melhor plano Enterprise Edition grátis por 30 dias", - "onboarding.page.magicLinkEmail.title": "Nós enviamos um link de login por e-mail", - "onboarding.page.magicLinkEmail.subtitle": "Clique no link no e-mail que enviamos para iniciar sessão em seu espaço de trabalho. <1>O link vai expirar em 30 minutos.", - "onboarding.form.adminInfoForm.title": "Informação administrativa", - "onboarding.form.adminInfoForm.subtitle": "Precisamos disso para criar um perfil de administração dentro do seu espaço de trabalho.", - "onboarding.form.adminInfoForm.fields.fullName.label": "Nome completo", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Primeiro e último nome", - "onboarding.form.adminInfoForm.fields.username.label": "Nome de usuário", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "E-mail", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-mail", - "onboarding.form.adminInfoForm.fields.password.label": "Senha", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Criar senha", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Mantenha-me informado sobre as atualizações do Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "Aguardando confirmação", - "onboarding.form.organizationInfoForm.title": "Informações da organização", - "onboarding.form.organizationInfoForm.subtitle": "Tenha paciência conosco. Estas informações nos ajudarão a personalizar seu espaço de trabalho.", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Nome da organização", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Nome da organização", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Tipo de organização", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Selecionar", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Setor da organização", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Selecionar", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Tamanho da organização", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Selecionar", - "onboarding.form.organizationInfoForm.fields.country.label": "País", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Selecionar", - "onboarding.form.registerOfflineForm.title": "Registrar offline", - "onboarding.form.registeredServerForm.title": "Registre seu servidor", - "onboarding.form.registeredServerForm.included.push": "Notificações push móveis", - "onboarding.form.registeredServerForm.included.externalProviders": "Integração com provedores externos (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Acesso a aplicativos de Marketplace", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "E-mail da conta da nuvem", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Insira seu e-mail", - "onboarding.form.registeredServerForm.keepInformed": "Mantenha-me informado sobre notícias e eventos", - "onboarding.form.standaloneServerForm.title": "Confirmação de servidor standalone", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Alguns dos serviços estarão indisponíveis ou precisarão de configuração manual", - "onboarding.form.standaloneServerForm.publishOwnApp": "Para enviar notificações de push, você precisará compilar e publicar seu próprio aplicativo no Google Play e App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "É necessário integrar manualmente com serviços externos", "Conversations_by_agents": "Conversas por agente", "Conversations_by_channel": "Conversar por canal", "Conversations_by_department": "Conversas por departamento", @@ -4985,4 +4913,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "Eu concordo com os <1>Termos e condições e a <3>Política de privacidade", "UpgradeToGetMore_engagement-dashboard_Title": "Analytics", "UpgradeToGetMore_auditing_Title": "Auditoria de mensagem" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json index 997e45ea2eb7..a430149e6a6b 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -4439,7 +4439,6 @@ "Transcript_message": "Показать это сообщение, когда спрашиваем про получение переписке", "Transcript_of_your_livechat_conversation": "Ваши переписки в Livechat.", "Transcript_Request": "Запрос стенограммы", - "onboarding.form.registeredServerForm.continueStandalone": "Продолжить в автономном режиме", "transfer-livechat-guest": "Трансфер гостей Livechat", "transfer-livechat-guest_description": "Разрешение на перевод гостей Livechat", "Transferred": "Переведено", @@ -4999,77 +4998,6 @@ "registration.component.form.confirmation": "Подтверждение", "registration.component.form.sendConfirmationEmail": "Отправить электронное письмо с подтверждением", "registration.component.form.register": "Зарегистрироваться", - "onboarding.component.form.requiredField": "Это обязательное поле", - "onboarding.component.form.steps": "Шаг {{currentStep}} из {{stepCount}}", - "onboarding.component.form.action.back": "Назад", - "onboarding.component.form.action.next": "Далее", - "onboarding.component.form.action.skip": "Пропустить этот шаг", - "onboarding.component.form.action.register": "Зарегистрироваться", - "onboarding.component.form.action.confirm": "Подтвердить", - "onboarding.component.form.action.pasteHere": "Вставить сюда...", - "onboarding.component.form.termsAndConditions": "Я принимаю <1>Положения и условия и <3>Политику конфиденциальности", - "onboarding.component.emailCodeFallback": "Не получили электронное письмо? <1>Отправить повторно или <3>Изменить адрес электронной почты", - "onboarding.page.form.title": "<1>Запустим ваше рабочее пространство", - "onboarding.page.emailConfirmed.title": "Адрес электронной почты подтвержден!", - "onboarding.page.emailConfirmed.subtitle": "Вы можете вернуться в приложение Rocket.Chat — мы уже запустили ваше рабочее пространство.", - "onboarding.page.checkYourEmail.title": "Проверьте адрес электронной почты", - "onboarding.page.checkYourEmail.subtitle": "Запрос успешно отправлен.<1>Проверьте папку \"Входящие\" своего почтового ящика, чтобы запустить пробную версию для организаций.<1>Срок действия ссылки истечет через 30 минут.", - "onboarding.page.confirmationProcess.title": "Выполняется подтверждение", - "onboarding.page.cloudDescription.title": "Запустим ваше рабочее пространство и <1>пробную версию на 14 дней", - "onboarding.page.cloudDescription.tryGold": "Попробуйте наш лучший план Gold в течение 14 дней бесплатно", - "onboarding.page.cloudDescription.numberOfIntegrations": "1000 интеграций", - "onboarding.page.cloudDescription.availability": "Высокая доступность", - "onboarding.page.cloudDescription.auditing": "Панель аудита сообщений/журналы аудита", - "onboarding.page.cloudDescription.engagement": "Панель мониторинга взаимодействия", - "onboarding.page.cloudDescription.ldap": "Расширенная синхронизация LDAP", - "onboarding.page.cloudDescription.omnichannel": "Омниканальный премиум", - "onboarding.page.cloudDescription.sla": "Соглашение об уровне обслуживания: премиум", - "onboarding.page.cloudDescription.push": "Защищенные push-уведомления", - "onboarding.page.cloudDescription.goldIncludes": "* План Golden включает в себя все функции других планов", - "onboarding.page.alreadyHaveAccount": "Уже есть учетная запись? <1>Управляйте своими рабочими пространствами.", - "onboarding.page.invalidLink.title": "Ваша ссылка больше не действительна", - "onboarding.page.invalidLink.content": "Похоже, вы уже использовали ссылку с приглашением. Она создана для единого входа. Запросите новую ссылку, чтобы присоединиться к рабочему пространству.", - "onboarding.page.invalidLink.button.text": "Запросить новую ссылку", - "onboarding.page.requestTrial.title": "Запросить <1>пробную версию на 30 дней", - "onboarding.page.requestTrial.subtitle": "Воспользуйтесь нашим лучшим тарифным планом Enterprise Edition в течение 30 дней бесплатно", - "onboarding.page.magicLinkEmail.title": "Мы отправили вам ссылку для входа в систему в электронном письме", - "onboarding.page.magicLinkEmail.subtitle": "Нажмите на ссылку в электронном письме, чтобы войти в свое рабочее пространство. <1>Срок действия ссылки истечет через 30 минут.", - "onboarding.form.adminInfoForm.title": "Информация об администраторе", - "onboarding.form.adminInfoForm.subtitle": "Это необходимо для создания профиля администратора в вашем рабочем пространстве", - "onboarding.form.adminInfoForm.fields.fullName.label": "Полное имя", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "Имя и фамилия", - "onboarding.form.adminInfoForm.fields.username.label": "Имя пользователя", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@имя пользователя", - "onboarding.form.adminInfoForm.fields.email.label": "Электронная почта", - "onboarding.form.adminInfoForm.fields.email.placeholder": "Электронная почта", - "onboarding.form.adminInfoForm.fields.password.label": "Пароль", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Создать пароль", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Сообщайте мне информацию об обновлениях Rocket.Chat", - "onboarding.form.awaitConfirmationForm.title": "Ожидает подтверждения", - "onboarding.form.organizationInfoForm.title": "Информация об организации", - "onboarding.form.organizationInfoForm.subtitle": "Оставайтесь с нами. Эта информация поможет нам персонализировать ваше рабочее пространство", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Название организации", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Название организации", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Тип организации", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Выбрать", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Отрасль организации", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Выбрать", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Размер организации", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Выбрать", - "onboarding.form.organizationInfoForm.fields.country.label": "Страна", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Выбрать", - "onboarding.form.registerOfflineForm.title": "Зарегистрироваться вручную", - "onboarding.form.registeredServerForm.title": "Зарегистрируйте сервер", - "onboarding.form.registeredServerForm.included.push": "Push-уведомления на мобильных устройствах", - "onboarding.form.registeredServerForm.included.externalProviders": "Интеграция с внешними поставщиками (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Доступ к приложениям магазина", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "Адрес электронной почты учетной записи в облаке", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Введите адрес электронной почты", - "onboarding.form.registeredServerForm.keepInformed": "Сообщайте мне новости и информацию о событиях", - "onboarding.form.standaloneServerForm.title": "Подтверждение автономного сервера", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Некоторые сервисы будут недоступны или потребуется ручная настройка", - "onboarding.form.standaloneServerForm.publishOwnApp": "Чтобы отправлять push-уведомления, необходимо создать и опубликовать собственное приложение в Google Play и App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Необходимо вручную выполнить интеграцию с внешними сервисами", "Theme_light": "Светлая", "Theme_dark": "Темная", "Theme_match_system": "Системная", @@ -5094,4 +5022,4 @@ "Theme_Appearence": "Внешний вид", "UpgradeToGetMore_engagement-dashboard_Title": "Аналитика", "UpgradeToGetMore_auditing_Title": "Аудит сообщений" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json index a015f4a55ae6..b941eb75d49c 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -4898,7 +4898,6 @@ "Transcript_message": "Meddelande att visa när du frågar om utskrift", "Transcript_of_your_livechat_conversation": "Utskrift av din Omnichannel-konversation.", "Transcript_Request": "Förfrågan om utskrift", - "onboarding.form.registeredServerForm.continueStandalone": "Fortsätt med fristående", "transfer-livechat-guest": "Överför Livechat-gäster", "transfer-livechat-guest_description": "Behörighet att överföra Livechat-gäster", "Transferred": "Överförda", @@ -5569,77 +5568,6 @@ "registration.component.form.confirmation": "Bekräftelse", "registration.component.form.sendConfirmationEmail": "Skicka e-postbekräftelse", "registration.component.form.register": "Registrera", - "onboarding.component.form.requiredField": "Fältet är obligatoriskt", - "onboarding.component.form.steps": "Steg {{currentStep}} av {{stepCount}}", - "onboarding.component.form.action.back": "Tillbaka", - "onboarding.component.form.action.next": "Nästa", - "onboarding.component.form.action.skip": "Hoppa över det här steget", - "onboarding.component.form.action.register": "Registrera", - "onboarding.component.form.action.confirm": "Bekräfta", - "onboarding.component.form.termsAndConditions": "Jag godkänner <1>villkoren och <3>integritetspolicyn", - "onboarding.component.emailCodeFallback": "Fick du inget e-postmeddelande? <1>Skicka igen eller <3>ändra e-postadressen", - "onboarding.page.form.title": "Nu <1>startar vi arbetsytan", - "onboarding.page.emailConfirmed.title": "E-postadressen har bekräftats.", - "onboarding.page.emailConfirmed.subtitle": "Du kan gå tillbaka till Rocket.Chat-applikationen. Vi har startat din arbetsyta.", - "onboarding.page.checkYourEmail.title": "Titta i inkorgen", - "onboarding.page.checkYourEmail.subtitle": "Din förfrågan har skickats.<1>Titta i inkorgen och starta din testperiod på Enterprise Edition.<1>Länken upphör att gälla om 30 minuter.", - "onboarding.page.confirmationProcess.title": "Bekräftelse pågår", - "onboarding.page.cloudDescription.title": "Låt oss starta din arbetsyta och din <1>14 dagars provperiod", - "onboarding.page.cloudDescription.tryGold": "Testa vårt bästa abonnemang, Gold, 14 dagar utan kostnad", - "onboarding.page.cloudDescription.numberOfIntegrations": "1 000 integreringar", - "onboarding.page.cloudDescription.availability": "Hög tillgänglighet", - "onboarding.page.cloudDescription.auditing": "Panel för meddelandegranskning/granskningsloggar", - "onboarding.page.cloudDescription.engagement": "Infopanel för engagemang", - "onboarding.page.cloudDescription.ldap": "LDAP-förstärkt synkronisering", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel premium", - "onboarding.page.cloudDescription.sla": "Licensavtal: Premium", - "onboarding.page.cloudDescription.push": "Säkra pushmeddelanden", - "onboarding.page.cloudDescription.goldIncludes": "* I Gold-abonnemanget ingår alla funktioner från andra abonnemang", - "onboarding.page.alreadyHaveAccount": "Har du redan ett konto? <1>Hantera dina arbetsytor.", - "onboarding.page.invalidLink.title": "Länken har upphört att gälla", - "onboarding.page.invalidLink.content": "Du verkar redan ha använt inbjudningslänken. Den genereras för en enskild inloggning. Begär en ny för att ansluta till arbetsytan.", - "onboarding.page.invalidLink.button.text": "Begär en ny länk", - "onboarding.page.requestTrial.title": "Begär en <1>30 dagars provperiod", - "onboarding.page.requestTrial.subtitle": "Prova på vårt bästa Enterprise Edition-abonnemang i 30 dagar utan kostnad", - "onboarding.page.magicLinkEmail.title": "Vi har skickat en inloggningslänk via e-post ", - "onboarding.page.magicLinkEmail.subtitle": "Logga in på arbetsytan genom att klicka på länken i e-postmeddelandet vi precis skickade till dig. <1>Länken upphör att gälla om 30 minuter.", - "onboarding.form.adminInfoForm.title": "Information om administratör", - "onboarding.form.adminInfoForm.subtitle": "Vi behöver skapa en administratörsprofil i din arbetsyta", - "onboarding.form.adminInfoForm.fields.fullName.label": "Fullständigt namn", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "För- och efternamn", - "onboarding.form.adminInfoForm.fields.username.label": "Användarnamn", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@användarnamn", - "onboarding.form.adminInfoForm.fields.email.label": "E-post", - "onboarding.form.adminInfoForm.fields.email.placeholder": "E-post", - "onboarding.form.adminInfoForm.fields.password.label": "Lösenord", - "onboarding.form.adminInfoForm.fields.password.placeholder": "Skapa lösenord", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "Håll mig informerad om Rocket.Chat-uppdateringar", - "onboarding.form.awaitConfirmationForm.title": "Väntar på bekräftelse", - "onboarding.form.organizationInfoForm.title": "Organisationsinfo", - "onboarding.form.organizationInfoForm.subtitle": "Bara lite till. Vi behöver den här informationen för att anpassa din arbetsyta", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "Organisationsnamn", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "Organisationsnamn", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "Typ av organisation", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "Välj", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "Organisationens bransch", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "Välj", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "Organisationens storlek", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "Välj", - "onboarding.form.organizationInfoForm.fields.country.label": "Land", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "Välj", - "onboarding.form.registeredServerForm.title": "Registrera din server", - "onboarding.form.registeredServerForm.included.push": "Mobila push-meddelanden", - "onboarding.form.registeredServerForm.included.externalProviders": "Integrering med externa leverantörer (WhatsApp, Facebook, Telegram, Twitter)", - "onboarding.form.registeredServerForm.included.apps": "Åtkomst till appar i Marketplace", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "E-postadress för molnkonto", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "Ange din e-postadress", - "onboarding.form.registeredServerForm.keepInformed": "Håll mig informerad om nyheter och händelser", - "onboarding.form.registeredServerForm.registerLater": "Registrera dig senare", - "onboarding.form.registeredServerForm.notConnectedToInternet": "Servern är inte ansluten till internet, så du måste göra en offline-registrering för den här arbetsytan.", - "onboarding.form.standaloneServerForm.title": "Bekräftelse av fristående server", - "onboarding.form.standaloneServerForm.servicesUnavailable": "Vissa av tjänsterna kommer att vara otillgängliga eller måste ställas in manuellt", - "onboarding.form.standaloneServerForm.publishOwnApp": "Om du ska kunna skicka pushmeddelanden måste du kompilera och publicera din egen app på Google Play och App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "Behöver integrera manuellt med externa tjänster", "Something_Went_Wrong": "Ett fel inträffade", "Toolbox_room_actions": "Primära åtgärder i rum", "Theme_light": "Ljus", @@ -5752,4 +5680,4 @@ "App_will_lose_grandfathered_status": "**Denna {{context}}-app kommer att förlora sin status som gammal app.** \n \nArbetsytorna i Community Edition kan ha upp till {{limit}} __kontext__-appar aktiverade. Gamla appar inkluderas i gränsen, men gränsen tillämpas inte på dem.", "Theme_Appearence": "Utseende för tema", "UpgradeToGetMore_engagement-dashboard_Title": "Analytics" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json index 29321362031c..7950e0b8b588 100644 --- a/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json +++ b/apps/meteor/packages/rocketchat-i18n/i18n/zh-TW.i18n.json @@ -4043,7 +4043,6 @@ "Transcript_message": "詢問筆錄時要顯示的訊息", "Transcript_of_your_livechat_conversation": "您的聊天記錄的談話內容。", "Transcript_Request": "紀錄要求", - "onboarding.form.registeredServerForm.continueStandalone": "以獨立狀態繼續", "transfer-livechat-guest": "轉送即時聊天訪客", "Translate": "翻譯", "Translated": "翻譯", @@ -4512,77 +4511,6 @@ "registration.component.form.confirmation": "確認", "registration.component.form.sendConfirmationEmail": "已傳送確認電子郵件", "registration.component.form.register": "註冊", - "onboarding.component.form.requiredField": "此為必填欄位", - "onboarding.component.form.steps": "步驟 {{currentStep}}/{{stepCount}}", - "onboarding.component.form.action.back": "返回", - "onboarding.component.form.action.next": "下一步", - "onboarding.component.form.action.skip": "略過此步驟", - "onboarding.component.form.action.register": "註冊", - "onboarding.component.form.action.confirm": "確認", - "onboarding.component.form.action.pasteHere": "貼在這裡...", - "onboarding.component.form.termsAndConditions": "我同意<1>條款及條件和<3>隱私權政策", - "onboarding.component.emailCodeFallback": "沒有收到電子郵件?<1>重新傳送或<3>變更電子郵件", - "onboarding.page.form.title": "<1>啟動您的工作空間吧!", - "onboarding.page.emailConfirmed.title": "電子郵件已確認!", - "onboarding.page.emailConfirmed.subtitle": "您可以返回 Rocket.Chat 應用程式 – 我們已啟動您的工作空間。", - "onboarding.page.checkYourEmail.title": "請查看您的電子郵件", - "onboarding.page.checkYourEmail.subtitle": "您的要求已成功傳送。<1>請查看您的電子郵件收件匣以啟動企業試用版。<1>該連結將在 30 分鐘後到期。", - "onboarding.page.confirmationProcess.title": "確認處理中", - "onboarding.page.cloudDescription.title": "啟動您的工作空間和 <1>14 天試用期吧!", - "onboarding.page.cloudDescription.tryGold": "試用我們最棒的黃金方案,免費試用 14 天", - "onboarding.page.cloudDescription.numberOfIntegrations": "1,000 項整合", - "onboarding.page.cloudDescription.availability": "高可用性", - "onboarding.page.cloudDescription.auditing": "訊息稽核面板/稽核記錄", - "onboarding.page.cloudDescription.engagement": "參與度儀表板", - "onboarding.page.cloudDescription.ldap": "LDAP 強化同步", - "onboarding.page.cloudDescription.omnichannel": "Omnichannel 進階版", - "onboarding.page.cloudDescription.sla": "SLA:進階版", - "onboarding.page.cloudDescription.push": "安全推播通知", - "onboarding.page.cloudDescription.goldIncludes": "* 黃金方案包含其他方案中的所有功能", - "onboarding.page.alreadyHaveAccount": "已經有帳戶了?<1>管理您的工作空間。", - "onboarding.page.invalidLink.title": "您的連結不再有效", - "onboarding.page.invalidLink.content": "您似乎已經使用邀請連結。該連結僅可用於單次的登入。請要求新的連結以加入您的工作空間。", - "onboarding.page.invalidLink.button.text": "要求新連結", - "onboarding.page.requestTrial.title": "要求 <1>30 天試用期", - "onboarding.page.requestTrial.subtitle": "試用我們最棒的企業版方案,30 天免費", - "onboarding.page.magicLinkEmail.title": "我們已透過電子郵件傳送登入連結給您", - "onboarding.page.magicLinkEmail.subtitle": "按一下我們剛傳送給您的電子郵件中的連結,即可登入您的工作空間。<1>該連結將在 30 分鐘後到期。", - "onboarding.form.adminInfoForm.title": "管理員資訊", - "onboarding.form.adminInfoForm.subtitle": "我們需要此資訊以在您的工作空間內建立管理員個人資料", - "onboarding.form.adminInfoForm.fields.fullName.label": "全名", - "onboarding.form.adminInfoForm.fields.fullName.placeholder": "姓名", - "onboarding.form.adminInfoForm.fields.username.label": "使用者名稱", - "onboarding.form.adminInfoForm.fields.username.placeholder": "@username", - "onboarding.form.adminInfoForm.fields.email.label": "電子郵件", - "onboarding.form.adminInfoForm.fields.email.placeholder": "電子郵件", - "onboarding.form.adminInfoForm.fields.password.label": "密碼", - "onboarding.form.adminInfoForm.fields.password.placeholder": "建立密碼", - "onboarding.form.adminInfoForm.fields.keepPosted.label": "在有 Rocket.Chat 相關更新時通知我", - "onboarding.form.awaitConfirmationForm.title": "等待確認", - "onboarding.form.organizationInfoForm.title": "組織資訊", - "onboarding.form.organizationInfoForm.subtitle": "請多包涵。這些資料將可協助我們個人化您的工作空間", - "onboarding.form.organizationInfoForm.fields.organizationName.label": "組織名稱", - "onboarding.form.organizationInfoForm.fields.organizationName.placeholder": "組織名稱", - "onboarding.form.organizationInfoForm.fields.organizationType.label": "組織類型", - "onboarding.form.organizationInfoForm.fields.organizationType.placeholder": "選取", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.label": "組織產業", - "onboarding.form.organizationInfoForm.fields.organizationIndustry.placeholder": "選取", - "onboarding.form.organizationInfoForm.fields.organizationSize.label": "組織規模", - "onboarding.form.organizationInfoForm.fields.organizationSize.placeholder": "選取", - "onboarding.form.organizationInfoForm.fields.country.label": "國家/地區", - "onboarding.form.organizationInfoForm.fields.country.placeholder": "選取", - "onboarding.form.registerOfflineForm.title": "離線註冊", - "onboarding.form.registeredServerForm.title": "註冊您的伺服器", - "onboarding.form.registeredServerForm.included.push": "行動推播通知", - "onboarding.form.registeredServerForm.included.externalProviders": "與外部提供者 (WhatsApp、Facebook、Telegram、Twitter) 整合", - "onboarding.form.registeredServerForm.included.apps": "存取市集應用程式", - "onboarding.form.registeredServerForm.fields.accountEmail.inputLabel": "雲端帳戶電子郵件", - "onboarding.form.registeredServerForm.fields.accountEmail.inputPlaceholder": "請輸入您的電子郵件", - "onboarding.form.registeredServerForm.keepInformed": "在有新聞與活動消息時通知我", - "onboarding.form.standaloneServerForm.title": "獨立伺服器確認", - "onboarding.form.standaloneServerForm.servicesUnavailable": "部分服務將無法使用或是需要手動設定", - "onboarding.form.standaloneServerForm.publishOwnApp": "若要傳送推播通知,您必須對您所擁有的應用程式進行編碼,並將應用程式發佈至 Google Play 和 App Store", - "onboarding.form.standaloneServerForm.manuallyIntegrate": "需要手動與外部服務整合", "Awaiting_confirmation": "等待確認", "RegisterWorkspace_Features_MobileNotifications_Title": "行動推播通知", "RegisterWorkspace_Features_Marketplace_Title": "商店", @@ -4591,4 +4519,4 @@ "cloud.RegisterWorkspace_Setup_Terms_Privacy": "我同意<1>條款及條件和<3>隱私權政策", "UpgradeToGetMore_engagement-dashboard_Title": "分析", "UpgradeToGetMore_auditing_Title": "訊息稽核" -} \ No newline at end of file +} diff --git a/apps/meteor/packages/rocketchat-livechat/assets/demo.html b/apps/meteor/packages/rocketchat-livechat/assets/demo.html index a8269484df63..49dfd42e71fa 100644 --- a/apps/meteor/packages/rocketchat-livechat/assets/demo.html +++ b/apps/meteor/packages/rocketchat-livechat/assets/demo.html @@ -2,18 +2,6 @@ - @@ -35,9 +23,12 @@

without changing page title

page 7
diff --git a/apps/meteor/server/models/raw/Analytics.ts b/apps/meteor/server/models/raw/Analytics.ts index 254ff32965bb..4e95cadebbcd 100644 --- a/apps/meteor/server/models/raw/Analytics.ts +++ b/apps/meteor/server/models/raw/Analytics.ts @@ -14,7 +14,7 @@ export class AnalyticsRaw extends BaseRaw implements IAnalyticsModel } protected modelIndexes(): IndexDescription[] { - return [{ key: { date: 1 } }, { key: { 'room._id': 1, 'date': 1 }, unique: true }]; + return [{ key: { date: 1 } }, { key: { 'room._id': 1, 'date': 1 }, unique: true, partialFilterExpression: { type: 'rooms' } }]; } saveMessageSent({ room, date }: { room: IRoom; date: IAnalytic['date'] }): Promise { diff --git a/apps/meteor/server/models/raw/LivechatInquiry.ts b/apps/meteor/server/models/raw/LivechatInquiry.ts index fd95a0ea8c4f..b9269915731c 100644 --- a/apps/meteor/server/models/raw/LivechatInquiry.ts +++ b/apps/meteor/server/models/raw/LivechatInquiry.ts @@ -172,6 +172,10 @@ export class LivechatInquiryRaw extends BaseRaw implemen } async unlock(inquiryId: string): Promise { + return this.updateOne({ _id: inquiryId }, { $unset: { locked: 1, lockedAt: 1 } }); + } + + async unlockAndQueue(inquiryId: string): Promise { return this.updateOne( { _id: inquiryId }, { $unset: { locked: 1, lockedAt: 1 }, $set: { status: LivechatInquiryStatus.QUEUED, queuedAt: new Date() } }, @@ -283,7 +287,7 @@ export class LivechatInquiryRaw extends BaseRaw implemen }, { $set: { status: LivechatInquiryStatus.TAKEN, takenAt: new Date() }, - $unset: { defaultAgent: 1, estimatedInactivityCloseTimeAt: 1 }, + $unset: { defaultAgent: 1, estimatedInactivityCloseTimeAt: 1, queuedAt: 1 }, }, ); } diff --git a/apps/meteor/server/models/raw/OAuthAccessTokens.ts b/apps/meteor/server/models/raw/OAuthAccessTokens.ts index b8b3daac8772..6143a6379e2f 100644 --- a/apps/meteor/server/models/raw/OAuthAccessTokens.ts +++ b/apps/meteor/server/models/raw/OAuthAccessTokens.ts @@ -18,11 +18,17 @@ export class OAuthAccessTokensRaw extends BaseRaw implements ]; } - findOneByAccessToken(accessToken: string, options?: FindOptions): Promise { + async findOneByAccessToken(accessToken: string, options?: FindOptions): Promise { + if (!accessToken) { + return null; + } return this.findOne({ accessToken }, options); } - findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise { + async findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise { + if (!refreshToken) { + return null; + } return this.findOne({ refreshToken }, options); } } diff --git a/apps/meteor/server/routes/i18n.ts b/apps/meteor/server/routes/i18n.ts index 8aa1c30a3085..1bdba1f09cc8 100644 --- a/apps/meteor/server/routes/i18n.ts +++ b/apps/meteor/server/routes/i18n.ts @@ -7,7 +7,8 @@ import { match } from 'path-to-regexp'; const matchRoute = match<{ lng: string }>('/:lng.json', { decode: decodeURIComponent }); const i18nHandler = async function (req: IncomingMessage, res: ServerResponse) { - const match = matchRoute(req.url ?? '/'); + const url = new URL(req.url ?? '/', `https://${req.headers.host}`); + const match = matchRoute(url.pathname); if (match === false) { res.writeHead(400); diff --git a/apps/meteor/server/services/messages/hooks/BeforeSavePreventMention.ts b/apps/meteor/server/services/messages/hooks/BeforeSavePreventMention.ts new file mode 100644 index 000000000000..b87c0e613d2d --- /dev/null +++ b/apps/meteor/server/services/messages/hooks/BeforeSavePreventMention.ts @@ -0,0 +1,47 @@ +import { Authorization, MeteorError, type IApiService } from '@rocket.chat/core-services'; +import { type IMessage, type IUser } from '@rocket.chat/core-typings'; + +import { i18n } from '../../../lib/i18n'; + +export class BeforeSavePreventMention { + constructor(private api?: IApiService) {} + + async preventMention({ + message, + user, + mention, + permission, + }: { + message: IMessage; + user: Pick; + mention: 'here' | 'all'; + permission: string; + }): Promise { + if (!message.mentions?.some(({ _id }) => _id === mention)) { + return true; + } + + // Check if the user has permissions to use @all in both global and room scopes. + if (await Authorization.hasPermission(message.u._id, permission)) { + return true; + } + + if (await Authorization.hasPermission(message.u._id, permission, message.rid)) { + return true; + } + + const action = i18n.t('Notify_all_in_this_room', { lng: user.language }); + + // Add a notification to the chat, informing the user that this + // action is not allowed. + void this.api?.broadcast('notify.ephemeralMessage', message.u._id, message.rid, { + // TODO: i18n + msg: i18n.t('error-action-not-allowed', { action } as any, user.language), + }); + + // Also throw to stop propagation of 'sendMessage'. + throw new MeteorError('error-action-not-allowed', `Notify ${mention} in this room not allowed`, { + action: 'Notify_all_in_this_room', + }); + } +} diff --git a/apps/meteor/server/services/messages/service.ts b/apps/meteor/server/services/messages/service.ts index f981422727f7..f28a9d71b2f5 100644 --- a/apps/meteor/server/services/messages/service.ts +++ b/apps/meteor/server/services/messages/service.ts @@ -1,6 +1,6 @@ import type { IMessageService } from '@rocket.chat/core-services'; import { ServiceClassInternal } from '@rocket.chat/core-services'; -import type { IMessage, MessageTypesValues, IUser, IRoom } from '@rocket.chat/core-typings'; +import { type IMessage, type MessageTypesValues, type IUser, type IRoom, isEditedMessage } from '@rocket.chat/core-typings'; import { Messages } from '@rocket.chat/models'; import type BadWordsFilter from 'bad-words'; @@ -10,6 +10,7 @@ import { updateMessage } from '../../../app/lib/server/functions/updateMessage'; import { executeSendMessage } from '../../../app/lib/server/methods/sendMessage'; import { executeSetReaction } from '../../../app/reactions/server/setReaction'; import { settings } from '../../../app/settings/server'; +import { BeforeSavePreventMention } from './hooks/BeforeSavePreventMention'; import { configureBadWords } from './hooks/badwords'; export class MessageService extends ServiceClassInternal implements IMessageService { @@ -17,7 +18,11 @@ export class MessageService extends ServiceClassInternal implements IMessageServ private badWordsFilter?: BadWordsFilter; + private preventMention: BeforeSavePreventMention; + async created() { + this.preventMention = new BeforeSavePreventMention(this.api); + await this.configureBadWords(); } @@ -80,11 +85,11 @@ export class MessageService extends ServiceClassInternal implements IMessageServ async beforeSave({ message, room: _room, - user: _user, + user, }: { message: IMessage; room: IRoom; - user: Pick; + user: Pick; }): Promise { // TODO looks like this one was not being used (so I'll left it commented) // await this.joinDiscussionOnMessage({ message, room, user }); @@ -94,9 +99,20 @@ export class MessageService extends ServiceClassInternal implements IMessageServ message = await this.filterBadWords(message); } + if (!this.isEditedOrOld(message)) { + await Promise.all([ + this.preventMention.preventMention({ message, user, mention: 'all', permission: 'mention-all' }), + this.preventMention.preventMention({ message, user, mention: 'here', permission: 'mention-here' }), + ]); + } + return message; } + private isEditedOrOld(message: IMessage): boolean { + return isEditedMessage(message) || !message.ts || Math.abs(Date.now() - message.ts.getTime()) > 60000; + } + private isBadWordsFilterEnabled() { return !!settings.get('Message_AllowBadWordsFilter'); } diff --git a/apps/meteor/server/services/nps/notification.ts b/apps/meteor/server/services/nps/notification.ts index 692b9bc6291f..50cfa52331e7 100644 --- a/apps/meteor/server/services/nps/notification.ts +++ b/apps/meteor/server/services/nps/notification.ts @@ -1,5 +1,6 @@ import type { IBanner } from '@rocket.chat/core-typings'; import { BannerPlatform } from '@rocket.chat/core-typings'; +import { Random } from '@rocket.chat/random'; import moment from 'moment'; import { settings } from '../../../app/settings/server'; @@ -21,7 +22,7 @@ export const getBannerForAdmins = (expireAt: Date): Omit => { }, _updatedAt: new Date(), view: { - viewId: '', + viewId: Random.id(), appId: '', blocks: [ { diff --git a/apps/meteor/server/services/omnichannel/queue.ts b/apps/meteor/server/services/omnichannel/queue.ts index 8bb2e86f2313..9617704b8950 100644 --- a/apps/meteor/server/services/omnichannel/queue.ts +++ b/apps/meteor/server/services/omnichannel/queue.ts @@ -64,6 +64,12 @@ export class OmnichannelQueue implements IOmnichannelQueue { return; } + if (await License.shouldPreventAction('monthlyActiveContacts', 1)) { + queueLogger.debug('MAC limit reached. Queue wont execute'); + this.running = false; + return; + } + const queue = await this.nextQueue(); const queueDelayTimeout = this.delay(); queueLogger.info(`Executing queue ${queue || 'Public'} with timeout of ${queueDelayTimeout}`); @@ -86,8 +92,10 @@ export class OmnichannelQueue implements IOmnichannelQueue { // Note: this removes the "one-shot" behavior of queue, allowing it to take a conversation again in the future // And sorting them by _updatedAt: -1 will make it so that the oldest inquiries are taken first // preventing us from playing with the same inquiry over and over again - await LivechatInquiry.unlock(nextInquiry._id); + return await LivechatInquiry.unlockAndQueue(nextInquiry._id); } + + await LivechatInquiry.unlock(nextInquiry._id); } catch (e) { queueLogger.error({ msg: 'Error processing queue', @@ -105,10 +113,6 @@ export class OmnichannelQueue implements IOmnichannelQueue { return; } - if (await License.shouldPreventAction('monthlyActiveContacts')) { - return; - } - const routingSupportsAutoAssign = RoutingManager.getConfig()?.autoAssignAgent; queueLogger.debug({ msg: 'Routing method supports auto assignment', diff --git a/apps/meteor/server/services/omnichannel/service.ts b/apps/meteor/server/services/omnichannel/service.ts index d89f840a41bb..34599cbc7a33 100644 --- a/apps/meteor/server/services/omnichannel/service.ts +++ b/apps/meteor/server/services/omnichannel/service.ts @@ -44,6 +44,12 @@ export class OmnichannelService extends ServiceClassInternal implements IOmnicha License.onValidateLicense(async (): Promise => { RoutingManager.isMethodSet() && (await this.queueWorker.shouldStart()); }); + + // NOTE: When there's no license or license is invalid, we fallback to CE behavior + // CE behavior means there's no MAC limit, so we start the queue + License.onInvalidateLicense(async (): Promise => { + this.queueWorker.isRunning() && (await this.queueWorker.shouldStart()); + }); } getQueueWorker(): IOmnichannelQueue { diff --git a/apps/meteor/server/services/push/service.ts b/apps/meteor/server/services/push/service.ts index 437db7b391d8..2d2c1c61ea38 100644 --- a/apps/meteor/server/services/push/service.ts +++ b/apps/meteor/server/services/push/service.ts @@ -9,7 +9,8 @@ export class PushService extends ServiceClassInternal implements IPushService { super(); this.onEvent('watch.users', async (data) => { - if (!('diff' in data) || !('services.resume.loginTokens' in data.diff)) { + // for some reason data.diff can be set to undefined + if (!('diff' in data) || !data.diff || !('services.resume.loginTokens' in data.diff)) { return; } if (data.diff['services.resume.loginTokens'] === undefined) { diff --git a/apps/meteor/server/settings/message.ts b/apps/meteor/server/settings/message.ts index 17dd1f7b230d..e83189579085 100644 --- a/apps/meteor/server/settings/message.ts +++ b/apps/meteor/server/settings/message.ts @@ -337,23 +337,23 @@ export const createMessageSettings = () => public: true, }); - await this.section('Katex', async () => { + await this.section('Katex', async function () { const enableQuery = { _id: 'Katex_Enabled', value: true, }; - await settingsRegistry.add('Katex_Enabled', true, { + await this.add('Katex_Enabled', true, { type: 'boolean', public: true, i18nDescription: 'Katex_Enabled_Description', }); - await settingsRegistry.add('Katex_Parenthesis_Syntax', true, { + await this.add('Katex_Parenthesis_Syntax', true, { type: 'boolean', public: true, enableQuery, i18nDescription: 'Katex_Parenthesis_Syntax_Description', }); - await settingsRegistry.add('Katex_Dollar_Syntax', false, { + await this.add('Katex_Dollar_Syntax', false, { type: 'boolean', public: true, enableQuery, @@ -361,14 +361,14 @@ export const createMessageSettings = () => }); }); - await this.section('Google Maps', async () => { - await settingsRegistry.add('MapView_Enabled', false, { + await this.section('Google Maps', async function () { + await this.add('MapView_Enabled', false, { type: 'boolean', public: true, i18nLabel: 'MapView_Enabled', i18nDescription: 'MapView_Enabled_Description', }); - await settingsRegistry.add('MapView_GMapsAPIKey', '', { + await this.add('MapView_GMapsAPIKey', '', { type: 'string', public: true, i18nLabel: 'MapView_GMapsAPIKey', diff --git a/apps/meteor/server/settings/misc.ts b/apps/meteor/server/settings/misc.ts index fa7b6bbde3d0..e04c4d6d3b8e 100644 --- a/apps/meteor/server/settings/misc.ts +++ b/apps/meteor/server/settings/misc.ts @@ -46,10 +46,6 @@ const verifyFingerPrint = async function () { await updateFingerprint(fingerprint, false); }; -settings.watch('Site_Url', () => { - void verifyFingerPrint(); -}); - // Insert server unique id if it doesn't exist export const createMiscSettings = async () => { await settingsRegistry.add('uniqueID', process.env.DEPLOYMENT_ID || uuidv4(), { @@ -61,12 +57,16 @@ export const createMiscSettings = async () => { readonly: true, }); - await settingsRegistry.add('Deployment_FingerPrint_Verified', false, { + await settingsRegistry.add('Deployment_FingerPrint_Verified', true, { type: 'boolean', public: true, readonly: true, }); + settings.watch('Site_Url', () => { + void verifyFingerPrint(); + }); + await settingsRegistry.add('Initial_Channel_Created', false, { type: 'boolean', hidden: true, diff --git a/apps/meteor/server/startup/migrations/index.ts b/apps/meteor/server/startup/migrations/index.ts index 26bc4f992ee2..8247f9a72bb5 100644 --- a/apps/meteor/server/startup/migrations/index.ts +++ b/apps/meteor/server/startup/migrations/index.ts @@ -36,4 +36,5 @@ import './v299'; import './v300'; import './v301'; import './v303'; +import './v304'; import './xrun'; diff --git a/apps/meteor/server/startup/migrations/v304.ts b/apps/meteor/server/startup/migrations/v304.ts new file mode 100644 index 000000000000..e5d6484446f0 --- /dev/null +++ b/apps/meteor/server/startup/migrations/v304.ts @@ -0,0 +1,11 @@ +import { Analytics } from '@rocket.chat/models'; + +import { addMigration } from '../../lib/migrations'; + +addMigration({ + version: 304, + name: 'Drop wrong index from analytics collection', + async up() { + await Analytics.col.dropIndex('room._id_1_date_1'); + }, +}); diff --git a/apps/meteor/tests/e2e/message-actions.spec.ts b/apps/meteor/tests/e2e/message-actions.spec.ts index 7cfa089326b2..ad48c09beeba 100644 --- a/apps/meteor/tests/e2e/message-actions.spec.ts +++ b/apps/meteor/tests/e2e/message-actions.spec.ts @@ -1,8 +1,7 @@ -import type { Page } from '@playwright/test'; - import { Users } from './fixtures/userStates'; import { HomeChannel } from './page-objects'; import { createTargetChannel } from './utils'; +import { setUserPreferences } from './utils/setUserPreferences'; import { expect, test } from './utils/test'; test.use({ storageState: Users.admin.state }); @@ -69,6 +68,7 @@ test.describe.serial('message-actions', () => { await poHomeChannel.content.sendMessage('Message to star'); await poHomeChannel.content.openLastMessageMenu(); await page.locator('[data-qa-id="star-message"]').click(); + await poHomeChannel.dismissToast(); await page.getByRole('button').and(page.getByTitle('Options')).click(); await page.locator('[data-key="starred-messages"]').click(); await expect(poHomeChannel.content.lastUserMessageBody).toHaveText('Message to star'); @@ -87,22 +87,11 @@ test.describe.serial('message-actions', () => { }); test.describe('Preference Hide Contextual Bar by clicking outside of it Enabled', () => { - let adminPage: Page; - test.beforeAll(async ({ browser }) => { - adminPage = await browser.newPage({ storageState: Users.admin.state }); - await adminPage.goto('/account/preferences'); - await adminPage.locator('role=heading[name="Messages"]').click(); - await adminPage.locator('text="Hide Contextual Bar by clicking outside of it"').click(); - }); - test.afterAll(async () => { - await adminPage.close(); + test.beforeAll(async ({ api }) => { + await setUserPreferences(api, { hideFlexTab: true }); }); - test.afterAll(async ({ browser }) => { - adminPage = await browser.newPage({ storageState: Users.admin.state }); - await adminPage.goto('/account/preferences'); - await adminPage.locator('role=heading[name="Messages"]').click(); - await adminPage.locator('text="Hide Contextual Bar by clicking outside of it"').click(); - await adminPage.close(); + test.afterAll(async ({ api }) => { + await setUserPreferences(api, { hideFlexTab: false }); }); test.beforeEach(async ({ page }) => { poHomeChannel = new HomeChannel(page); diff --git a/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-widget.spec.ts b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-widget.spec.ts new file mode 100644 index 000000000000..812a2496c740 --- /dev/null +++ b/apps/meteor/tests/e2e/omnichannel/omnichannel-livechat-widget.spec.ts @@ -0,0 +1,31 @@ +import type { Page } from '@playwright/test'; + +import { test, expect } from '../utils/test'; + +test.describe('Omnichannel - Livechat Widget Embedded', () => { + test.describe('Widget is working on Embedded View', () => { + let page: Page; + let siteName: string; + + test.beforeAll(async ({ browser, api }) => { + page = await browser.newPage(); + await expect((await api.post('/settings/Enable_CSP', { value: false })).status()).toBe(200); + const { value } = await(await api.get('/settings/Site_Name')).json(); + siteName = value; + + + await page.goto('/packages/rocketchat_livechat/assets/demo.html'); + }); + + test.afterAll(async ({ api }) => { + await expect((await api.post('/settings/Enable_CSP', { value: true })).status()).toBe(200); + await page.close(); + }); + + test('Open and Close widget', async () => { + await test.step('Expect widget to be visible while embedded in an iframe', async () => { + await expect(page.frameLocator('#rocketchat-iframe').locator(`role=button[name="${siteName}"]`)).toBeVisible(); + }); + }); + }); +}); diff --git a/apps/meteor/tests/e2e/utils/setUserPreferences.ts b/apps/meteor/tests/e2e/utils/setUserPreferences.ts new file mode 100644 index 000000000000..7be26ce4a894 --- /dev/null +++ b/apps/meteor/tests/e2e/utils/setUserPreferences.ts @@ -0,0 +1,7 @@ +import type { APIResponse } from '@playwright/test'; +import { UsersSetPreferencesParamsPOST } from '@rocket.chat/rest-typings'; + +import type { BaseTest } from './test'; + +export const setUserPreferences = (api: BaseTest['api'], preferences: UsersSetPreferencesParamsPOST['data']): Promise => + api.post(`/v1/users.setPreferences`, { data: preferences }); diff --git a/apps/meteor/tests/unit/server/services/messages/hooks/BeforeSavePreventMention.tests.ts b/apps/meteor/tests/unit/server/services/messages/hooks/BeforeSavePreventMention.tests.ts new file mode 100644 index 000000000000..6dc6d472cae5 --- /dev/null +++ b/apps/meteor/tests/unit/server/services/messages/hooks/BeforeSavePreventMention.tests.ts @@ -0,0 +1,114 @@ +import { expect } from 'chai'; +import proxyquire from 'proxyquire'; + +const Authorization = { + hasPermission: async (_uid: string, _permission: string, _room?: string): Promise => true, +}; + +class MeteorError extends Error {} + +const { BeforeSavePreventMention } = proxyquire + .noCallThru() + .load('../../../../../../server/services/messages/hooks/BeforeSavePreventMention', { + '@rocket.chat/core-services': { + Authorization, + MeteorError, + }, + '../../../lib/i18n': { + i18n: { + t: (s: any) => s, + }, + }, + }); + +describe('Prevent mention on messages', () => { + it('should return void if message has no mentions', async () => { + const preventMention = new BeforeSavePreventMention(); + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-all', + }), + ).to.eventually.be.true; + }); + + it("should return void if message doesnt't have @all mention", () => { + const preventMention = new BeforeSavePreventMention(); + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', mentions: [{ _id: 'here' }], u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-all', + }), + ).to.eventually.be.true; + }); + + it("should return void if message doesnt't have @here mention", () => { + const preventMention = new BeforeSavePreventMention(); + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', mentions: [{ _id: 'all' }], u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-here', + }), + ).to.eventually.be.true; + }); + + it('should return true if user has required permission', () => { + const preventMention = new BeforeSavePreventMention(); + + Authorization.hasPermission = async () => true; + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', mentions: [{ _id: 'all' }], u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-all', + }), + ).to.eventually.be.true; + }); + + it('should return void if user has required permission on room scope', () => { + const preventMention = new BeforeSavePreventMention(); + + Authorization.hasPermission = async (_uid, _permission, room) => { + if (room) { + return true; + } + + return false; + }; + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', mentions: [{ _id: 'all' }], u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-all', + }), + ).to.eventually.be.true; + }); + + it("should throw if user doesn't have required permissions", () => { + Authorization.hasPermission = async (_uid, _permission, _room) => false; + + const preventMention = new BeforeSavePreventMention(); + + return expect( + preventMention.preventMention({ + message: { rid: 'GENERAL', msg: 'hey', mentions: [{ _id: 'all' }], u: { _id: 'random' } }, + user: { _id: 'userId', language: 'en' }, + mention: 'all', + permission: 'mention-all', + }), + ).to.be.rejectedWith(MeteorError); + }); +}); diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index 029dc0e3630e..a19189da6cbf 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/account-service +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -45,6 +95,36 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index f5297d9b7a03..9a8de416d40e 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/account-service", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat Account service", "scripts": { "build": "tsc -p tsconfig.json", @@ -22,7 +22,7 @@ "@rocket.chat/models": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "next", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "bcrypt": "^5.0.1", "ejson": "^2.2.3", "event-loop-stats": "^1.4.1", @@ -30,18 +30,18 @@ "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.4.0", "pino": "^8.15.0", "polka": "^0.5.2", - "uuid": "^9.0.0" + "uuid": "^9.0.1" }, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/bcrypt": "^5.0.0", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/bcrypt": "^5.0.1", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index 2afee9e7f44b..08a17b61063b 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/authorization-service +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -45,6 +95,36 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index f9bff1aa245b..83d0969d07cf 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/authorization-service", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat Authorization service", "scripts": { "build": "tsc -p tsconfig.json", @@ -22,14 +22,14 @@ "@rocket.chat/models": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "next", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "event-loop-stats": "^1.4.1", "eventemitter3": "^4.0.7", "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.4.0", "pino": "^8.15.0", @@ -37,8 +37,8 @@ }, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index 8df2b2d1ab44..f86e59f76b96 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,65 @@ # @rocket.chat/ddp-streamer +## 0.2.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/ui-contexts@3.0.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 +- @rocket.chat/instance-status@0.0.21-rc.7 + +## 0.2.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/ui-contexts@3.0.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 +- @rocket.chat/instance-status@0.0.21-rc.6 + +## 0.2.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/ui-contexts@3.0.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 +- @rocket.chat/instance-status@0.0.21-rc.5 + +## 0.2.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/ui-contexts@3.0.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 +- @rocket.chat/instance-status@0.0.21-rc.4 + +## 0.2.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/ui-contexts@3.0.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 +- @rocket.chat/instance-status@0.0.21-rc.3 + ## 0.2.0-rc.2 ### Patch Changes @@ -52,6 +112,42 @@ - @rocket.chat/models@0.0.21-rc.0 - @rocket.chat/instance-status@0.0.21-rc.0 +## 0.1.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/ui-contexts@2.0.8 +- @rocket.chat/models@0.0.23 +- @rocket.chat/instance-status@0.0.23 + +## 0.1.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/ui-contexts@2.0.7 +- @rocket.chat/models@0.0.22 +- @rocket.chat/instance-status@0.0.22 + +## 0.1.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/ui-contexts@2.0.6 +- @rocket.chat/models@0.0.21 +- @rocket.chat/instance-status@0.0.21 + ## 0.1.14 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index d238b92a5067..4cee0967c56c 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/ddp-streamer", "private": true, - "version": "0.2.0-rc.2", + "version": "0.2.0-rc.7", "description": "Rocket.Chat DDP-Streamer service", "scripts": { "build": "tsc -p tsconfig.json", @@ -34,26 +34,26 @@ "gc-stats": "^1.4.0", "jaeger-client": "^3.19.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.4.0", "pino": "^8.15.0", "polka": "^0.5.2", - "sharp": "^0.30.7", + "sharp": "^0.32.6", "underscore": "^1.13.6", "uuid": "^7.0.3", "ws": "^8.8.1" }, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/ejson": "^2.2.0", - "@types/gc-stats": "^1", - "@types/meteor": "^2.9.2", - "@types/node": "^14.18.51", - "@types/polka": "^0.5.4", + "@types/ejson": "^2.2.1", + "@types/gc-stats": "^1.4.2", + "@types/meteor": "^2.9.5", + "@types/node": "^14.18.63", + "@types/polka": "^0.5.6", "@types/sharp": "^0.30.5", "@types/uuid": "^8.3.4", - "@types/ws": "^8.5.5", + "@types/ws": "^8.5.8", "eslint": "~8.45.0", "pino-pretty": "^7.6.1", "ts-node": "^10.9.1", diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index 350764769eb2..4cf5684defe4 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,60 @@ # @rocket.chat/omnichannel-transcript +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/omnichannel-services@0.1.0-rc.7 +- @rocket.chat/pdf-worker@0.0.21-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/omnichannel-services@0.1.0-rc.6 +- @rocket.chat/pdf-worker@0.0.21-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/omnichannel-services@0.1.0-rc.5 +- @rocket.chat/pdf-worker@0.0.21-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/omnichannel-services@0.1.0-rc.4 +- @rocket.chat/pdf-worker@0.0.21-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/omnichannel-services@0.1.0-rc.3 +- @rocket.chat/pdf-worker@0.0.21-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -48,6 +103,39 @@ - @rocket.chat/pdf-worker@0.0.21-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/omnichannel-services@0.0.23 +- @rocket.chat/pdf-worker@0.0.23 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/omnichannel-services@0.0.22 +- @rocket.chat/pdf-worker@0.0.22 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/omnichannel-services@0.0.21 +- @rocket.chat/pdf-worker@0.0.21 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index 6d1fc19d703d..7369f418a6d0 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/omnichannel-transcript", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", @@ -15,7 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { - "@react-pdf/renderer": "^3.1.12", + "@react-pdf/renderer": "^3.1.14", "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", @@ -25,7 +25,7 @@ "@rocket.chat/omnichannel-services": "workspace:^", "@rocket.chat/pdf-worker": "workspace:^", "@rocket.chat/tools": "workspace:^", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", "event-loop-stats": "^1.4.1", @@ -33,7 +33,7 @@ "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "moment-timezone": "^0.5.43", "mongo-message-queue": "^1.0.0", "mongodb": "^4.17.1", @@ -44,8 +44,8 @@ "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/ui-contexts": "workspace:^", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index 0254b45b3d29..cc34c979175a 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/presence-service +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/presence@0.1.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/presence@0.1.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/presence@0.1.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/presence@0.1.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/presence@0.1.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -45,6 +95,36 @@ - @rocket.chat/core-services@0.3.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/presence@0.0.23 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/presence@0.0.22 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/presence@0.0.21 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index b6f705ee2081..092c29aea948 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/presence-service", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat Presence service", "scripts": { "build": "tsc -p tsconfig.json", @@ -22,14 +22,14 @@ "@rocket.chat/models": "workspace:^", "@rocket.chat/presence": "workspace:^", "@rocket.chat/string-helpers": "next", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "event-loop-stats": "^1.4.1", "eventemitter3": "^4.0.7", "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.4.0", "pino": "^8.15.0", @@ -37,8 +37,8 @@ }, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index e7eae99a78e6..54b40f64181d 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,55 @@ # @rocket.chat/queue-worker +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/omnichannel-services@0.1.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/omnichannel-services@0.1.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/omnichannel-services@0.1.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/omnichannel-services@0.1.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/omnichannel-services@0.1.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -44,6 +94,36 @@ - @rocket.chat/omnichannel-services@0.1.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/omnichannel-services@0.0.23 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/omnichannel-services@0.0.22 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/omnichannel-services@0.0.21 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 548f498c02d9..d86b3d8ac00e 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/queue-worker", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat service", "scripts": { "build": "tsc -p tsconfig.json", @@ -15,7 +15,7 @@ ], "author": "Rocket.Chat", "dependencies": { - "@react-pdf/renderer": "^3.1.12", + "@react-pdf/renderer": "^3.1.14", "@rocket.chat/core-services": "workspace:^", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", @@ -23,7 +23,7 @@ "@rocket.chat/model-typings": "workspace:^", "@rocket.chat/models": "workspace:^", "@rocket.chat/omnichannel-services": "workspace:^", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", "event-loop-stats": "^1.4.1", @@ -31,7 +31,7 @@ "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "moment-timezone": "^0.5.43", "mongo-message-queue": "^1.0.0", "mongodb": "^4.17.1", @@ -41,8 +41,8 @@ }, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/apps/stream-hub-service/CHANGELOG.md b/ee/apps/stream-hub-service/CHANGELOG.md index 2fc856ca4dc7..d27e6701d005 100644 --- a/ee/apps/stream-hub-service/CHANGELOG.md +++ b/ee/apps/stream-hub-service/CHANGELOG.md @@ -1,5 +1,50 @@ # @rocket.chat/stream-hub-service +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -41,6 +86,33 @@ - @rocket.chat/core-services@0.3.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.2.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.2.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.2.14 ### Patch Changes diff --git a/ee/apps/stream-hub-service/package.json b/ee/apps/stream-hub-service/package.json index d2bcd0d78db4..a615bb9bde70 100644 --- a/ee/apps/stream-hub-service/package.json +++ b/ee/apps/stream-hub-service/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/stream-hub-service", "private": true, - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "description": "Rocket.Chat Stream Hub service", "scripts": { "build": "tsc -p tsconfig.json", @@ -22,14 +22,14 @@ "@rocket.chat/model-typings": "workspace:^", "@rocket.chat/models": "workspace:^", "@rocket.chat/string-helpers": "next", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "event-loop-stats": "^1.4.1", "eventemitter3": "^4.0.7", "fibers": "^5.0.3", "gc-stats": "^1.4.0", "mem": "^8.1.1", - "moleculer": "^0.14.29", + "moleculer": "^0.14.31", "mongodb": "^4.17.1", "nats": "^2.4.0", "pino": "^8.15.0", @@ -38,9 +38,9 @@ "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", - "@types/bcrypt": "^5.0.0", - "@types/gc-stats": "^1", - "@types/polka": "^0.5.4", + "@types/bcrypt": "^5.0.1", + "@types/gc-stats": "^1.4.2", + "@types/polka": "^0.5.6", "eslint": "~8.45.0", "ts-node": "^10.9.1", "typescript": "~5.2.2" diff --git a/ee/packages/api-client/CHANGELOG.md b/ee/packages/api-client/CHANGELOG.md index 9a82141d95a5..7f0793b918b8 100644 --- a/ee/packages/api-client/CHANGELOG.md +++ b/ee/packages/api-client/CHANGELOG.md @@ -1,5 +1,40 @@ # @rocket.chat/api-client +## 0.1.15-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 + +## 0.1.15-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 + +## 0.1.15-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 + +## 0.1.15-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 + +## 0.1.15-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 + ## 0.1.15-rc.2 ### Patch Changes @@ -29,6 +64,27 @@ - @rocket.chat/core-typings@6.5.0-rc.0 - @rocket.chat/rest-typings@6.5.0-rc.0 +## 0.1.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 + +## 0.1.16 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 + +## 0.1.15 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 + ## 0.1.14 ### Patch Changes diff --git a/ee/packages/api-client/package.json b/ee/packages/api-client/package.json index 3f14e3d266f5..3cefb84a8088 100644 --- a/ee/packages/api-client/package.json +++ b/ee/packages/api-client/package.json @@ -1,13 +1,13 @@ { "name": "@rocket.chat/api-client", - "version": "0.1.15-rc.2", + "version": "0.1.18-rc.0", "devDependencies": { - "@swc/core": "^1.3.66", - "@swc/jest": "^0.2.26", - "@types/jest": "~29.5.3", - "@types/strict-uri-encode": "^2.0.0", + "@swc/core": "^1.3.95", + "@swc/jest": "^0.2.29", + "@types/jest": "~29.5.7", + "@types/strict-uri-encode": "^2.0.1", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "jest-fetch-mock": "^3.0.3", "ts-jest": "~29.0.5", "typescript": "~5.2.2" diff --git a/ee/packages/ddp-client/CHANGELOG.md b/ee/packages/ddp-client/CHANGELOG.md index b2f752a57c05..b665410d6093 100644 --- a/ee/packages/ddp-client/CHANGELOG.md +++ b/ee/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,40 @@ # @rocket.chat/ddp-client +## 0.2.6-rc.7 + +### Patch Changes + +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/api-client@0.1.15-rc.7 + +## 0.2.6-rc.6 + +### Patch Changes + +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/api-client@0.1.15-rc.6 + +## 0.2.6-rc.5 + +### Patch Changes + +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/api-client@0.1.15-rc.5 + +## 0.2.6-rc.4 + +### Patch Changes + +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/api-client@0.1.15-rc.4 + +## 0.2.6-rc.3 + +### Patch Changes + +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/api-client@0.1.15-rc.3 + ## 0.2.6-rc.2 ### Patch Changes @@ -28,6 +63,27 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/api-client@0.1.15-rc.0 +## 0.2.8 + +### Patch Changes + +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/api-client@0.1.17 + +## 0.2.7 + +### Patch Changes + +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/api-client@0.1.16 + +## 0.2.6 + +### Patch Changes + +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/api-client@0.1.15 + ## 0.2.5 ### Patch Changes diff --git a/ee/packages/ddp-client/package.json b/ee/packages/ddp-client/package.json index f70b9d9e4d11..4804abb369a7 100644 --- a/ee/packages/ddp-client/package.json +++ b/ee/packages/ddp-client/package.json @@ -1,14 +1,14 @@ { "name": "@rocket.chat/ddp-client", - "version": "0.2.6-rc.2", + "version": "0.2.9-rc.0", "devDependencies": { - "@swc/core": "^1.3.66", - "@swc/jest": "^0.2.26", - "@types/jest": "~29.5.3", - "@types/ws": "^8.5.5", + "@swc/core": "^1.3.95", + "@swc/jest": "^0.2.29", + "@types/jest": "~29.5.7", + "@types/ws": "^8.5.8", "eslint": "~8.45.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", "jest-websocket-mock": "^2.4.0", "typescript": "~5.2.2", "ws": "^8.13.0" diff --git a/ee/packages/license/CHANGELOG.md b/ee/packages/license/CHANGELOG.md index 848e0ebd9d9e..a4b1453e8faf 100644 --- a/ee/packages/license/CHANGELOG.md +++ b/ee/packages/license/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/license +## 0.1.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 + +## 0.1.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 + +## 0.1.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 + +## 0.1.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 + +## 0.1.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 + ## 0.1.0-rc.2 ### Patch Changes diff --git a/ee/packages/license/__tests__/MockedLicenseBuilder.ts b/ee/packages/license/__tests__/MockedLicenseBuilder.ts index 4f2b49596be3..d68976b23df0 100644 --- a/ee/packages/license/__tests__/MockedLicenseBuilder.ts +++ b/ee/packages/license/__tests__/MockedLicenseBuilder.ts @@ -10,7 +10,7 @@ export class MockedLicenseBuilder { information: { id?: string; autoRenew: boolean; - visualExpiration: Timestamp; + visualExpiration?: Timestamp; notifyAdminsAt?: Timestamp; notifyUsersAt?: Timestamp; trial: boolean; diff --git a/ee/packages/license/__tests__/emitter.spec.ts b/ee/packages/license/__tests__/emitter.spec.ts index ce949365e8a6..bf5406ef8501 100644 --- a/ee/packages/license/__tests__/emitter.spec.ts +++ b/ee/packages/license/__tests__/emitter.spec.ts @@ -242,7 +242,7 @@ describe('Event License behaviors', () => { await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(false); await expect(fn).toBeCalledTimes(2); - await expect(toggleFn).toBeCalledTimes(1); + await expect(toggleFn).toBeCalledTimes(0); await expect(fn).toBeCalledWith({ reason: 'limit', @@ -277,7 +277,7 @@ describe('Event License behaviors', () => { expect(preventFn).toBeCalledTimes(0); expect(preventToggleFn).toBeCalledTimes(0); expect(allowFn).toBeCalledTimes(1); - expect(allowToggleFn).toBeCalledTimes(1); + expect(allowToggleFn).toBeCalledTimes(0); preventFn.mockClear(); preventToggleFn.mockClear(); diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index c586788a5ea6..814649c87e0f 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -1,16 +1,16 @@ { "name": "@rocket.chat/license", - "version": "0.1.0-rc.2", + "version": "0.1.0-rc.7", "private": true, "devDependencies": { - "@swc/core": "^1.3.66", - "@swc/jest": "^0.2.26", - "@types/bcrypt": "^5.0.0", - "@types/jest": "~29.5.3", - "@types/ws": "^8.5.5", + "@swc/core": "^1.3.95", + "@swc/jest": "^0.2.29", + "@types/bcrypt": "^5.0.1", + "@types/jest": "~29.5.7", + "@types/ws": "^8.5.8", "eslint": "~8.45.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", "jest-websocket-mock": "^2.4.0", "ts-jest": "~29.0.5", "typescript": "^5.2.2" diff --git a/ee/packages/license/src/definition/ILicenseV3.ts b/ee/packages/license/src/definition/ILicenseV3.ts index d3a2d7f572a3..eabc276cd09d 100644 --- a/ee/packages/license/src/definition/ILicenseV3.ts +++ b/ee/packages/license/src/definition/ILicenseV3.ts @@ -8,7 +8,7 @@ export interface ILicenseV3 { information: { id?: string; autoRenew: boolean; - visualExpiration: Timestamp; + visualExpiration?: Timestamp; notifyAdminsAt?: Timestamp; notifyUsersAt?: Timestamp; trial: boolean; diff --git a/ee/packages/license/src/definition/events.ts b/ee/packages/license/src/definition/events.ts index b9d211da9b7a..f19dc13cc82e 100644 --- a/ee/packages/license/src/definition/events.ts +++ b/ee/packages/license/src/definition/events.ts @@ -15,6 +15,7 @@ export type LicenseEvents = ModuleValidation & BehaviorTriggeredToggled & BehaviorTriggered & LimitReached & { + installed: undefined; validate: undefined; invalidate: undefined; module: { module: LicenseModule; valid: boolean }; diff --git a/ee/packages/license/src/events/emitter.ts b/ee/packages/license/src/events/emitter.ts index 51f3282a9742..dde10d68563f 100644 --- a/ee/packages/license/src/events/emitter.ts +++ b/ee/packages/license/src/events/emitter.ts @@ -6,18 +6,26 @@ import { logger } from '../logger'; export function moduleValidated(this: LicenseManager, module: LicenseModule) { try { this.emit('module', { module, valid: true }); + } catch (error) { + logger.error({ msg: `Error running module (valid: true) event: ${module}`, error }); + } + try { this.emit(`valid:${module}`); } catch (error) { - logger.error({ msg: 'Error running module added event', error }); + logger.error({ msg: `Error running module added event: ${module}`, error }); } } export function moduleRemoved(this: LicenseManager, module: LicenseModule) { try { this.emit('module', { module, valid: false }); + } catch (error) { + logger.error({ msg: `Error running module (valid: false) event: ${module}`, error }); + } + try { this.emit(`invalid:${module}`); } catch (error) { - logger.error({ msg: 'Error running module removed event', error }); + logger.error({ msg: `Error running module removed event: ${module}`, error }); } } diff --git a/ee/packages/license/src/index.ts b/ee/packages/license/src/index.ts index e590ce7722b2..6e680e5296de 100644 --- a/ee/packages/license/src/index.ts +++ b/ee/packages/license/src/index.ts @@ -22,6 +22,7 @@ import { getTags } from './tags'; import { getCurrentValueForLicenseLimit, setLicenseLimitCounter } from './validation/getCurrentValueForLicenseLimit'; import { validateFormat } from './validation/validateFormat'; +export { DuplicatedLicenseError } from './errors/DuplicatedLicenseError'; export * from './definition/ILicenseTag'; export * from './definition/ILicenseV2'; export * from './definition/ILicenseV3'; diff --git a/ee/packages/license/src/license.spec.ts b/ee/packages/license/src/license.spec.ts index b6ad946860fc..a1a226bdff5b 100644 --- a/ee/packages/license/src/license.spec.ts +++ b/ee/packages/license/src/license.spec.ts @@ -148,7 +148,48 @@ describe('Validate License Limits', () => { await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(true); await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(true); expect(preventActionCallback).toHaveBeenCalledTimes(4); - expect(fairUsageCallback).toHaveBeenCalledTimes(4); + expect(fairUsageCallback).toHaveBeenCalledTimes(1); + }); + it('should trigger the toggle event if the counter is under the limit', async () => { + const licenseManager = await getReadyLicenseManager(); + + const fairUsageCallback = jest.fn(); + const preventActionCallback = jest.fn(); + + licenseManager.onBehaviorToggled('start_fair_policy', fairUsageCallback); + licenseManager.onBehaviorTriggered('prevent_action', preventActionCallback); + + const license = await new MockedLicenseBuilder().withLimits('activeUsers', [ + { + max: 12, + behavior: 'prevent_action', + }, + { + max: 10, + behavior: 'start_fair_policy', + }, + ]); + + await expect(licenseManager.setLicense(await license.sign())).resolves.toBe(true); + + licenseManager.setLicenseLimitCounter('activeUsers', () => 12); + await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(true); + expect(fairUsageCallback).toHaveBeenCalledTimes(1); + expect(preventActionCallback).toHaveBeenCalledTimes(1); + + preventActionCallback.mockClear(); + fairUsageCallback.mockClear(); + licenseManager.setLicenseLimitCounter('activeUsers', () => 12); + await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(true); + expect(fairUsageCallback).toHaveBeenCalledTimes(0); + expect(preventActionCallback).toHaveBeenCalledTimes(1); + + preventActionCallback.mockClear(); + fairUsageCallback.mockClear(); + licenseManager.setLicenseLimitCounter('activeUsers', () => 5); + await expect(licenseManager.shouldPreventAction('activeUsers')).resolves.toBe(false); + expect(fairUsageCallback).toHaveBeenCalledTimes(1); + expect(preventActionCallback).toHaveBeenCalledTimes(0); }); }); @@ -274,3 +315,104 @@ describe('License.getInfo', () => { }); }); }); + +describe('License.setLicense', () => { + it('should trigger the validate event even if the module callback throws an error', async () => { + const licenseManager = await getReadyLicenseManager(); + + const validateCallback = jest.fn(); + const moduleCallback = jest.fn(() => { + throw new Error('Error'); + }); + + const syncCallback = jest.fn(); + + licenseManager.on('validate', validateCallback); + licenseManager.on('sync', syncCallback); + licenseManager.on('module', moduleCallback); + + const license = await new MockedLicenseBuilder().withGratedModules(['auditing']); + + await expect(licenseManager.setLicense(await license.sign())).resolves.toBe(true); + + expect(validateCallback).toHaveBeenCalledTimes(1); + expect(moduleCallback).toHaveBeenCalledTimes(1); + expect(syncCallback).toHaveBeenCalledTimes(0); + }); + + it('should trigger the sync event only from the sync method', async () => { + const licenseManager = await getReadyLicenseManager(); + + const validateCallback = jest.fn(); + const moduleCallback = jest.fn(); + const syncCallback = jest.fn(); + + licenseManager.on('validate', validateCallback); + licenseManager.on('sync', syncCallback); + licenseManager.on('module', moduleCallback); + + const license = await new MockedLicenseBuilder().withGratedModules(['auditing']).withLimits('activeUsers', [ + { + max: 10, + behavior: 'disable_modules', + modules: ['auditing'], + }, + ]); + + await expect(licenseManager.setLicense(await license.sign(), true)).resolves.toBe(true); + + expect(validateCallback).toHaveBeenCalledTimes(1); + expect(moduleCallback).toHaveBeenCalledTimes(1); + expect(syncCallback).toHaveBeenCalledTimes(0); + + validateCallback.mockClear(); + moduleCallback.mockClear(); + syncCallback.mockClear(); + + licenseManager.setLicenseLimitCounter('activeUsers', () => 11); + await licenseManager.revalidateLicense(); + + expect(validateCallback).toHaveBeenCalledTimes(1); + expect(moduleCallback).toHaveBeenCalledTimes(1); + expect(syncCallback).toHaveBeenCalledTimes(1); + }); + + it('should trigger the sync event even if the module callback throws an error', async () => { + const licenseManager = await getReadyLicenseManager(); + + const validateCallback = jest.fn(); + const moduleCallback = jest.fn(() => { + throw new Error('Error'); + }); + const syncCallback = jest.fn(); + + licenseManager.on('validate', validateCallback); + licenseManager.on('sync', syncCallback); + licenseManager.on('module', moduleCallback); + + const license = await new MockedLicenseBuilder().withGratedModules(['auditing']).withLimits('activeUsers', [ + { + max: 10, + behavior: 'disable_modules', + modules: ['auditing'], + }, + ]); + + await expect(licenseManager.setLicense(await license.sign(), true)).resolves.toBe(true); + + expect(validateCallback).toHaveBeenCalledTimes(1); + expect(moduleCallback).toHaveBeenCalledTimes(1); + expect(syncCallback).toHaveBeenCalledTimes(0); + + validateCallback.mockClear(); + moduleCallback.mockClear(); + syncCallback.mockClear(); + + licenseManager.setLicenseLimitCounter('activeUsers', () => 11); + await licenseManager.revalidateLicense(); + + expect(validateCallback).toHaveBeenCalledTimes(1); + expect(moduleCallback).toHaveBeenCalledTimes(1); + expect(syncCallback).toHaveBeenCalledTimes(1); + }); +}); diff --git a/ee/packages/license/src/license.ts b/ee/packages/license/src/license.ts index 0faa22f4e22d..c8a5c0a514d5 100644 --- a/ee/packages/license/src/license.ts +++ b/ee/packages/license/src/license.ts @@ -3,7 +3,7 @@ import { Emitter } from '@rocket.chat/emitter'; import { type ILicenseTag } from './definition/ILicenseTag'; import type { ILicenseV2 } from './definition/ILicenseV2'; import type { ILicenseV3, LicenseLimitKind } from './definition/ILicenseV3'; -import type { BehaviorWithContext } from './definition/LicenseBehavior'; +import type { BehaviorWithContext, LicenseBehavior } from './definition/LicenseBehavior'; import type { LicenseInfo } from './definition/LicenseInfo'; import type { LicenseModule } from './definition/LicenseModule'; import type { LicenseValidationOptions } from './definition/LicenseValidationOptions'; @@ -52,12 +52,19 @@ export class LicenseManager extends Emitter { private _lockedLicense: string | undefined; - public shouldPreventActionResults = new Map(); + private states = new Map>(); + + public get shouldPreventActionResults() { + const state = this.states.get('prevent_action') ?? new Map(); + + this.states.set('prevent_action', state); + + return state; + } constructor() { super(); - - this.on('validate', () => showLicense.call(this, this._license, this._valid)); + this.on('installed', () => showLicense.call(this, this._license, this._valid)); } public get license(): ILicenseV3 | undefined { @@ -268,6 +275,8 @@ export class LicenseManager extends Emitter { } await this.setLicenseV3(decrypted, encryptedLicense, decrypted, isNewLicense); + this.emit('installed'); + return true; } catch (e) { logger.error('Invalid license'); @@ -380,7 +389,22 @@ export class LicenseManager extends Emitter { return shouldPreventAction; } - if (isBehaviorsInResult(validationResult, ['invalidate_license', 'disable_modules', 'start_fair_policy'])) { + // check if any of the behaviors that should trigger a sync changed + if ( + (['invalidate_license', 'disable_modules', 'start_fair_policy'] as const).some((behavior) => { + const hasChanged = this.consolidateBehaviorState(action, behavior, isBehaviorsInResult(validationResult, [behavior])); + if (hasChanged && behavior === 'start_fair_policy') { + this.triggerBehaviorEventsToggled([ + { + behavior: 'start_fair_policy', + reason: 'limit', + limit: action, + }, + ]); + } + return hasChanged; + }) + ) { await this.revalidateLicense(); } @@ -395,9 +419,7 @@ export class LicenseManager extends Emitter { } as BehaviorWithContext, ]; - if (this.shouldPreventActionResults.get(action) !== shouldPreventAction) { - this.shouldPreventActionResults.set(action, shouldPreventAction); - + if (this.consolidateBehaviorState(action, 'prevent_action', shouldPreventAction)) { this.triggerBehaviorEventsToggled(eventsToEmit); } @@ -406,6 +428,23 @@ export class LicenseManager extends Emitter { return shouldPreventAction; } + private consolidateBehaviorState(action: T, behavior: LicenseBehavior, triggered: boolean): boolean { + // check if the behavior changed + const state = this.states.get(behavior) ?? new Map(); + + const currentState = state.get(action) ?? false; + + if (currentState === triggered) { + return false; + } + + // if it changed, update the state + state.set(action, triggered); + + this.states.set(behavior, state); + return true; + } + public async getInfo({ limits: includeLimits, currentValues: loadCurrentValues, diff --git a/ee/packages/license/src/v2/convertToV3.ts b/ee/packages/license/src/v2/convertToV3.ts index f4232c0bac4f..94e94a868e54 100644 --- a/ee/packages/license/src/v2/convertToV3.ts +++ b/ee/packages/license/src/v2/convertToV3.ts @@ -14,7 +14,7 @@ export const convertToV3 = (v2: ILicenseV2): ILicenseV3 => { version: '3.0', information: { autoRenew: false, - visualExpiration: new Date(Date.parse(v2.meta?.trialEnd || v2.expiry)).toISOString(), + ...((v2.meta?.trialEnd || v2.expiry) && { visualExpiration: new Date(Date.parse(v2.meta?.trialEnd || v2.expiry)).toISOString() }), trial: v2.meta?.trial || false, offline: false, createdAt: new Date().toISOString(), diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index 31954b07fe2f..aea3cb273457 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,60 @@ # @rocket.chat/omnichannel-services +## 0.1.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/pdf-worker@0.0.21-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/model-typings@0.2.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.1.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/pdf-worker@0.0.21-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/model-typings@0.2.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.1.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/pdf-worker@0.0.21-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/model-typings@0.2.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.1.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/pdf-worker@0.0.21-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/model-typings@0.2.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.1.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/pdf-worker@0.0.21-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/model-typings@0.2.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.1.0-rc.2 ### Patch Changes @@ -50,6 +105,39 @@ - @rocket.chat/pdf-worker@0.0.21-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.0.23 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/pdf-worker@0.0.23 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/model-typings@0.1.8 +- @rocket.chat/models@0.0.23 + +## 0.0.22 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/pdf-worker@0.0.22 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/model-typings@0.1.7 +- @rocket.chat/models@0.0.22 + +## 0.0.21 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/pdf-worker@0.0.21 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/model-typings@0.1.6 +- @rocket.chat/models@0.0.21 + ## 0.0.20 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 3e12fba9aeaf..73fa510e6d12 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,12 +1,12 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.1.0-rc.2", + "version": "0.1.0-rc.7", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, @@ -21,7 +21,7 @@ "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "next", "@rocket.chat/tools": "workspace:^", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", "eventemitter3": "^4.0.7", diff --git a/ee/packages/omnichannel-services/src/OmnichannelTranscript.ts b/ee/packages/omnichannel-services/src/OmnichannelTranscript.ts index 0e135d5ed263..7f27e70ac8a5 100644 --- a/ee/packages/omnichannel-services/src/OmnichannelTranscript.ts +++ b/ee/packages/omnichannel-services/src/OmnichannelTranscript.ts @@ -8,7 +8,6 @@ import { QueueWorker as queueService, Translation as translationService, Settings as settingsService, - License as licenseService, } from '@rocket.chat/core-services'; import type { IOmnichannelTranscriptService } from '@rocket.chat/core-services'; import type { IMessage, IUser, IRoom, IUpload, ILivechatVisitor, ILivechatAgent } from '@rocket.chat/core-typings'; @@ -61,27 +60,11 @@ export class OmnichannelTranscript extends ServiceClass implements IOmnichannelT currentJobNumber = 0; - shouldWork = false; - constructor(loggerClass: typeof Logger) { super(); this.worker = new PdfWorker('chat-transcript'); // eslint-disable-next-line new-cap this.log = new loggerClass('OmnichannelTranscript'); - - this.onEvent('license.module', ({ module, valid }) => { - if (module === 'scalability') { - this.shouldWork = valid; - } - }); - } - - async started(): Promise { - try { - this.shouldWork = await licenseService.hasModule('scalability'); - } catch (e: unknown) { - // ignore - } } async getTimezone(user?: { utcOffset?: string | number }): Promise { @@ -109,10 +92,6 @@ export class OmnichannelTranscript extends ServiceClass implements IOmnichannelT } async requestTranscript({ details }: { details: WorkDetails }): Promise { - if (!this.shouldWork) { - this.log.info(`Not requesting transcript for room ${details.rid} because scalability module is not enabled`); - return; - } this.log.info(`Requesting transcript for room ${details.rid} by user ${details.userId}`); const room = await LivechatRooms.findOneById(details.rid); if (!room) { @@ -286,10 +265,6 @@ export class OmnichannelTranscript extends ServiceClass implements IOmnichannelT } async workOnPdf({ details }: { details: WorkDetailsWithSource }): Promise { - if (!this.shouldWork) { - this.log.info(`Processing transcript for room ${details.rid} by user ${details.userId} - Stopped (no scalability license found)`); - return; - } this.log.info(`Processing transcript for room ${details.rid} by user ${details.userId} - Received from queue`); if (this.maxNumberOfConcurrentJobs <= this.currentJobNumber) { this.log.error(`Processing transcript for room ${details.rid} by user ${details.userId} - Too many concurrent jobs, queuing again`); diff --git a/ee/packages/omnichannel-services/src/QueueWorker.ts b/ee/packages/omnichannel-services/src/QueueWorker.ts index bfb69362fac6..b217586d3a83 100644 --- a/ee/packages/omnichannel-services/src/QueueWorker.ts +++ b/ee/packages/omnichannel-services/src/QueueWorker.ts @@ -1,4 +1,4 @@ -import { ServiceClass, api, License } from '@rocket.chat/core-services'; +import { ServiceClass, api } from '@rocket.chat/core-services'; import type { IQueueWorkerService, HealthAggResult } from '@rocket.chat/core-services'; import type { Logger } from '@rocket.chat/logger'; import type { Actions, ValidResult, Work } from 'mongo-message-queue'; @@ -17,28 +17,12 @@ export class QueueWorker extends ServiceClass implements IQueueWorkerService { private logger: Logger; - private shouldWork = true; - constructor(private readonly db: Db, loggerClass: typeof Logger) { super(); // eslint-disable-next-line new-cap this.logger = new loggerClass('QueueWorker'); this.queue = new MessageQueue(); - - this.onEvent('license.module', ({ module, valid }) => { - if (module === 'scalability') { - this.shouldWork = valid; - } - }); - } - - async started(): Promise { - try { - this.shouldWork = await License.hasModule('scalability'); - } catch (e: unknown) { - // ignore - } } isServiceNotFoundMessage(message: string): boolean { @@ -132,11 +116,6 @@ export class QueueWorker extends ServiceClass implements IQueueWorkerService { // `to` is a service name that will be called, including namespace + action // This is a "generic" job that allows you to call any service async queueWork>(queue: Actions, to: string, data: T): Promise { - if (!this.shouldWork) { - this.logger.info('Queue worker is disabled, not queueing work'); - return; - } - this.logger.info(`Queueing work for ${to}`); if (!this.matchServiceCall(to)) { // We don't want to queue calls to invalid service names diff --git a/ee/packages/pdf-worker/CHANGELOG.md b/ee/packages/pdf-worker/CHANGELOG.md index 5329595830be..c27e364ea564 100644 --- a/ee/packages/pdf-worker/CHANGELOG.md +++ b/ee/packages/pdf-worker/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/pdf-worker +## 0.0.21-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 + +## 0.0.21-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 + +## 0.0.21-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 + +## 0.0.21-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 + +## 0.0.21-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 + ## 0.0.21-rc.2 ### Patch Changes @@ -25,6 +55,24 @@ - Updated dependencies [dea1fe9191] - @rocket.chat/core-typings@6.5.0-rc.0 +## 0.0.23 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 + +## 0.0.22 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 + +## 0.0.21 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 + ## 0.0.20 ### Patch Changes diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index a0c44d32c825..9b0e3579f80e 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -1,19 +1,19 @@ { "name": "@rocket.chat/pdf-worker", - "version": "0.0.21-rc.2", + "version": "0.0.24-rc.0", "private": true, "devDependencies": { "@storybook/addon-essentials": "~6.5.16", "@storybook/react": "~6.5.16", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "~13.4.0", - "@types/emojione": "^2.2.6", - "@types/jest": "~29.5.3", - "@types/react-dom": "~17.0.20", - "@types/testing-library__jest-dom": "~5.14.6", + "@types/emojione": "^2.2.8", + "@types/jest": "~29.5.7", + "@types/react-dom": "~17.0.22", + "@types/testing-library__jest-dom": "~5.14.9", "eslint": "~8.45.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", "react-dom": "^18.2.0", "ts-jest": "~29.0.5", "typescript": "~5.2.2" @@ -32,10 +32,10 @@ "/dist" ], "dependencies": { - "@react-pdf/renderer": "^3.1.12", + "@react-pdf/renderer": "^3.1.14", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/fuselage-tokens": "^0.32.0", - "@types/react": "~17.0.62", + "@types/react": "~17.0.69", "emoji-assets": "^7.0.1", "emoji-toolkit": "^7.0.1", "moment": "^2.29.4", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index 06a6a910a533..ba4eb4b27108 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/presence +## 0.1.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/core-services@0.3.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.1.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/core-services@0.3.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.1.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/core-services@0.3.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.1.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/core-services@0.3.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.1.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/core-services@0.3.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.1.0-rc.2 ### Patch Changes @@ -38,6 +78,30 @@ - @rocket.chat/core-services@0.3.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.0.23 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/core-services@0.2.8 +- @rocket.chat/models@0.0.23 + +## 0.0.22 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/core-services@0.2.7 +- @rocket.chat/models@0.0.22 + +## 0.0.21 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/core-services@0.2.6 +- @rocket.chat/models@0.0.21 + ## 0.0.20 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index bc3e4785438a..7bcfc6e1db03 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,18 +1,18 @@ { "name": "@rocket.chat/presence", - "version": "0.1.0-rc.2", + "version": "0.1.0-rc.7", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", - "@babel/preset-typescript": "~7.22.5", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", + "@babel/preset-typescript": "~7.22.15", "@rocket.chat/apps-engine": "1.41.0-alpha.290", "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", - "@types/node": "^14.18.51", + "@types/node": "^14.18.63", "babel-jest": "^29.0.3", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "typescript": "~5.2.2" }, "scripts": { diff --git a/ee/packages/ui-theming/package.json b/ee/packages/ui-theming/package.json index fa914c188b11..3870408f7a50 100644 --- a/ee/packages/ui-theming/package.json +++ b/ee/packages/ui-theming/package.json @@ -18,14 +18,14 @@ "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "~0.0.13", - "@types/jest": "~29.5.3", - "@types/react": "~17.0.62", + "@types/jest": "~29.5.7", + "@types/react": "~17.0.69", "eslint": "~8.45.0", "eslint-plugin-anti-trojan-source": "~1.1.1", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-testing-library": "^5.11.0", - "jest": "~29.6.1", + "eslint-plugin-testing-library": "^5.11.1", + "jest": "~29.6.4", "react": "~17.0.2", "react-docgen-typescript-plugin": "~1.0.5", "ts-jest": "~29.0.5", diff --git a/ee/packages/ui-theming/src/PaletteStyleTag.tsx b/ee/packages/ui-theming/src/PaletteStyleTag.tsx index ce911ce4a122..62e31ef3d947 100644 --- a/ee/packages/ui-theming/src/PaletteStyleTag.tsx +++ b/ee/packages/ui-theming/src/PaletteStyleTag.tsx @@ -1,4 +1,4 @@ -import { memo } from 'react'; +import React, { memo } from 'react'; import { createPortal } from 'react-dom'; import { codeBlock } from './codeBlockStyles'; @@ -23,5 +23,5 @@ export const PaletteStyleTag = memo(function PaletteStyleTag() { }; const palette = convertToCss(getPalette(), '.rcx-content--main, .rcx-tile'); - return createPortal(theme === 'dark' ? palette + codeBlock : palette, useCreateStyleContainer('main-palette')); + return <>{createPortal(theme === 'dark' ? palette + codeBlock : palette, useCreateStyleContainer('main-palette'))}; }); diff --git a/ee/packages/ui-theming/src/SidebarPaletteStyleTag.tsx b/ee/packages/ui-theming/src/SidebarPaletteStyleTag.tsx index fd8cdba5022d..593f8ab2cdf7 100644 --- a/ee/packages/ui-theming/src/SidebarPaletteStyleTag.tsx +++ b/ee/packages/ui-theming/src/SidebarPaletteStyleTag.tsx @@ -1,5 +1,5 @@ import type { ReactElement } from 'react'; -import { memo } from 'react'; +import React, { memo } from 'react'; import { createPortal } from 'react-dom'; import { convertToCss } from './helpers/convertToCss'; @@ -18,5 +18,5 @@ export const SidebarPaletteStyleTag = memo(function SidebarPaletteStyleTag(): Re const palette = convertToCss({ ...darkPalette, ...defaultSidebarPalette }, '.rcx-sidebar--main'); - return createPortal(palette, useCreateStyleContainer('sidebar-palette')); + return <>{createPortal(palette, useCreateStyleContainer('sidebar-palette'))}; }); diff --git a/package.json b/package.json index 500e518ead1b..0391a0303edc 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,9 @@ "fuselage": "./fuselage.sh" }, "devDependencies": { - "@changesets/cli": "^2.26.1", - "@types/chart.js": "^2.9.37", - "@types/js-yaml": "^4.0.5", + "@changesets/cli": "^2.26.2", + "@types/chart.js": "^2.9.39", + "@types/js-yaml": "^4.0.8", "husky": "^7.0.4", "turbo": "~1.10.16" }, diff --git a/packages/account-utils/package.json b/packages/account-utils/package.json index 23423d568acc..30fe066a978a 100644 --- a/packages/account-utils/package.json +++ b/packages/account-utils/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/agenda/package.json b/packages/agenda/package.json index f533e05dba28..695859a888b4 100644 --- a/packages/agenda/package.json +++ b/packages/agenda/package.json @@ -12,10 +12,10 @@ "mongodb": "^4.17.1" }, "devDependencies": { - "@types/debug": "^4.1.8", - "@types/jest": "~29.5.3", + "@types/debug": "^4.1.10", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/base64/package.json b/packages/base64/package.json index 36e4d0da04af..eb4882767f33 100644 --- a/packages/base64/package.json +++ b/packages/base64/package.json @@ -13,13 +13,13 @@ "test": "jest" }, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", "@rocket.chat/eslint-config": "workspace:^", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/cas-validate/package.json b/packages/cas-validate/package.json index ea7e05a1ba16..4f60755332c3 100644 --- a/packages/cas-validate/package.json +++ b/packages/cas-validate/package.json @@ -4,9 +4,9 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index b1d49fd2232d..37a2fec2ff4e 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/core-services +## 0.3.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.3.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.3.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.3.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.3.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.3.0-rc.2 ### Patch Changes @@ -40,6 +80,30 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.2.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/models@0.0.23 + +## 0.2.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/models@0.0.22 + +## 0.2.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/models@0.0.21 + ## 0.2.5 ### Patch Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 6a80bfc813b6..22883244d4e3 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,18 +1,18 @@ { "name": "@rocket.chat/core-services", - "version": "0.3.0-rc.2", + "version": "0.3.0-rc.7", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", - "@babel/preset-typescript": "~7.22.5", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", + "@babel/preset-typescript": "~7.22.15", "@rocket.chat/eslint-config": "workspace:^", - "@types/babel__core": "^7", - "@types/babel__preset-env": "^7", - "@types/jest": "~29.5.3", + "@types/babel__core": "^7.20.3", + "@types/babel__preset-env": "^7.9.4", + "@types/jest": "~29.5.7", "babel-jest": "^29.5.0", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "mongodb": "^4.17.1", "prettier": "~2.8.8", "typescript": "~5.2.2" @@ -41,7 +41,7 @@ "@rocket.chat/models": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/ui-kit": "^0.32.1", - "@types/fibers": "^3.1.1", + "@types/fibers": "^3.1.3", "fibers": "^5.0.3" } } diff --git a/packages/core-services/src/index.ts b/packages/core-services/src/index.ts index d3cc778e5a22..e2615e13d57d 100644 --- a/packages/core-services/src/index.ts +++ b/packages/core-services/src/index.ts @@ -1,6 +1,7 @@ import { proxify, proxifyWithWait } from './lib/proxify'; import type { IAccount, ILoginResult } from './types/IAccount'; import type { IAnalyticsService } from './types/IAnalyticsService'; +import { IApiService } from './types/IApiService'; import type { IAppsEngineService } from './types/IAppsEngineService'; import type { IAuthorization, RoomAccessValidator } from './types/IAuthorization'; import type { IAuthorizationLivechat } from './types/IAuthorizationLivechat'; @@ -63,6 +64,7 @@ export { FindVoipRoomsParams, IAccount, IAnalyticsService, + IApiService, IAppsEngineService, IAuthorization, IAuthorizationLivechat, diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 8367f3898064..fdbaa2258da4 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/core-typings +## 6.5.0-rc.7 + +## 6.5.0-rc.6 + +## 6.5.0-rc.5 + +## 6.5.0-rc.4 + +## 6.5.0-rc.3 + ## 6.5.0-rc.2 ## 6.5.0-rc.1 @@ -32,6 +42,12 @@ feat: Limit endpoints on MAC limit reached - dea1fe9191: feat: Disable and annonimize visitors instead of removing +## 6.4.8 + +## 6.4.7 + +## 6.4.6 + ## 6.4.5 ## 6.4.4 diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 30e414720728..df345293e9ee 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,40 @@ # @rocket.chat/cron +## 0.0.17-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/models@0.0.21-rc.7 + +## 0.0.17-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/models@0.0.21-rc.6 + +## 0.0.17-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/models@0.0.21-rc.5 + +## 0.0.17-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/models@0.0.21-rc.4 + +## 0.0.17-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/models@0.0.21-rc.3 + ## 0.0.17-rc.2 ### Patch Changes @@ -28,6 +63,27 @@ - @rocket.chat/core-typings@6.5.0-rc.0 - @rocket.chat/models@0.0.21-rc.0 +## 0.0.19 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/models@0.0.23 + +## 0.0.18 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/models@0.0.22 + +## 0.0.17 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/models@0.0.21 + ## 0.0.16 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 0c752fa4c024..70a436aff65f 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,11 +1,11 @@ { "name": "@rocket.chat/cron", - "version": "0.0.17-rc.2", + "version": "0.0.20-rc.0", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 9b0adef2d80e..b33ec1369392 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -4,8 +4,8 @@ "description": "Rocket.Chat's JS/TS ESLint config", "dependencies": { "@babel/core": "^7.20.7", - "@babel/eslint-parser": "~7.22.9", - "@types/eslint": "~8.44.0", + "@babel/eslint-parser": "~7.22.15", + "@types/eslint": "~8.44.6", "@types/prettier": "^2.6.3", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", @@ -13,7 +13,7 @@ "eslint-config-prettier": "~8.8.0", "eslint-plugin-anti-trojan-source": "~1.1.1", "eslint-plugin-import": "~2.26.0", - "eslint-plugin-jest": "~27.2.2", + "eslint-plugin-jest": "~27.2.3", "eslint-plugin-prettier": "~4.2.1", "prettier": "~2.8.8" }, diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index e64dba78d9ff..ea42640d97a1 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,45 @@ # Change Log +## 3.0.0-rc.7 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.7 +- @rocket.chat/ui-contexts@3.0.0-rc.7 +- @rocket.chat/ui-video-conf@3.0.0-rc.7 + +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.6 +- @rocket.chat/ui-contexts@3.0.0-rc.6 +- @rocket.chat/ui-video-conf@3.0.0-rc.6 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.5 +- @rocket.chat/ui-contexts@3.0.0-rc.5 +- @rocket.chat/ui-video-conf@3.0.0-rc.5 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.4 +- @rocket.chat/ui-contexts@3.0.0-rc.4 +- @rocket.chat/ui-video-conf@3.0.0-rc.4 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.3 +- @rocket.chat/ui-contexts@3.0.0-rc.3 +- @rocket.chat/ui-video-conf@3.0.0-rc.3 + ## 3.0.0-rc.2 ### Patch Changes @@ -26,6 +66,30 @@ - @rocket.chat/gazzodown@3.0.0-rc.0 - @rocket.chat/ui-video-conf@3.0.0-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.8 +- @rocket.chat/ui-contexts@2.0.8 +- @rocket.chat/ui-video-conf@2.0.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.7 +- @rocket.chat/ui-contexts@2.0.7 +- @rocket.chat/ui-video-conf@2.0.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.6 +- @rocket.chat/ui-contexts@2.0.6 +- @rocket.chat/ui-video-conf@2.0.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index 34348989649e..090477afdf9f 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/fuselage-ui-kit", "private": true, - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.7", "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", "author": { @@ -47,18 +47,18 @@ "@rocket.chat/icons": "*", "@rocket.chat/prettier-config": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "3.0.0-rc.2", + "@rocket.chat/ui-contexts": "3.0.0-rc.7", "@rocket.chat/ui-kit": "*", - "@rocket.chat/ui-video-conf": "3.0.0-rc.2", + "@rocket.chat/ui-video-conf": "3.0.0-rc.7", "@tanstack/react-query": "*", "react": "*", "react-dom": "*" }, "devDependencies": { - "@babel/core": "~7.22.10", - "@babel/preset-env": "~7.22.10", - "@babel/preset-react": "~7.22.5", - "@babel/preset-typescript": "~7.22.5", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", + "@babel/preset-react": "~7.22.15", + "@babel/preset-typescript": "~7.22.15", "@rocket.chat/apps-engine": "1.41.0-alpha.290", "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/fuselage": "^0.37.1", @@ -78,10 +78,10 @@ "@storybook/source-loader": "~6.5.16", "@storybook/theming": "~6.5.16", "@tanstack/react-query": "^4.16.1", - "@types/babel__core": "^7", - "@types/babel__preset-env": "^7", - "@types/react": "~17.0.62", - "@types/react-dom": "~17.0.20", + "@types/babel__core": "^7.20.3", + "@types/babel__preset-env": "^7.9.4", + "@types/react": "~17.0.69", + "@types/react-dom": "~17.0.22", "babel-loader": "~8.2.5", "cross-env": "^7.0.3", "eslint": "~8.45.0", @@ -90,6 +90,7 @@ "prettier": "~2.8.8", "react-docgen-typescript-plugin": "~1.0.5", "react-dom": "^17.0.2", + "react-i18next": "~13.2.2", "rimraf": "^3.0.2", "storybook-dark-mode": "~3.0.1", "tslib": "^2.5.3", diff --git a/packages/fuselage-ui-kit/src/contexts/AppIdContext.tsx b/packages/fuselage-ui-kit/src/contexts/AppIdContext.tsx new file mode 100644 index 000000000000..717c5fa9a58a --- /dev/null +++ b/packages/fuselage-ui-kit/src/contexts/AppIdContext.tsx @@ -0,0 +1,30 @@ +import type { ReactNode } from 'react'; +import { createContext, useContext, useDebugValue } from 'react'; + +import { UiKitContext } from './UiKitContext'; + +const AppIdContext = createContext(undefined); + +type AppIdProviderProps = { + children: ReactNode; + appId?: string; +}; + +export const AppIdProvider = ({ children, appId }: AppIdProviderProps) => { + if (!appId) { + return <>{children}; + } + + return ( + {children} + ); +}; + +export const useAppId = () => { + const outerAppId = useContext(UiKitContext).appId ?? 'core'; + const appId = useContext(AppIdContext) ?? outerAppId; + + useDebugValue(appId); + + return appId; +}; diff --git a/packages/fuselage-ui-kit/src/elements/DatePickerElement.tsx b/packages/fuselage-ui-kit/src/elements/DatePickerElement.tsx index a0357c303e1f..c2744ce47571 100644 --- a/packages/fuselage-ui-kit/src/elements/DatePickerElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/DatePickerElement.tsx @@ -2,19 +2,19 @@ import { InputBox } from '@rocket.chat/fuselage'; import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type DatePickerElementProps = BlockProps; const DatePickerElement = ({ block, context, - surfaceRenderer, }: DatePickerElementProps): ReactElement => { const [{ loading, value, error }, action] = useUiKitState(block, context); const { actionId, placeholder } = block; + const fromTextObjectToString = useStringFromTextObject(); return ( ); diff --git a/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx b/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx index 25e552772604..6085c2831128 100644 --- a/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx @@ -1,32 +1,17 @@ import { Markup } from '@rocket.chat/gazzodown'; import { parse } from '@rocket.chat/message-parser'; -import { useTranslation } from '@rocket.chat/ui-contexts'; import type { TextObject } from '@rocket.chat/ui-kit'; -import { useContext } from 'react'; -import { UiKitContext } from '../contexts/UiKitContext'; +import { useAppTranslation } from '../hooks/useAppTranslation'; const MarkdownTextElement = ({ textObject }: { textObject: TextObject }) => { - const t = useTranslation() as ( - key: string, - args: { [key: string]: string | number } - ) => string; + const { t } = useAppTranslation(); - const { appId } = useContext(UiKitContext); + const text = textObject.i18n + ? t(textObject.i18n.key, { ...textObject.i18n.args }) + : textObject.text; - const { i18n } = textObject; - - if (i18n) { - return ( - - ); - } - - return ; + return ; }; export default MarkdownTextElement; diff --git a/packages/fuselage-ui-kit/src/elements/MultiStaticSelectElement.tsx b/packages/fuselage-ui-kit/src/elements/MultiStaticSelectElement.tsx index 3649fd2cd172..a1948a921f49 100644 --- a/packages/fuselage-ui-kit/src/elements/MultiStaticSelectElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/MultiStaticSelectElement.tsx @@ -4,26 +4,26 @@ import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import { memo, useCallback, useMemo } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type MultiStaticSelectElementProps = BlockProps; const MultiStaticSelectElement = ({ block, context, - surfaceRenderer, }: MultiStaticSelectElementProps): ReactElement => { const [{ loading, value, error }, action] = useUiKitState(block, context); + const fromTextObjectToString = useStringFromTextObject(); const options = useMemo( () => - block.options.map(({ value, text }, i) => [ + block.options.map(({ value, text }) => [ value, - fromTextObjectToString(surfaceRenderer, text, i) ?? '', + fromTextObjectToString(text) ?? '', ]), - [block.options, surfaceRenderer] + [block.options, fromTextObjectToString] ); const handleChange = useCallback( @@ -39,11 +39,7 @@ const MultiStaticSelectElement = ({ disabled={loading} error={error} options={options} - placeholder={fromTextObjectToString( - surfaceRenderer, - block.placeholder, - 0 - )} + placeholder={fromTextObjectToString(block.placeholder)} onChange={handleChange} /> ); diff --git a/packages/fuselage-ui-kit/src/elements/OverflowElement.tsx b/packages/fuselage-ui-kit/src/elements/OverflowElement.tsx index c239271f1c70..1af8fe18394c 100644 --- a/packages/fuselage-ui-kit/src/elements/OverflowElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/OverflowElement.tsx @@ -9,18 +9,18 @@ import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import { useRef, useCallback, useMemo } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type OverflowElementProps = BlockProps; const OverflowElement = ({ block, context, - surfaceRenderer, }: OverflowElementProps): ReactElement => { const [{ loading }, action] = useUiKitState(block, context); + const fromTextObjectToString = useStringFromTextObject(); const fireChange = useCallback( ([value]: [UiKit.ActionOf, string]) => @@ -30,15 +30,15 @@ const OverflowElement = ({ const options = useMemo( () => - block.options.map(({ value, text, url }: UiKit.Option, i) => [ + block.options.map(({ value, text, url }) => [ value, - fromTextObjectToString(surfaceRenderer, text, i) ?? '', + fromTextObjectToString(text) ?? '', undefined, undefined, undefined, url, ]), - [block.options, surfaceRenderer] + [block.options, fromTextObjectToString] ); const [cursor, handleKeyDown, handleKeyUp, reset, [visible, hide, show]] = diff --git a/packages/fuselage-ui-kit/src/elements/PlainTextElement.tsx b/packages/fuselage-ui-kit/src/elements/PlainTextElement.tsx index 7b5510645ffe..df3aabb356ff 100644 --- a/packages/fuselage-ui-kit/src/elements/PlainTextElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/PlainTextElement.tsx @@ -1,23 +1,15 @@ -import { useTranslation } from '@rocket.chat/ui-contexts'; import type { TextObject } from '@rocket.chat/ui-kit'; -import { useContext } from 'react'; -import { UiKitContext } from '../contexts/UiKitContext'; +import { useAppTranslation } from '../hooks/useAppTranslation'; const PlainTextElement = ({ textObject }: { textObject: TextObject }) => { - const t = useTranslation() as ( - key: string, - args: { [key: string]: string | number } - ) => string; + const { t } = useAppTranslation(); - const { appId } = useContext(UiKitContext); - const { i18n } = textObject; + const text = textObject.i18n + ? t(textObject.i18n.key, { ...textObject.i18n.args }) + : textObject.text; - if (i18n) { - return <>{t(`apps-${appId}-${i18n.key}`, { ...i18n.args })}; - } - - return <>{textObject.text}; + return <>{text}; }; export default PlainTextElement; diff --git a/packages/fuselage-ui-kit/src/elements/PlainTextInputElement.tsx b/packages/fuselage-ui-kit/src/elements/PlainTextInputElement.tsx index 698d4ded25f8..013c0985b832 100644 --- a/packages/fuselage-ui-kit/src/elements/PlainTextInputElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/PlainTextInputElement.tsx @@ -3,18 +3,18 @@ import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import { memo } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type PlainTextInputElementProps = BlockProps; const PlainTextInputElement = ({ block, context, - surfaceRenderer, }: PlainTextInputElementProps): ReactElement => { const [{ loading, value, error }, action] = useUiKitState(block, context); + const fromTextObjectToString = useStringFromTextObject(); if (block.multiline) { return ( @@ -26,11 +26,7 @@ const PlainTextInputElement = ({ error={error} value={value} onChange={action} - placeholder={ - block.placeholder - ? fromTextObjectToString(surfaceRenderer, block.placeholder, 0) - : undefined - } + placeholder={fromTextObjectToString(block.placeholder)} /> ); } @@ -43,11 +39,7 @@ const PlainTextInputElement = ({ error={error} value={value} onChange={action} - placeholder={ - block.placeholder - ? fromTextObjectToString(surfaceRenderer, block.placeholder, 0) - : undefined - } + placeholder={fromTextObjectToString(block.placeholder)} /> ); }; diff --git a/packages/fuselage-ui-kit/src/elements/StaticSelectElement.tsx b/packages/fuselage-ui-kit/src/elements/StaticSelectElement.tsx index 781e25ad831c..c68a7f067a8d 100644 --- a/packages/fuselage-ui-kit/src/elements/StaticSelectElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/StaticSelectElement.tsx @@ -3,26 +3,26 @@ import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import { memo, useCallback, useMemo } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type StaticSelectElementProps = BlockProps; const StaticSelectElement = ({ block, context, - surfaceRenderer, }: StaticSelectElementProps): ReactElement => { const [{ loading, value, error }, action] = useUiKitState(block, context); + const fromTextObjectToString = useStringFromTextObject(); const options = useMemo<[string, string][]>( () => - block.options.map((option, i) => [ + block.options.map((option) => [ option.value, - fromTextObjectToString(surfaceRenderer, option.text, i) ?? '', + fromTextObjectToString(option.text) ?? '', ]), - [block.options, surfaceRenderer] + [block.options, fromTextObjectToString] ); const handleChange = useCallback( @@ -38,11 +38,7 @@ const StaticSelectElement = ({ disabled={loading} error={error} options={options} - placeholder={fromTextObjectToString( - surfaceRenderer, - block.placeholder, - 0 - )} + placeholder={fromTextObjectToString(block.placeholder)} onChange={handleChange} /> ); diff --git a/packages/fuselage-ui-kit/src/elements/TimePickerElement.tsx b/packages/fuselage-ui-kit/src/elements/TimePickerElement.tsx index 9814b412e6e3..b0bda777cd3e 100644 --- a/packages/fuselage-ui-kit/src/elements/TimePickerElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/TimePickerElement.tsx @@ -2,19 +2,19 @@ import { InputBox } from '@rocket.chat/fuselage'; import type * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; +import { useStringFromTextObject } from '../hooks/useStringFromTextObject'; import { useUiKitState } from '../hooks/useUiKitState'; import type { BlockProps } from '../utils/BlockProps'; -import { fromTextObjectToString } from '../utils/fromTextObjectToString'; type TimePickerElementProps = BlockProps; const TimePickerElement = ({ block, context, - surfaceRenderer, }: TimePickerElementProps): ReactElement => { const [{ loading, value, error }, action] = useUiKitState(block, context); const { actionId, placeholder } = block; + const fromTextObjectToString = useStringFromTextObject(); return ( ); diff --git a/packages/fuselage-ui-kit/src/extractInitialStateFromLayout.ts b/packages/fuselage-ui-kit/src/extractInitialStateFromLayout.ts deleted file mode 100644 index 10b6790d976a..000000000000 --- a/packages/fuselage-ui-kit/src/extractInitialStateFromLayout.ts +++ /dev/null @@ -1,90 +0,0 @@ -import type * as UiKit from '@rocket.chat/ui-kit'; - -type Value = { value: unknown; blockId?: string }; - -type LayoutBlockWithElement = Extract< - UiKit.LayoutBlock, - { element: UiKit.BlockElement | UiKit.TextObject } ->; -type LayoutBlockWithElements = Extract< - UiKit.LayoutBlock, - { elements: readonly (UiKit.BlockElement | UiKit.TextObject)[] } ->; - -const hasElement = ( - block: UiKit.LayoutBlock -): block is LayoutBlockWithElement => 'element' in block; - -const hasElements = ( - block: UiKit.LayoutBlock -): block is LayoutBlockWithElements => - 'elements' in block && Array.isArray(block.elements); - -const isActionableElement = ( - element: UiKit.BlockElement | UiKit.TextObject -): element is UiKit.ActionableElement => - 'actionId' in element && typeof element.actionId === 'string'; - -const hasInitialValue = ( - element: UiKit.ActionableElement -): element is UiKit.ActionableElement & { initialValue: number | string } => - 'initialValue' in element; - -const hasInitialTime = ( - element: UiKit.ActionableElement -): element is UiKit.ActionableElement & { initialTime: string } => - 'initialTime' in element; - -const hasInitialDate = ( - element: UiKit.ActionableElement -): element is UiKit.ActionableElement & { initialDate: string } => - 'initialDate' in element; - -const hasInitialOption = ( - element: UiKit.ActionableElement -): element is UiKit.ActionableElement & { initialOption: UiKit.Option } => - 'initialOption' in element; - -const hasInitialOptions = ( - element: UiKit.ActionableElement -): element is UiKit.ActionableElement & { initialOptions: UiKit.Option[] } => - 'initialOptions' in element; - -const getInitialValue = (element: UiKit.ActionableElement) => - (hasInitialValue(element) && element.initialValue) || - (hasInitialTime(element) && element.initialTime) || - (hasInitialDate(element) && element.initialDate) || - (hasInitialOption(element) && element.initialOption.value) || - (hasInitialOptions(element) && - element.initialOptions.map((option) => option.value)) || - undefined; - -const reduceInitialValuesFromLayoutBlock = ( - state: { [actionId: string]: Value }, - block: UiKit.LayoutBlock -) => { - if (hasElement(block)) { - if (isActionableElement(block.element)) { - state[block.element.actionId] = { - value: getInitialValue(block.element), - blockId: block.blockId, - }; - } - } - - if (hasElements(block)) { - for (const element of block.elements) { - if (isActionableElement(element)) { - state[element.actionId] = { - value: getInitialValue(element), - blockId: block.blockId, - }; - } - } - } - - return state; -}; - -export const extractInitialStateFromLayout = (blocks: UiKit.LayoutBlock[]) => - blocks.reduce(reduceInitialValuesFromLayoutBlock, {}); diff --git a/packages/fuselage-ui-kit/src/hooks/useAppTranslation.ts b/packages/fuselage-ui-kit/src/hooks/useAppTranslation.ts new file mode 100644 index 000000000000..c29cf0953386 --- /dev/null +++ b/packages/fuselage-ui-kit/src/hooks/useAppTranslation.ts @@ -0,0 +1,13 @@ +import { useDebugValue } from 'react'; +import { useTranslation } from 'react-i18next'; + +import { useAppId } from '../contexts/AppIdContext'; + +export const useAppTranslation = () => { + const appId = useAppId(); + const appNs = `app-${appId}`; + + useDebugValue(appNs); + + return useTranslation(appNs); +}; diff --git a/packages/fuselage-ui-kit/src/hooks/useStringFromTextObject.ts b/packages/fuselage-ui-kit/src/hooks/useStringFromTextObject.ts new file mode 100644 index 000000000000..72908da48eca --- /dev/null +++ b/packages/fuselage-ui-kit/src/hooks/useStringFromTextObject.ts @@ -0,0 +1,21 @@ +import type * as UiKit from '@rocket.chat/ui-kit'; +import { useCallback } from 'react'; + +import { useAppTranslation } from './useAppTranslation'; + +export const useStringFromTextObject = () => { + const { t } = useAppTranslation(); + + return useCallback( + (textObject: UiKit.TextObject | undefined): string | undefined => { + if (!textObject) { + return undefined; + } + + return textObject.i18n + ? t?.(textObject.i18n.key, { ...textObject.i18n.args }) + : textObject.text; + }, + [t] + ); +}; diff --git a/packages/fuselage-ui-kit/src/hooks/useUiKitState.ts b/packages/fuselage-ui-kit/src/hooks/useUiKitState.ts index 0a736dcc1c6c..4468f4fd86a7 100644 --- a/packages/fuselage-ui-kit/src/hooks/useUiKitState.ts +++ b/packages/fuselage-ui-kit/src/hooks/useUiKitState.ts @@ -3,40 +3,7 @@ import * as UiKit from '@rocket.chat/ui-kit'; import { useContext, useMemo, useState } from 'react'; import { UiKitContext } from '../contexts/UiKitContext'; - -const hasInitialValue = ( - element: TElement -): element is TElement & { initialValue: number | string } => - 'initialValue' in element; - -const hasInitialTime = ( - element: TElement -): element is TElement & { initialTime: string } => 'initialTime' in element; - -const hasInitialDate = ( - element: TElement -): element is TElement & { initialDate: string } => 'initialDate' in element; - -const hasInitialOption = ( - element: TElement -): element is TElement & { initialOption: UiKit.Option } => - 'initialOption' in element; - -const hasInitialOptions = ( - element: TElement -): element is TElement & { initialOptions: UiKit.Option[] } => - 'initialOptions' in element; - -const getInitialValue = ( - element: TElement -) => - (hasInitialValue(element) && element.initialValue) || - (hasInitialTime(element) && element.initialTime) || - (hasInitialDate(element) && element.initialDate) || - (hasInitialOption(element) && element.initialOption.value) || - (hasInitialOptions(element) && - element.initialOptions.map((option) => option.value)) || - undefined; +import { getInitialValue } from '../utils/getInitialValue'; const getElementValueFromState = ( actionId: string, diff --git a/packages/fuselage-ui-kit/src/index.ts b/packages/fuselage-ui-kit/src/index.ts index 9db1f2097835..d2d31f0d2ace 100644 --- a/packages/fuselage-ui-kit/src/index.ts +++ b/packages/fuselage-ui-kit/src/index.ts @@ -2,4 +2,4 @@ export * from './hooks/useUiKitState'; export * from './contexts/UiKitContext'; export * from './surfaces'; export { UiKitComponent } from './utils/UiKitComponent'; -export { extractInitialStateFromLayout } from './extractInitialStateFromLayout'; +export { extractInitialStateFromLayout } from './utils/extractInitialStateFromLayout'; diff --git a/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx index 5e4af0e7caeb..48b678365a7f 100644 --- a/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/ContextualBarSurfaceRenderer.tsx @@ -2,6 +2,7 @@ import * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import TabNavigationBlock from '../blocks/TabNavigationBlock'; +import { AppIdProvider } from '../contexts/AppIdContext'; import { FuselageSurfaceRenderer, renderTextObject, @@ -33,13 +34,14 @@ export class ContextualBarSurfaceRenderer extends FuselageSurfaceRenderer { ): ReactElement | null { if (context === UiKit.BlockContext.BLOCK) { return ( - + + + ); } diff --git a/packages/fuselage-ui-kit/src/surfaces/MessageSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx similarity index 73% rename from packages/fuselage-ui-kit/src/surfaces/MessageSurfaceRenderer.tsx rename to packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx index 4ca4682123ff..610dd1f408c5 100644 --- a/packages/fuselage-ui-kit/src/surfaces/MessageSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/FuselageMessageSurfaceRenderer.tsx @@ -2,6 +2,7 @@ import * as UiKit from '@rocket.chat/ui-kit'; import type { ReactElement } from 'react'; import VideoConferenceBlock from '../blocks/VideoConferenceBlock/VideoConferenceBlock'; +import { AppIdProvider } from '../contexts/AppIdContext'; import { FuselageSurfaceRenderer, renderTextObject, @@ -32,13 +33,14 @@ export class FuselageMessageSurfaceRenderer extends FuselageSurfaceRenderer { ): ReactElement | null { if (context === UiKit.BlockContext.BLOCK) { return ( - + + + ); } diff --git a/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx b/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx index 348aafd7c1ee..a2cbdb62d16c 100644 --- a/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx +++ b/packages/fuselage-ui-kit/src/surfaces/FuselageSurfaceRenderer.tsx @@ -9,6 +9,7 @@ import ImageBlock from '../blocks/ImageBlock'; import InputBlock from '../blocks/InputBlock'; import PreviewBlock from '../blocks/PreviewBlock'; import SectionBlock from '../blocks/SectionBlock'; +import { AppIdProvider } from '../contexts/AppIdContext'; import ButtonElement from '../elements/ButtonElement'; import CheckboxElement from '../elements/CheckboxElement'; import DatePickerElement from '../elements/DatePickerElement'; @@ -58,6 +59,13 @@ export const renderTextObject = ( } }; +const isImageBlock = ( + _elementOrBlock: UiKit.ImageBlock | UiKit.ImageElement, + context: UiKit.BlockContext +): _elementOrBlock is UiKit.ImageBlock => { + return context === UiKit.BlockContext.BLOCK; +}; + type FuselageSurfaceRendererProps = ConstructorParameters< typeof UiKit.SurfaceRenderer >[0]; @@ -120,13 +128,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -159,13 +168,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -179,13 +189,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -197,15 +208,16 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -227,13 +239,17 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + appId={block.appId} + > + + ); } @@ -247,13 +263,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -270,13 +287,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -290,13 +308,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -310,13 +329,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -330,13 +350,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -350,13 +371,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -370,13 +392,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -390,13 +413,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -410,13 +434,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -430,13 +455,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -450,13 +476,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -467,13 +494,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } @@ -490,13 +518,14 @@ export abstract class FuselageSurfaceRenderer extends UiKit.SurfaceRenderer + + + ); } } diff --git a/packages/fuselage-ui-kit/src/surfaces/index.ts b/packages/fuselage-ui-kit/src/surfaces/index.ts index 133ec5dc714a..8b92a4d646a2 100644 --- a/packages/fuselage-ui-kit/src/surfaces/index.ts +++ b/packages/fuselage-ui-kit/src/surfaces/index.ts @@ -2,8 +2,8 @@ import BannerSurface from './BannerSurface'; import { BannerSurfaceRenderer } from './BannerSurfaceRenderer'; import ContextualBarSurface from './ContextualBarSurface'; import { ContextualBarSurfaceRenderer } from './ContextualBarSurfaceRenderer'; +import { FuselageMessageSurfaceRenderer } from './FuselageMessageSurfaceRenderer'; import MessageSurface from './MessageSurface'; -import { FuselageMessageSurfaceRenderer } from './MessageSurfaceRenderer'; import ModalSurface from './ModalSurface'; import { ModalSurfaceRenderer } from './ModalSurfaceRenderer'; import { createSurfaceRenderer } from './createSurfaceRenderer'; diff --git a/packages/fuselage-ui-kit/src/utils/extractInitialStateFromLayout.ts b/packages/fuselage-ui-kit/src/utils/extractInitialStateFromLayout.ts new file mode 100644 index 000000000000..0fc66c7f72ab --- /dev/null +++ b/packages/fuselage-ui-kit/src/utils/extractInitialStateFromLayout.ts @@ -0,0 +1,40 @@ +import type * as UiKit from '@rocket.chat/ui-kit'; + +import { type Value, getInitialValue } from './getInitialValue'; +import { hasElement } from './hasElement'; +import { hasElements } from './hasElements'; + +const isActionableElement = ( + element: UiKit.BlockElement | UiKit.TextObject +): element is UiKit.ActionableElement => + 'actionId' in element && typeof element.actionId === 'string'; + +const reduceInitialValuesFromLayoutBlock = ( + state: { [actionId: string]: Value }, + block: UiKit.LayoutBlock +) => { + if (hasElement(block)) { + if (isActionableElement(block.element)) { + state[block.element.actionId] = { + value: getInitialValue(block.element), + blockId: block.blockId, + }; + } + } + + if (hasElements(block)) { + for (const element of block.elements) { + if (isActionableElement(element)) { + state[element.actionId] = { + value: getInitialValue(element), + blockId: block.blockId, + }; + } + } + } + + return state; +}; + +export const extractInitialStateFromLayout = (blocks: UiKit.LayoutBlock[]) => + blocks.reduce(reduceInitialValuesFromLayoutBlock, {}); diff --git a/packages/fuselage-ui-kit/src/utils/fromTextObjectToString.ts b/packages/fuselage-ui-kit/src/utils/fromTextObjectToString.ts deleted file mode 100644 index adc624986c7e..000000000000 --- a/packages/fuselage-ui-kit/src/utils/fromTextObjectToString.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as UiKit from '@rocket.chat/ui-kit'; -import type { ReactElement } from 'react'; -import { renderToStaticMarkup } from 'react-dom/server'; - -export const fromTextObjectToString = ( - surfaceRenderer: UiKit.SurfaceRenderer, - textObject: UiKit.TextObject, - index: number -): string | undefined => { - const element = surfaceRenderer.renderTextObject( - textObject, - index, - UiKit.BlockContext.NONE - ); - - if (!element) { - return undefined; - } - - return renderToStaticMarkup(element); -}; diff --git a/packages/fuselage-ui-kit/src/utils/getInitialValue.ts b/packages/fuselage-ui-kit/src/utils/getInitialValue.ts new file mode 100644 index 000000000000..7e75d4d5231c --- /dev/null +++ b/packages/fuselage-ui-kit/src/utils/getInitialValue.ts @@ -0,0 +1,37 @@ +import type * as UiKit from '@rocket.chat/ui-kit'; + +export type Value = { value: unknown; blockId?: string }; + +const hasInitialValue = ( + element: UiKit.ActionableElement +): element is UiKit.ActionableElement & { initialValue: number | string } => + 'initialValue' in element; + +const hasInitialTime = ( + element: UiKit.ActionableElement +): element is UiKit.ActionableElement & { initialTime: string } => + 'initialTime' in element; + +const hasInitialDate = ( + element: UiKit.ActionableElement +): element is UiKit.ActionableElement & { initialDate: string } => + 'initialDate' in element; + +const hasInitialOption = ( + element: UiKit.ActionableElement +): element is UiKit.ActionableElement & { initialOption: UiKit.Option } => + 'initialOption' in element; + +const hasInitialOptions = ( + element: UiKit.ActionableElement +): element is UiKit.ActionableElement & { initialOptions: UiKit.Option[] } => + 'initialOptions' in element; + +export const getInitialValue = (element: UiKit.ActionableElement) => + (hasInitialValue(element) && element.initialValue) || + (hasInitialTime(element) && element.initialTime) || + (hasInitialDate(element) && element.initialDate) || + (hasInitialOption(element) && element.initialOption.value) || + (hasInitialOptions(element) && + element.initialOptions.map((option) => option.value)) || + undefined; diff --git a/packages/fuselage-ui-kit/src/utils/hasElement.ts b/packages/fuselage-ui-kit/src/utils/hasElement.ts new file mode 100644 index 000000000000..42484addf444 --- /dev/null +++ b/packages/fuselage-ui-kit/src/utils/hasElement.ts @@ -0,0 +1,10 @@ +import type * as UiKit from '@rocket.chat/ui-kit'; + +type LayoutBlockWithElement = Extract< + UiKit.LayoutBlock, + { element: UiKit.BlockElement | UiKit.TextObject } +>; + +export const hasElement = ( + block: UiKit.LayoutBlock +): block is LayoutBlockWithElement => 'element' in block; diff --git a/packages/fuselage-ui-kit/src/utils/hasElements.ts b/packages/fuselage-ui-kit/src/utils/hasElements.ts new file mode 100644 index 000000000000..9df00cda1768 --- /dev/null +++ b/packages/fuselage-ui-kit/src/utils/hasElements.ts @@ -0,0 +1,11 @@ +import type * as UiKit from '@rocket.chat/ui-kit'; + +type LayoutBlockWithElements = Extract< + UiKit.LayoutBlock, + { elements: readonly (UiKit.BlockElement | UiKit.TextObject)[] } +>; + +export const hasElements = ( + block: UiKit.LayoutBlock +): block is LayoutBlockWithElements => + 'elements' in block && Array.isArray(block.elements); diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index b4585e6f5253..db795a3acad7 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/gazzodown +## 3.0.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/ui-contexts@3.0.0-rc.7 +- @rocket.chat/ui-client@3.0.0-rc.7 + +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/ui-contexts@3.0.0-rc.6 +- @rocket.chat/ui-client@3.0.0-rc.6 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/ui-contexts@3.0.0-rc.5 +- @rocket.chat/ui-client@3.0.0-rc.5 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/ui-contexts@3.0.0-rc.4 +- @rocket.chat/ui-client@3.0.0-rc.4 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/ui-contexts@3.0.0-rc.3 +- @rocket.chat/ui-client@3.0.0-rc.3 + ## 3.0.0-rc.2 ### Patch Changes @@ -33,6 +73,30 @@ - @rocket.chat/core-typings@6.5.0-rc.0 - @rocket.chat/ui-client@3.0.0-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/ui-contexts@2.0.8 +- @rocket.chat/ui-client@2.0.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/ui-contexts@2.0.7 +- @rocket.chat/ui-client@2.0.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/ui-contexts@2.0.6 +- @rocket.chat/ui-client@2.0.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 929129d99722..dfd8a632814a 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,9 +1,9 @@ { "name": "@rocket.chat/gazzodown", - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.7", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", + "@babel/core": "~7.22.20", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/css-in-js": "next", "@rocket.chat/fuselage": "^0.37.1", @@ -21,15 +21,15 @@ "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "~0.0.13", - "@swc/core": "^1.3.66", - "@swc/jest": "^0.2.26", + "@swc/core": "^1.3.95", + "@swc/jest": "^0.2.29", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "~12.1.5", - "@types/jest": "~29.5.3", - "@types/katex": "~0.16.0", - "@types/react": "~17.0.62", - "@types/react-dom": "~17.0.20", - "@types/testing-library__jest-dom": "~5.14.6", + "@types/jest": "~29.5.7", + "@types/katex": "~0.16.5", + "@types/react": "~17.0.69", + "@types/react-dom": "~17.0.22", + "@types/testing-library__jest-dom": "~5.14.9", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "babel-loader": "^8.3.0", @@ -37,11 +37,11 @@ "eslint-plugin-anti-trojan-source": "~1.1.1", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-storybook": "~0.6.12", + "eslint-plugin-storybook": "~0.6.15", "identity-obj-proxy": "^3.0.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", - "katex": "~0.16.7", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", + "katex": "~0.16.9", "outdent": "^0.8.0", "react-docgen-typescript-plugin": "~1.0.5", "react-dom": "~17.0.2", @@ -71,8 +71,8 @@ "@rocket.chat/fuselage-tokens": "*", "@rocket.chat/message-parser": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-client": "3.0.0-rc.2", - "@rocket.chat/ui-contexts": "3.0.0-rc.2", + "@rocket.chat/ui-client": "3.0.0-rc.7", + "@rocket.chat/ui-contexts": "3.0.0-rc.7", "katex": "*", "react": "*" }, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index b01528df5766..86d60ed24c3c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -3,11 +3,11 @@ "version": "0.0.3-rc.0", "private": true, "devDependencies": { - "@babel/core": "~7.22.10", - "@babel/preset-env": "~7.22.10", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", "babel-jest": "^29.5.0", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "tsup": "^6.7.0", "typescript": "~5.2.2" diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index e77152b333aa..45593a97f303 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/instance-status +## 0.0.21-rc.7 + +### Patch Changes + +- @rocket.chat/models@0.0.21-rc.7 + +## 0.0.21-rc.6 + +### Patch Changes + +- @rocket.chat/models@0.0.21-rc.6 + +## 0.0.21-rc.5 + +### Patch Changes + +- @rocket.chat/models@0.0.21-rc.5 + +## 0.0.21-rc.4 + +### Patch Changes + +- @rocket.chat/models@0.0.21-rc.4 + +## 0.0.21-rc.3 + +### Patch Changes + +- @rocket.chat/models@0.0.21-rc.3 + ## 0.0.21-rc.2 ### Patch Changes @@ -18,6 +48,24 @@ - @rocket.chat/models@0.0.21-rc.0 +## 0.0.23 + +### Patch Changes + +- @rocket.chat/models@0.0.23 + +## 0.0.22 + +### Patch Changes + +- @rocket.chat/models@0.0.22 + +## 0.0.21 + +### Patch Changes + +- @rocket.chat/models@0.0.21 + ## 0.0.20 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 83652ac190b8..eb512a50dffe 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.0.21-rc.2", + "version": "0.0.24-rc.0", "private": true, "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", diff --git a/packages/jwt/package.json b/packages/jwt/package.json index d505a67e12ba..be389ab3e046 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -3,9 +3,9 @@ "version": "0.1.0-rc.0", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "^29.1.1", "typescript": "~5.2.2" }, diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index c16e970014e6..abe2212eb7b7 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/livechat Change Log +## 1.14.6-rc.7 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.7 + +## 1.14.6-rc.6 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.6 + +## 1.14.6-rc.5 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.5 + +## 1.14.6-rc.4 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.4 + +## 1.14.6-rc.3 + +### Patch Changes + +- @rocket.chat/gazzodown@3.0.0-rc.3 + ## 1.14.6-rc.2 ### Patch Changes @@ -19,6 +49,25 @@ - Updated dependencies [c2f337664e] - @rocket.chat/gazzodown@3.0.0-rc.0 +## 1.14.8 + +### Patch Changes + +- d1c8e7ac13: Fixes reactivity issue with `registerGuest` Widget API Call, as well as other similar endpoint + - @rocket.chat/gazzodown@2.0.8 + +## 1.14.7 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.7 + +## 1.14.6 + +### Patch Changes + +- @rocket.chat/gazzodown@2.0.6 + ## 1.14.5 ### Patch Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 32d499c0fd32..0cf288930699 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "1.14.6-rc.2", + "version": "1.14.9-rc.0", "files": [ "/build" ], @@ -24,9 +24,9 @@ "typecheck": "tsc -p tsconfig.typecheck.json" }, "devDependencies": { - "@babel/eslint-parser": "~7.22.9", - "@babel/preset-env": "~7.22.9", - "@babel/preset-typescript": "~7.22.5", + "@babel/eslint-parser": "~7.22.15", + "@babel/preset-env": "~7.22.20", + "@babel/preset-typescript": "~7.22.15", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/ddp-client": "workspace:^", "@rocket.chat/eslint-config": "workspace:^", @@ -36,10 +36,10 @@ "@storybook/addon-postcss": "~2.0.0", "@storybook/preact": "~6.5.16", "@storybook/theming": "~6.5.16", - "@types/crypto-js": "~4.1.1", + "@types/crypto-js": "~4.1.3", "@types/mini-css-extract-plugin": "~1.4.3", "@types/webpack": "^5.28.4", - "@types/webpack-bundle-analyzer": "^4", + "@types/webpack-bundle-analyzer": "^4.6.2", "@types/webpack-dev-server": "~4.7.2", "@types/whatwg-fetch": "~0.0.33", "@typescript-eslint/eslint-plugin": "~5.60.1", @@ -69,7 +69,7 @@ "postcss-ie11-supports": "^0.1.3", "postcss-loader": "^3.0.0", "postcss-logical": "^4.0.2", - "postcss-scss": "^4.0.6", + "postcss-scss": "^4.0.9", "postcss-selector-not": "^4.0.1", "react-dom": "~17.0.2", "rimraf": "^3.0.2", @@ -84,7 +84,7 @@ "typescript": "~5.2.2", "url-loader": "^4.1.1", "webpack": "^5.89.0", - "webpack-bundle-analyzer": "^4.9.0", + "webpack-bundle-analyzer": "^4.9.1", "webpack-cli": "^5.1.4", "webpack-dev-server": "~4.13.3" }, @@ -102,7 +102,7 @@ "date-fns": "^2.15.0", "emoji-mart": "^3.0.1", "history": "~5.3.0", - "i18next": "~23.4.5", + "i18next": "~23.4.9", "markdown-it": "^11.0.1", "mem": "^6.1.1", "mitt": "^2.1.0", @@ -110,8 +110,8 @@ "preact-router": "^3.2.1", "query-string": "^7.1.3", "react-hook-form": "~7.45.4", - "react-i18next": "~13.2.1", - "whatwg-fetch": "^3.6.2" + "react-i18next": "~13.2.2", + "whatwg-fetch": "^3.6.19" }, "browserslist": [ "last 2 versions", diff --git a/packages/livechat/src/lib/hooks.js b/packages/livechat/src/lib/hooks.js index 795358312173..311cf0b2a00b 100644 --- a/packages/livechat/src/lib/hooks.js +++ b/packages/livechat/src/lib/hooks.js @@ -14,6 +14,7 @@ const createOrUpdateGuest = async (guest) => { token && (await store.setState({ token })); const { visitor: user } = await Livechat.grantVisitor({ visitor: { ...guest } }); store.setState({ user }); + await loadConfig(); }; const updateIframeGuestData = (data) => { @@ -141,8 +142,7 @@ const api = { if (token === localToken) { return; } - createOrUpdateGuest({ token }); - await loadConfig(); + await createOrUpdateGuest({ token }); }, setGuestName(name) { @@ -153,8 +153,8 @@ const api = { updateIframeGuestData({ email }); }, - registerGuest(data = {}) { - if (typeof data !== 'object') { + async registerGuest(data) { + if (!data || typeof data !== 'object') { return; } @@ -166,7 +166,9 @@ const api = { api.setDepartment(data.department); } - createOrUpdateGuest(data); + Livechat.unsubscribeAll(); + + await createOrUpdateGuest(data); }, async setLanguage(language) { diff --git a/packages/livechat/webpack.config.ts b/packages/livechat/webpack.config.ts index ecc404e7187f..361077be2a68 100644 --- a/packages/livechat/webpack.config.ts +++ b/packages/livechat/webpack.config.ts @@ -167,7 +167,7 @@ const config = (_env: any, args: webpack.WebpackOptionsNormalized): webpack.Conf output: { path: _('./dist'), publicPath: args.mode === 'production' ? 'livechat/' : '/', - filename: '[name].rocketchat-livechat.min.js', + filename: 'rocketchat-livechat.min.js', }, module: { rules: [ diff --git a/packages/log-format/package.json b/packages/log-format/package.json index dc21d5a87dfe..56cfd2d4e4ac 100644 --- a/packages/log-format/package.json +++ b/packages/log-format/package.json @@ -4,10 +4,10 @@ "private": true, "devDependencies": { "@types/chalk": "^2.2.0", - "@types/ejson": "^2.2.0", - "@types/jest": "~29.5.3", + "@types/ejson": "^2.2.1", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/logger/package.json b/packages/logger/package.json index 48968b3d5095..a1e83ea24f3b 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index 3bf2c2b78581..4c173f5de311 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -4,16 +4,16 @@ "private": true, "dependencies": { "@rocket.chat/i18n": "workspace:~", - "i18next": "~23.4.5", - "react-i18next": "~13.2.1" + "i18next": "~23.4.9", + "react-i18next": "~13.2.2" }, "devDependencies": { "@rocket.chat/ui-contexts": "workspace:*", "@storybook/react": "~6.5.16", "@tanstack/react-query": "^4.16.1", - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "react": "~17.0.2", "ts-jest": "~29.0.5", "typescript": "~5.2.2" diff --git a/packages/mock-providers/src/MockedAppRootBuilder.tsx b/packages/mock-providers/src/MockedAppRootBuilder.tsx index cc9de585d4de..df2c69d99b91 100644 --- a/packages/mock-providers/src/MockedAppRootBuilder.tsx +++ b/packages/mock-providers/src/MockedAppRootBuilder.tsx @@ -438,6 +438,8 @@ export class MockedAppRootBuilder { on: () => undefined, openView: () => undefined, disposeView: () => undefined, + notifyBusy: () => undefined, + notifyIdle: () => undefined, }} > {/* diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 04193bbb1536..12ed3645d773 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/model-typings +## 0.2.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 + +## 0.2.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 + +## 0.2.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 + +## 0.2.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 + +## 0.2.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 + ## 0.2.0-rc.2 ### Patch Changes @@ -37,6 +67,24 @@ - Updated dependencies [dea1fe9191] - @rocket.chat/core-typings@6.5.0-rc.0 +## 0.1.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 + +## 0.1.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 + +## 0.1.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 + ## 0.1.5 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 79955c437a3a..8d92ab5ae540 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,12 +1,12 @@ { "name": "@rocket.chat/model-typings", - "version": "0.2.0-rc.2", + "version": "0.2.0-rc.7", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", - "@types/node-rsa": "^1.1.1", + "@types/jest": "~29.5.7", + "@types/node-rsa": "^1.1.3", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "mongodb": "^4.17.1", "ts-jest": "~29.0.5", "typescript": "~5.2.2" diff --git a/packages/model-typings/src/models/ILivechatInquiryModel.ts b/packages/model-typings/src/models/ILivechatInquiryModel.ts index 4ab0203aa5b3..6cad9d91865e 100644 --- a/packages/model-typings/src/models/ILivechatInquiryModel.ts +++ b/packages/model-typings/src/models/ILivechatInquiryModel.ts @@ -19,6 +19,7 @@ export interface ILivechatInquiryModel extends IBaseModel; findNextAndLock(queueSortBy: OmnichannelSortingMechanismSettingType, department?: string): Promise; unlock(inquiryId: string): Promise; + unlockAndQueue(inquiryId: string): Promise; unlockAll(): Promise; getCurrentSortedQueueAsync(props: { inquiryId?: string; diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index e6c2011c35c2..b747514a9979 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/models +## 0.0.21-rc.7 + +### Patch Changes + +- @rocket.chat/model-typings@0.2.0-rc.7 + +## 0.0.21-rc.6 + +### Patch Changes + +- @rocket.chat/model-typings@0.2.0-rc.6 + +## 0.0.21-rc.5 + +### Patch Changes + +- @rocket.chat/model-typings@0.2.0-rc.5 + +## 0.0.21-rc.4 + +### Patch Changes + +- @rocket.chat/model-typings@0.2.0-rc.4 + +## 0.0.21-rc.3 + +### Patch Changes + +- @rocket.chat/model-typings@0.2.0-rc.3 + ## 0.0.21-rc.2 ### Patch Changes @@ -22,6 +52,24 @@ - Updated dependencies [5f81a0f3cb] - @rocket.chat/model-typings@0.2.0-rc.0 +## 0.0.23 + +### Patch Changes + +- @rocket.chat/model-typings@0.1.8 + +## 0.0.22 + +### Patch Changes + +- @rocket.chat/model-typings@0.1.7 + +## 0.0.21 + +### Patch Changes + +- @rocket.chat/model-typings@0.1.6 + ## 0.0.20 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index d54c9a4f931e..4471297e7a9c 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,11 +1,11 @@ { "name": "@rocket.chat/models", - "version": "0.0.21-rc.2", + "version": "0.0.24-rc.0", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/node-poplib/package.json b/packages/node-poplib/package.json index dc91a3722016..ce80d3c1fec4 100644 --- a/packages/node-poplib/package.json +++ b/packages/node-poplib/package.json @@ -3,9 +3,9 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/password-policies/package.json b/packages/password-policies/package.json index 52fa766671db..23ee01767bc5 100644 --- a/packages/password-policies/package.json +++ b/packages/password-policies/package.json @@ -3,11 +3,11 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@types/chai": "^4.3.5", - "@types/jest": "~29.5.3", - "chai": "^4.3.7", + "@types/chai": "^4.3.9", + "@types/jest": "~29.5.7", + "chai": "^4.3.10", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/random/package.json b/packages/random/package.json index 15ca3ee0b47a..931b3784aa45 100644 --- a/packages/random/package.json +++ b/packages/random/package.json @@ -14,14 +14,14 @@ "test": "jest" }, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", "@rocket.chat/eslint-config": "workspace:^", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "eslint": "~8.45.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/release-action/package.json b/packages/release-action/package.json index 0a1e3ded8927..ce574dddc8b0 100644 --- a/packages/release-action/package.json +++ b/packages/release-action/package.json @@ -10,11 +10,11 @@ "main": "dist/index.js", "packageManager": "yarn@3.5.1", "devDependencies": { - "@types/node": "^16.18.36", + "@types/node": "^16.18.60", "typescript": "~5.2.2" }, "dependencies": { - "@actions/core": "^1.10.0", + "@actions/core": "^1.10.1", "@actions/exec": "^1.1.1", "@actions/github": "^5.1.1", "@octokit/plugin-throttling": "^6.0.0", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 2a3bf2fe9477..9bca22a51398 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,40 @@ # @rocket.chat/rest-typings +## 6.5.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/license@0.1.0-rc.7 + +## 6.5.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/license@0.1.0-rc.6 + +## 6.5.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/license@0.1.0-rc.5 + +## 6.5.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/license@0.1.0-rc.4 + +## 6.5.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/license@0.1.0-rc.3 + ## 6.5.0-rc.2 ### Patch Changes @@ -42,6 +77,24 @@ - @rocket.chat/core-typings@6.5.0-rc.0 - @rocket.chat/license@0.1.0-rc.0 +## 6.4.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 + +## 6.4.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 + +## 6.4.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 + ## 6.4.5 ### Patch Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index e422d451596c..e01bf0e1dd4f 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -3,10 +3,10 @@ "version": "6.6.0-develop", "devDependencies": { "@rocket.chat/eslint-config": "workspace:^", - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", - "jest-environment-jsdom": "~29.6.1", + "jest": "~29.6.4", + "jest-environment-jsdom": "~29.6.4", "mongodb": "^4.17.1", "ts-jest": "~29.0.5", "typescript": "~5.2.2" diff --git a/packages/rest-typings/src/apps/index.ts b/packages/rest-typings/src/apps/index.ts index 31427afb3fee..bf1514aceeab 100644 --- a/packages/rest-typings/src/apps/index.ts +++ b/packages/rest-typings/src/apps/index.ts @@ -53,14 +53,7 @@ export type AppsEndpoints = { GET: () => { apps: { id: string; - languages: { - [key: string]: { - Params: string; - Description: string; - Setting_Name: string; - Setting_Description: string; - }; - }; + languages: { [language: string]: { [key: string]: string } }; }[]; }; }; diff --git a/packages/server-cloud-communication/package.json b/packages/server-cloud-communication/package.json index 52a3ff801dac..b18de7084958 100644 --- a/packages/server-cloud-communication/package.json +++ b/packages/server-cloud-communication/package.json @@ -4,9 +4,9 @@ "private": true, "devDependencies": { "@rocket.chat/license": "workspace:^", - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.1.6" }, diff --git a/packages/server-fetch/package.json b/packages/server-fetch/package.json index ab571e2f2e72..8ef2e1b9a7ad 100644 --- a/packages/server-fetch/package.json +++ b/packages/server-fetch/package.json @@ -3,9 +3,9 @@ "version": "0.0.2-rc.0", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, @@ -25,7 +25,7 @@ "extends": "../../package.json" }, "dependencies": { - "@types/proxy-from-env": "^1.0.1", + "@types/proxy-from-env": "^1.0.3", "http-proxy-agent": "^5.0.0", "https-proxy-agent": "^5.0.1", "node-fetch": "2.3.0", diff --git a/packages/sha256/package.json b/packages/sha256/package.json index b343cc5cae2d..12ebcc783afd 100644 --- a/packages/sha256/package.json +++ b/packages/sha256/package.json @@ -13,13 +13,13 @@ "test": "jest" }, "devDependencies": { - "@babel/core": "~7.22.9", - "@babel/preset-env": "~7.22.9", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", "@rocket.chat/eslint-config": "workspace:^", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/tools/package.json b/packages/tools/package.json index a9fe5659f9b1..72f25887198a 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -3,9 +3,9 @@ "version": "0.2.0-rc.0", "private": true, "devDependencies": { - "@types/jest": "~29.5.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, diff --git a/packages/tools/src/index.ts b/packages/tools/src/index.ts index b8bc90d9cb54..6ec3e38d358a 100644 --- a/packages/tools/src/index.ts +++ b/packages/tools/src/index.ts @@ -1,4 +1,5 @@ +export * from './normalizeLanguage'; export * from './pick'; -export * from './timezone'; export * from './stream'; +export * from './timezone'; export * from './wrapExceptions'; diff --git a/apps/meteor/client/lib/utils/filterLanguage.ts b/packages/tools/src/normalizeLanguage.ts similarity index 79% rename from apps/meteor/client/lib/utils/filterLanguage.ts rename to packages/tools/src/normalizeLanguage.ts index 0f6bc9b67d9a..9231d5c20da5 100644 --- a/apps/meteor/client/lib/utils/filterLanguage.ts +++ b/packages/tools/src/normalizeLanguage.ts @@ -1,4 +1,4 @@ -export const filterLanguage = (language: string): string => { +export const normalizeLanguage = (language: string): string => { // Fix browsers having all-lowercase language settings eg. pt-br, en-us const regex = /([a-z]{2,3})-([a-z]{2,4})/; const matches = regex.exec(language); diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 485a3d153e10..713b0a7ee5ee 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/ui-client +## 3.0.0-rc.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.7 + +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.6 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.5 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.4 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.3 + ## 3.0.0-rc.2 ### Patch Changes @@ -19,6 +49,24 @@ - Updated dependencies [7da1edf866] - @rocket.chat/ui-contexts@3.0.0-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index a64c473e275a..3b7e7c246c25 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,9 +1,9 @@ { "name": "@rocket.chat/ui-client", - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.7", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", + "@babel/core": "~7.22.20", "@rocket.chat/css-in-js": "next", "@rocket.chat/fuselage": "^0.37.1", "@rocket.chat/fuselage-hooks": "^0.32.1", @@ -20,21 +20,21 @@ "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "~0.0.13", - "@swc/jest": "^0.2.26", + "@swc/jest": "^0.2.29", "@testing-library/jest-dom": "~5.16.5", - "@testing-library/react": "^12.1.2", + "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", - "@types/babel__core": "~7.20.1", - "@types/jest": "~29.5.3", - "@types/react": "~17.0.62", - "@types/react-dom": "~17.0.20", + "@types/babel__core": "~7.20.3", + "@types/jest": "~29.5.7", + "@types/react": "~17.0.69", + "@types/react-dom": "~17.0.22", "eslint": "~8.45.0", "eslint-plugin-anti-trojan-source": "~1.1.1", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-storybook": "~0.6.12", - "eslint-plugin-testing-library": "~5.11.0", - "jest": "~29.6.1", + "eslint-plugin-storybook": "~0.6.15", + "eslint-plugin-testing-library": "~5.11.1", + "jest": "~29.6.4", "react": "^17.0.2", "react-dom": "^17.0.2", "react-hook-form": "~7.45.4", @@ -61,7 +61,7 @@ "@rocket.chat/fuselage": "*", "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-contexts": "3.0.0-rc.2", + "@rocket.chat/ui-contexts": "3.0.0-rc.7", "react": "~17.0.2" }, "volta": { diff --git a/packages/ui-composer/package.json b/packages/ui-composer/package.json index 09e1270a3005..4551d06659cc 100644 --- a/packages/ui-composer/package.json +++ b/packages/ui-composer/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", + "@babel/core": "~7.22.20", "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/fuselage": "^0.37.1", "@rocket.chat/icons": "^0.32.0", @@ -14,13 +14,13 @@ "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "~0.0.13", - "@types/babel__core": "~7.20.1", - "@types/jest": "~29.5.3", + "@types/babel__core": "~7.20.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-storybook": "~0.6.12", - "jest": "~29.6.1", + "eslint-plugin-storybook": "~0.6.15", + "jest": "~29.6.4", "react-docgen-typescript-plugin": "~1.0.5", "ts-jest": "~29.0.5", "typescript": "~5.2.2" diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index baa753633148..f570d5e5c159 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/ui-contexts +## 3.0.0-rc.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.7 +- @rocket.chat/rest-typings@6.5.0-rc.7 +- @rocket.chat/ddp-client@0.2.6-rc.7 + +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.6 +- @rocket.chat/rest-typings@6.5.0-rc.6 +- @rocket.chat/ddp-client@0.2.6-rc.6 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.5 +- @rocket.chat/rest-typings@6.5.0-rc.5 +- @rocket.chat/ddp-client@0.2.6-rc.5 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.4 +- @rocket.chat/rest-typings@6.5.0-rc.4 +- @rocket.chat/ddp-client@0.2.6-rc.4 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/core-typings@6.5.0-rc.3 +- @rocket.chat/rest-typings@6.5.0-rc.3 +- @rocket.chat/ddp-client@0.2.6-rc.3 + ## 3.0.0-rc.2 ### Patch Changes @@ -33,6 +73,30 @@ - @rocket.chat/rest-typings@6.5.0-rc.0 - @rocket.chat/ddp-client@0.2.6-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.8 +- @rocket.chat/rest-typings@6.4.8 +- @rocket.chat/ddp-client@0.2.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.7 +- @rocket.chat/rest-typings@6.4.7 +- @rocket.chat/ddp-client@0.2.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/core-typings@6.4.6 +- @rocket.chat/rest-typings@6.4.6 +- @rocket.chat/ddp-client@0.2.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index 067375102049..b75a5449907a 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,19 +1,19 @@ { "name": "@rocket.chat/ui-contexts", - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.7", "private": true, "devDependencies": { "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/emitter": "next", "@rocket.chat/fuselage-hooks": "^0.32.1", "@rocket.chat/rest-typings": "workspace:^", - "@types/jest": "~29.5.3", - "@types/react": "~17.0.62", - "@types/react-dom": "~17.0.20", - "@types/use-sync-external-store": "^0.0.3", + "@types/jest": "~29.5.7", + "@types/react": "~17.0.69", + "@types/react-dom": "~17.0.22", + "@types/use-sync-external-store": "^0.0.5", "eslint": "~8.45.0", "eslint-plugin-react-hooks": "^4.6.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "mongodb": "^4.17.1", "react": "~17.0.2", "ts-jest": "~29.0.5", diff --git a/packages/ui-contexts/src/ActionManagerContext.ts b/packages/ui-contexts/src/ActionManagerContext.ts index fa6ff0a7659d..538e0332454b 100644 --- a/packages/ui-contexts/src/ActionManagerContext.ts +++ b/packages/ui-contexts/src/ActionManagerContext.ts @@ -1,11 +1,16 @@ import type { DistributiveOmit, UiKit } from '@rocket.chat/core-typings'; import { createContext } from 'react'; -type ActionManager = { +/** + * An action manager is responsible for handling interactions with the UiKit. + */ +export interface IActionManager { on(viewId: string, listener: (data: any) => void): void; on(eventName: 'busy', listener: ({ busy }: { busy: boolean }) => void): void; off(viewId: string, listener: (data: any) => any): void; off(eventName: 'busy', listener: ({ busy }: { busy: boolean }) => void): void; + notifyBusy(): void; + notifyIdle(): void; generateTriggerId(appId: string | undefined): string; emitInteraction(appId: string, userInteraction: DistributiveOmit): Promise; handleServerInteraction(interaction: UiKit.ServerInteraction): UiKit.ServerInteraction['type'] | undefined; @@ -18,6 +23,6 @@ type ActionManager = { openView(surface: 'banner', view: UiKit.BannerView): void; openView(surface: 'contextual_bar', view: UiKit.ContextualBarView): void; disposeView(viewId: UiKit.ModalView['id'] | UiKit.BannerView['viewId'] | UiKit.ContextualBarView['id']): void; -}; +} -export const ActionManagerContext = createContext(undefined); +export const ActionManagerContext = createContext(undefined); diff --git a/packages/ui-contexts/src/TranslationContext.ts b/packages/ui-contexts/src/TranslationContext.ts index d0f9bb6318c3..b73428932d8f 100644 --- a/packages/ui-contexts/src/TranslationContext.ts +++ b/packages/ui-contexts/src/TranslationContext.ts @@ -11,7 +11,7 @@ export type TranslationLanguage = { key: string; }; -export type TranslationKey = keyof typeof keys; +export type TranslationKey = keyof typeof keys | `app-${string}.${string}`; export type TranslationContextValue = { languages: TranslationLanguage[]; diff --git a/packages/ui-contexts/src/index.ts b/packages/ui-contexts/src/index.ts index d404dc921579..4e35d9e02af8 100644 --- a/packages/ui-contexts/src/index.ts +++ b/packages/ui-contexts/src/index.ts @@ -14,7 +14,7 @@ export { TooltipContext, TooltipContextValue } from './TooltipContext'; export { TranslationContext, TranslationContextValue } from './TranslationContext'; export { UserContext, UserContextValue, LoginService } from './UserContext'; export { DeviceContext, Device, IExperimentalHTMLAudioElement, DeviceContextValue } from './DeviceContext'; -export { ActionManagerContext } from './ActionManagerContext'; +export { ActionManagerContext, IActionManager } from './ActionManagerContext'; export { useAbsoluteUrl } from './hooks/useAbsoluteUrl'; export { useAllPermissions } from './hooks/useAllPermissions'; diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index ead96347d8c4..400346f3835f 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,35 @@ # @rocket.chat/ui-video-conf +## 3.0.0-rc.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.7 + +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.6 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.5 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.4 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.3 + ## 3.0.0-rc.2 ### Patch Changes @@ -19,6 +49,24 @@ - Updated dependencies [7da1edf866] - @rocket.chat/ui-contexts@3.0.0-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 1793e5732a01..16293f9424d6 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,9 +1,9 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.7", "private": true, "devDependencies": { - "@babel/core": "~7.22.9", + "@babel/core": "~7.22.20", "@rocket.chat/css-in-js": "next", "@rocket.chat/eslint-config": "workspace:^", "@rocket.chat/fuselage": "^0.37.1", @@ -18,13 +18,13 @@ "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", "@storybook/testing-library": "~0.0.13", - "@types/babel__core": "~7.20.1", - "@types/jest": "~29.5.3", + "@types/babel__core": "~7.20.3", + "@types/jest": "~29.5.7", "eslint": "~8.45.0", "eslint-plugin-react": "~7.32.2", "eslint-plugin-react-hooks": "~4.6.0", - "eslint-plugin-storybook": "~0.6.12", - "jest": "~29.6.1", + "eslint-plugin-storybook": "~0.6.15", + "jest": "~29.6.4", "react-docgen-typescript-plugin": "~1.0.5", "ts-jest": "~29.0.5", "typescript": "~5.2.2" @@ -35,7 +35,7 @@ "@rocket.chat/fuselage-hooks": "*", "@rocket.chat/icons": "*", "@rocket.chat/styled": "*", - "@rocket.chat/ui-contexts": "3.0.0-rc.2", + "@rocket.chat/ui-contexts": "3.0.0-rc.7", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/packages/uikit-playground/CHANGELOG.md b/packages/uikit-playground/CHANGELOG.md index b5308c845ac4..fc591fd32c99 100644 --- a/packages/uikit-playground/CHANGELOG.md +++ b/packages/uikit-playground/CHANGELOG.md @@ -1,5 +1,40 @@ # @rocket.chat/uikit-playground +## 0.2.6-rc.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.7 +- @rocket.chat/fuselage-ui-kit@3.0.0-rc.7 + +## 0.2.6-rc.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.6 +- @rocket.chat/fuselage-ui-kit@3.0.0-rc.6 + +## 0.2.6-rc.5 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.5 +- @rocket.chat/fuselage-ui-kit@3.0.0-rc.5 + +## 0.2.6-rc.4 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.4 +- @rocket.chat/fuselage-ui-kit@3.0.0-rc.4 + +## 0.2.6-rc.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.3 +- @rocket.chat/fuselage-ui-kit@3.0.0-rc.3 + ## 0.2.6-rc.2 ### Patch Changes @@ -22,6 +57,27 @@ - @rocket.chat/ui-contexts@3.0.0-rc.0 - @rocket.chat/fuselage-ui-kit@3.0.0-rc.0 +## 0.2.8 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.8 +- @rocket.chat/fuselage-ui-kit@2.0.8 + +## 0.2.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.7 +- @rocket.chat/fuselage-ui-kit@2.0.7 + +## 0.2.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.6 +- @rocket.chat/fuselage-ui-kit@2.0.6 + ## 0.2.5 ### Patch Changes diff --git a/packages/uikit-playground/package.json b/packages/uikit-playground/package.json index b9c0bd2b5f31..a02abbb30c9a 100644 --- a/packages/uikit-playground/package.json +++ b/packages/uikit-playground/package.json @@ -1,7 +1,7 @@ { "name": "@rocket.chat/uikit-playground", "private": true, - "version": "0.2.6-rc.2", + "version": "0.2.9-rc.0", "type": "module", "scripts": { "dev": "vite", @@ -36,16 +36,16 @@ "use-subscription": "^1.8.0" }, "devDependencies": { - "@types/react": "~17.0.62", - "@types/react-beautiful-dnd": "^13.1.4", - "@types/react-dom": "~17.0.20", - "@types/use-subscription": "^1.0.0", + "@types/react": "~17.0.69", + "@types/react-beautiful-dnd": "^13.1.6", + "@types/react-dom": "~17.0.22", + "@types/use-subscription": "^1.0.1", "@typescript-eslint/eslint-plugin": "~5.60.1", "@typescript-eslint/parser": "~5.60.1", "@vitejs/plugin-react": "^4.0.0", "eslint": "~8.45.0", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.1", + "eslint-plugin-react-refresh": "^0.4.4", "typescript": "~5.2.2", "vite": "^4.3.9" }, diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index c276b0949a1c..f1cbded5ded9 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,29 @@ # @rocket.chat/web-ui-registration +## 3.0.0-rc.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.7 + +## 3.0.0-rc.5 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.6 + +## 3.0.0-rc.4 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.5 + +## 3.0.0-rc.3 + +### Patch Changes + +- @rocket.chat/ui-contexts@3.0.0-rc.4 + ## 3.0.0-rc.2 ### Patch Changes @@ -20,6 +44,24 @@ - Updated dependencies [7da1edf866] - @rocket.chat/ui-contexts@3.0.0-rc.0 +## 2.0.8 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.8 + +## 2.0.7 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.7 + +## 2.0.6 + +### Patch Changes + +- @rocket.chat/ui-contexts@2.0.6 + ## 2.0.5 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 018f5672b9bc..ae313fe52f67 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/web-ui-registration", - "version": "3.0.0-rc.2", + "version": "3.0.0-rc.6", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -17,13 +17,14 @@ "dev": "tsc -p tsconfig.build.json --watch --preserveWatchOutput" }, "devDependencies": { - "@babel/core": "~7.22.10", - "@babel/preset-env": "~7.22.10", - "@babel/preset-react": "~7.22.5", - "@babel/preset-typescript": "~7.22.5", + "@babel/core": "~7.22.20", + "@babel/preset-env": "~7.22.20", + "@babel/preset-react": "~7.22.15", + "@babel/preset-typescript": "~7.22.15", "@rocket.chat/i18n": "workspace:~", "@rocket.chat/layout": "next", "@rocket.chat/mock-providers": "workspace:~", + "@rocket.chat/tools": "workspace:~", "@rocket.chat/ui-client": "workspace:^", "@rocket.chat/ui-contexts": "workspace:^", "@storybook/addon-actions": "~6.5.16", @@ -32,24 +33,25 @@ "@storybook/builder-webpack4": "~6.5.16", "@storybook/manager-webpack4": "~6.5.16", "@storybook/react": "~6.5.16", - "@storybook/testing-library": "^0.2.0", + "@storybook/testing-library": "^0.2.2", "@tanstack/react-query": "^4.16.1", "@testing-library/react": "^13.3.0", - "@types/jest": "~29.5.3", - "@types/react": "~17.0.62", + "@types/jest": "~29.5.7", + "@types/react": "~17.0.69", "babel-loader": "~8.3.0", "eslint": "~8.45.0", - "jest": "~29.6.1", + "jest": "~29.6.4", "react": "~17.0.2", "react-hook-form": "~7.45.4", - "react-i18next": "~13.2.1", + "react-i18next": "~13.2.2", "storybook-dark-mode": "~3.0.1", "ts-jest": "~29.0.5", "typescript": "~5.2.2" }, "peerDependencies": { "@rocket.chat/layout": "*", - "@rocket.chat/ui-contexts": "3.0.0-rc.2", + "@rocket.chat/tools": "*", + "@rocket.chat/ui-contexts": "3.0.0-rc.7", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", diff --git a/packages/web-ui-registration/src/RegisterSecretPageRouter.tsx b/packages/web-ui-registration/src/RegisterSecretPageRouter.tsx index a14f48e754ca..889d7e53e7b9 100644 --- a/packages/web-ui-registration/src/RegisterSecretPageRouter.tsx +++ b/packages/web-ui-registration/src/RegisterSecretPageRouter.tsx @@ -14,7 +14,7 @@ export const RegisterSecretPageRouter = ({ origin, }: { setLoginRoute: DispatchLoginRouter; - origin: 'register' | 'secret-register'; + origin: 'register' | 'secret-register' | 'invite-register'; }): ReactElement => { const registrationMode = useSetting('Accounts_RegistrationForm'); @@ -26,7 +26,7 @@ export const RegisterSecretPageRouter = ({ return ; } - if (isPublicRegistration) { + if (isPublicRegistration || (origin === 'invite-register' && isRegistrationAllowedForSecret)) { return ( diff --git a/packages/web-ui-registration/src/RegistrationPageRouter.tsx b/packages/web-ui-registration/src/RegistrationPageRouter.tsx index 3c92f528fa9c..a8d2064b5769 100644 --- a/packages/web-ui-registration/src/RegistrationPageRouter.tsx +++ b/packages/web-ui-registration/src/RegistrationPageRouter.tsx @@ -1,3 +1,4 @@ +import { useSession } from '@rocket.chat/ui-contexts'; import type { ReactElement, ReactNode } from 'react'; import GuestForm from './GuestForm'; @@ -15,7 +16,8 @@ export const RegistrationPageRouter = ({ defaultRoute?: LoginRoutes; children?: ReactNode; }): ReactElement | null => { - const [route, setLoginRoute] = useLoginRouter(defaultRoute); + const defaultRouteSession = useSession('loginDefaultState') as LoginRoutes | undefined; + const [route, setLoginRoute] = useLoginRouter(defaultRouteSession || defaultRoute); if (route === 'guest') { return ( @@ -41,7 +43,7 @@ export const RegistrationPageRouter = ({ ); } - if (route === 'secret-register' || route === 'register') { + if (route === 'secret-register' || route === 'register' || route === 'invite-register') { return ; } diff --git a/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx index 17b45e9157cb..0d08fba8a3ac 100644 --- a/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx +++ b/packages/web-ui-registration/src/components/LoginSwitchLanguageFooter.tsx @@ -1,21 +1,11 @@ import { Button } from '@rocket.chat/fuselage'; import { useLocalStorage } from '@rocket.chat/fuselage-hooks'; import { HorizontalWizardLayoutCaption } from '@rocket.chat/layout'; +import { normalizeLanguage } from '@rocket.chat/tools'; import { type TranslationLanguage, useSetting, useLoadLanguage, useLanguage, useLanguages } from '@rocket.chat/ui-contexts'; import { type ReactElement, type UIEvent, useMemo, useEffect } from 'react'; import { Trans, useTranslation } from 'react-i18next'; -const normalizeLanguage = (language: string): string => { - // Fix browsers having all-lowercase language settings eg. pt-br, en-us - const regex = /([a-z]{2,3})-([a-z]{2,4})/; - const matches = regex.exec(language); - if (matches) { - return `${matches[1]}-${matches[2].toUpperCase()}`; - } - - return language; -}; - const useSuggestedLanguages = ({ browserLanguage = normalizeLanguage(window.navigator.language ?? 'en'), }: { diff --git a/packages/web-ui-registration/src/hooks/useLoginRouter.ts b/packages/web-ui-registration/src/hooks/useLoginRouter.ts index 6c907e39a1c5..5a5b1e98223e 100644 --- a/packages/web-ui-registration/src/hooks/useLoginRouter.ts +++ b/packages/web-ui-registration/src/hooks/useLoginRouter.ts @@ -1,7 +1,15 @@ import type { Dispatch } from 'react'; import { useState } from 'react'; -export type LoginRoutes = 'login' | 'reset-password' | 'register' | 'register-invalid' | 'secret-register' | 'guest' | 'anonymous'; +export type LoginRoutes = + | 'login' + | 'reset-password' + | 'register' + | 'register-invalid' + | 'secret-register' + | 'invite-register' + | 'guest' + | 'anonymous'; export const useLoginRouter = (route: LoginRoutes): [LoginRoutes, DispatchLoginRouter] => useState(route); diff --git a/yarn.lock b/yarn.lock index 809d38dfd10c..3de75904ea8c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12,13 +12,13 @@ __metadata: languageName: node linkType: hard -"@actions/core@npm:^1.10.0": - version: 1.10.0 - resolution: "@actions/core@npm:1.10.0" +"@actions/core@npm:^1.10.1": + version: 1.10.1 + resolution: "@actions/core@npm:1.10.1" dependencies: "@actions/http-client": ^2.0.1 uuid: ^8.3.2 - checksum: 0a75621e007ab20d887434cdd165f0b9036f14c22252a2faed33543d8b9d04ec95d823e69ca636a25245574e4585d73e1e9e47a845339553c664f9f2c9614669 + checksum: 96524c2725e70e3c3176b4e4d93a1358a86f3c5ca777db9a2f65eadfa672f00877db359bf60fffc416c33838ffb4743db93bcc5bf53e76199dd28bf7f7ff8e80 languageName: node linkType: hard @@ -975,17 +975,7 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.10, @babel/code-frame@npm:^7.5.5, @babel/code-frame@npm:^7.8.3": - version: 7.22.10 - resolution: "@babel/code-frame@npm:7.22.10" - dependencies: - "@babel/highlight": ^7.22.10 - chalk: ^2.4.2 - checksum: 89a06534ad19759da6203a71bad120b1d7b2ddc016c8e07d4c56b35dea25e7396c6da60a754e8532a86733092b131ae7f661dbe6ba5d165ea777555daa2ed3c9 - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.22.13": +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.22.13, @babel/code-frame@npm:^7.5.5, @babel/code-frame@npm:^7.8.3": version: 7.22.13 resolution: "@babel/code-frame@npm:7.22.13" dependencies: @@ -995,14 +985,7 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": - version: 7.22.9 - resolution: "@babel/compat-data@npm:7.22.9" - checksum: bed77d9044ce948b4327b30dd0de0779fa9f3a7ed1f2d31638714ed00229fa71fc4d1617ae0eb1fad419338d3658d0e9a5a083297451e09e73e078d0347ff808 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.22.20": +"@babel/compat-data@npm:^7.20.5, @babel/compat-data@npm:^7.22.20, @babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.22.9": version: 7.22.20 resolution: "@babel/compat-data@npm:7.22.20" checksum: efedd1d18878c10fde95e4d82b1236a9aba41395ef798cbb651f58dbf5632dbff475736c507b8d13d4c8f44809d41c0eb2ef0d694283af9ba5dd8339b6dab451 @@ -1033,56 +1016,44 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.7, @babel/core@npm:^7.21.4, @babel/core@npm:^7.7.5, @babel/core@npm:~7.22.10, @babel/core@npm:~7.22.9": - version: 7.22.10 - resolution: "@babel/core@npm:7.22.10" +"@babel/core@npm:^7.1.0, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.10, @babel/core@npm:^7.12.3, @babel/core@npm:^7.20.7, @babel/core@npm:^7.21.4, @babel/core@npm:^7.7.5, @babel/core@npm:~7.22.20": + version: 7.22.20 + resolution: "@babel/core@npm:7.22.20" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.22.10 - "@babel/generator": ^7.22.10 - "@babel/helper-compilation-targets": ^7.22.10 - "@babel/helper-module-transforms": ^7.22.9 - "@babel/helpers": ^7.22.10 - "@babel/parser": ^7.22.10 - "@babel/template": ^7.22.5 - "@babel/traverse": ^7.22.10 - "@babel/types": ^7.22.10 + "@babel/code-frame": ^7.22.13 + "@babel/generator": ^7.22.15 + "@babel/helper-compilation-targets": ^7.22.15 + "@babel/helper-module-transforms": ^7.22.20 + "@babel/helpers": ^7.22.15 + "@babel/parser": ^7.22.16 + "@babel/template": ^7.22.15 + "@babel/traverse": ^7.22.20 + "@babel/types": ^7.22.19 convert-source-map: ^1.7.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 - json5: ^2.2.2 + json5: ^2.2.3 semver: ^6.3.1 - checksum: cc4efa09209fe1f733cf512e9e4bb50870b191ab2dee8014e34cd6e731f204e48476cc53b4bbd0825d4d342304d577ae43ff5fd8ab3896080673c343321acb32 + checksum: 73663a079194b5dc406b2e2e5e50db81977d443e4faf7ef2c27e5836cd9a359e81e551115193dc9b1a93471275351a972e54904f4d3aa6cb156f51e26abf6765 languageName: node linkType: hard -"@babel/eslint-parser@npm:~7.22.9": - version: 7.22.9 - resolution: "@babel/eslint-parser@npm:7.22.9" +"@babel/eslint-parser@npm:~7.22.15": + version: 7.22.15 + resolution: "@babel/eslint-parser@npm:7.22.15" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals": 5.1.1-v1 eslint-visitor-keys: ^2.1.0 semver: ^6.3.1 peerDependencies: - "@babel/core": ">=7.11.0" + "@babel/core": ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - checksum: 4f417796c803056aad2c8fa69b8a7a78a1fdacc307d95702f22894cab42b83554e47de7d0b3cfbee667f25014bca0179f859aa86ceb684b09803192e1200b48d - languageName: node - linkType: hard - -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.22.10, @babel/generator@npm:^7.7.2": - version: 7.22.10 - resolution: "@babel/generator@npm:7.22.10" - dependencies: - "@babel/types": ^7.22.10 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 59a79730abdff9070692834bd3af179e7a9413fa2ff7f83dff3eb888765aeaeb2bfc7b0238a49613ed56e1af05956eff303cc139f2407eda8df974813e486074 + checksum: efdc749164a40de1b68e3ed395f441dfb7864c85d0a2ee3e4bc4f06dd0b7f675acb9be97cdc9025b88b3e80d38749a2b30e392ce7f6a79313c3aaf82ba8ccd68 languageName: node linkType: hard -"@babel/generator@npm:^7.23.0": +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.12.5, @babel/generator@npm:^7.22.15, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.7.2": version: 7.23.0 resolution: "@babel/generator@npm:7.23.0" dependencies: @@ -1112,20 +1083,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.10, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": - version: 7.22.10 - resolution: "@babel/helper-compilation-targets@npm:7.22.10" - dependencies: - "@babel/compat-data": ^7.22.9 - "@babel/helper-validator-option": ^7.22.15 - browserslist: ^4.21.9 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: f6f1896816392bcff671bbe6e277307729aee53befb4a66ea126e2a91eda78d819a70d06fa384c74ef46c1595544b94dca50bef6c78438d9ffd31776dafbd435 - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.22.15": +"@babel/helper-compilation-targets@npm:^7.13.0, @babel/helper-compilation-targets@npm:^7.20.7, @babel/helper-compilation-targets@npm:^7.22.15, @babel/helper-compilation-targets@npm:^7.22.5, @babel/helper-compilation-targets@npm:^7.22.6": version: 7.22.15 resolution: "@babel/helper-compilation-targets@npm:7.22.15" dependencies: @@ -1247,7 +1205,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.22.9, @babel/helper-module-transforms@npm:^7.23.0": +"@babel/helper-module-transforms@npm:^7.12.1, @babel/helper-module-transforms@npm:^7.22.20, @babel/helper-module-transforms@npm:^7.22.5, @babel/helper-module-transforms@npm:^7.23.0": version: 7.23.0 resolution: "@babel/helper-module-transforms@npm:7.23.0" dependencies: @@ -1352,14 +1310,7 @@ __metadata: languageName: node linkType: hard -"@babel/helper-validator-identifier@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-validator-identifier@npm:7.22.5" - checksum: 7f0f30113474a28298c12161763b49de5018732290ca4de13cdaefd4fd0d635a6fe3f6686c37a02905fb1e64f21a5ee2b55140cf7b070e729f1bd66866506aea - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.16.7, @babel/helper-validator-option@npm:^7.22.15, @babel/helper-validator-option@npm:^7.22.5": +"@babel/helper-validator-option@npm:^7.16.7, @babel/helper-validator-option@npm:^7.22.15": version: 7.22.15 resolution: "@babel/helper-validator-option@npm:7.22.15" checksum: 68da52b1e10002a543161494c4bc0f4d0398c8fdf361d5f7f4272e95c45d5b32d974896d44f6a0ea7378c9204988879d73613ca683e13bd1304e46d25ff67a8d @@ -1377,14 +1328,14 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.22.10": - version: 7.23.1 - resolution: "@babel/helpers@npm:7.23.1" +"@babel/helpers@npm:^7.12.5, @babel/helpers@npm:^7.22.15": + version: 7.23.2 + resolution: "@babel/helpers@npm:7.23.2" dependencies: "@babel/template": ^7.22.15 - "@babel/traverse": ^7.23.0 + "@babel/traverse": ^7.23.2 "@babel/types": ^7.23.0 - checksum: acfc345102045c24ea2a4d60e00dcf8220e215af3add4520e2167700661338e6a80bd56baf44bb764af05ec6621101c9afc315dc107e18c61fa6da8acbdbb893 + checksum: aaf4828df75ec460eaa70e5c9f66e6dadc28dae3728ddb7f6c13187dbf38030e142194b83d81aa8a31bbc35a5529a5d7d3f3cf59d5d0b595f5dd7f9d8f1ced8e languageName: node linkType: hard @@ -1399,27 +1350,7 @@ __metadata: languageName: node linkType: hard -"@babel/highlight@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/highlight@npm:7.22.10" - dependencies: - "@babel/helper-validator-identifier": ^7.22.5 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: f714a1e1a72dd9d72f6383f4f30fd342e21a8df32d984a4ea8f5eab691bb6ba6db2f8823d4b4cf135d98869e7a98925b81306aa32ee3c429f8cfa52c75889e1b - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.10": - version: 7.22.10 - resolution: "@babel/parser@npm:7.22.10" - bin: - parser: ./bin/babel-parser.js - checksum: af51567b7d3cdf523bc608eae057397486c7fa6c2e5753027c01fe5c36f0767b2d01ce3049b222841326cc5b8c7fda1d810ac1a01af0a97bb04679e2ef9f7049 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.22.15, @babel/parser@npm:^7.23.0": +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.22.15, @babel/parser@npm:^7.22.16, @babel/parser@npm:^7.23.0": version: 7.23.0 resolution: "@babel/parser@npm:7.23.0" bin: @@ -2135,7 +2066,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-commonjs@npm:^7.22.15, @babel/plugin-transform-modules-commonjs@npm:^7.22.5, @babel/plugin-transform-modules-commonjs@npm:^7.23.0": +"@babel/plugin-transform-modules-commonjs@npm:^7.22.15, @babel/plugin-transform-modules-commonjs@npm:^7.23.0": version: 7.23.0 resolution: "@babel/plugin-transform-modules-commonjs@npm:7.23.0" dependencies: @@ -2365,18 +2296,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-jsx@npm:^7.12.12, @babel/plugin-transform-react-jsx@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/plugin-transform-react-jsx@npm:7.22.5" +"@babel/plugin-transform-react-jsx@npm:^7.12.12, @babel/plugin-transform-react-jsx@npm:^7.22.15, @babel/plugin-transform-react-jsx@npm:^7.22.5": + version: 7.22.15 + resolution: "@babel/plugin-transform-react-jsx@npm:7.22.15" dependencies: "@babel/helper-annotate-as-pure": ^7.22.5 - "@babel/helper-module-imports": ^7.22.5 + "@babel/helper-module-imports": ^7.22.15 "@babel/helper-plugin-utils": ^7.22.5 "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/types": ^7.22.5 + "@babel/types": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c8f93f29f32cf79683ca2b8958fd62f38155674846ef27a7d4b6fbeb8713c37257418391731b58ff8024ec37b888bed5960e615a3f552e28245d2082e7f2a2df + checksum: 3899054e89550c3a0ef041af7c47ee266e2e934f498ee80fefeda778a6aa177b48aa8b4d2a8bf5848de977fec564571699ab952d9fa089c4c19b45ddb121df09 languageName: node linkType: hard @@ -2471,7 +2402,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.22.15, @babel/plugin-transform-typescript@npm:^7.22.5": +"@babel/plugin-transform-typescript@npm:^7.22.15": version: 7.22.15 resolution: "@babel/plugin-transform-typescript@npm:7.22.15" dependencies: @@ -2532,7 +2463,7 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:~7.22.10, @babel/preset-env@npm:~7.22.9": +"@babel/preset-env@npm:^7.12.11, @babel/preset-env@npm:~7.22.20": version: 7.22.20 resolution: "@babel/preset-env@npm:7.22.20" dependencies: @@ -2648,19 +2579,19 @@ __metadata: languageName: node linkType: hard -"@babel/preset-react@npm:^7.12.10, @babel/preset-react@npm:~7.22.5": - version: 7.22.5 - resolution: "@babel/preset-react@npm:7.22.5" +"@babel/preset-react@npm:^7.12.10, @babel/preset-react@npm:~7.22.15": + version: 7.22.15 + resolution: "@babel/preset-react@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 "@babel/plugin-transform-react-display-name": ^7.22.5 - "@babel/plugin-transform-react-jsx": ^7.22.5 + "@babel/plugin-transform-react-jsx": ^7.22.15 "@babel/plugin-transform-react-jsx-development": ^7.22.5 "@babel/plugin-transform-react-pure-annotations": ^7.22.5 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b977c7ee83e93f62d77e61929ca3d97e5291e026e2f025a1b8b7ac9186486ed56c7d5bc36f0becabe0c24e8c42a4e4f2243a3cf841384cfafc3204c5d3e6c619 + checksum: c3ef99dfa2e9f57d2e08603e883aa20f47630a826c8e413888a93ae6e0084b5016871e463829be125329d40a1ba0a89f7c43d77b6dab52083c225cb43e63d10e languageName: node linkType: hard @@ -2679,24 +2610,24 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:~7.22.5": - version: 7.22.5 - resolution: "@babel/preset-typescript@npm:7.22.5" +"@babel/preset-typescript@npm:~7.22.15": + version: 7.22.15 + resolution: "@babel/preset-typescript@npm:7.22.15" dependencies: "@babel/helper-plugin-utils": ^7.22.5 - "@babel/helper-validator-option": ^7.22.5 + "@babel/helper-validator-option": ^7.22.15 "@babel/plugin-syntax-jsx": ^7.22.5 - "@babel/plugin-transform-modules-commonjs": ^7.22.5 - "@babel/plugin-transform-typescript": ^7.22.5 + "@babel/plugin-transform-modules-commonjs": ^7.22.15 + "@babel/plugin-transform-typescript": ^7.22.15 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 7be1670cb4404797d3a473bd72d66eb2b3e0f2f8a672a5e40bdb0812cc66085ec84bcd7b896709764cabf042fdc6b7f2d4755ac7cce10515eb596ff61dab5154 + checksum: 02ac4d5c812a52357c8f517f81584725f06f385d54ccfda89dd082e0ed89a94bd9f4d9b05fa1cbdcf426e3489c1921f04c93c5acc5deea83407a64c22ad2feb4 languageName: node linkType: hard -"@babel/register@npm:^7.12.1, @babel/register@npm:~7.22.5": - version: 7.22.5 - resolution: "@babel/register@npm:7.22.5" +"@babel/register@npm:^7.12.1, @babel/register@npm:~7.22.15": + version: 7.22.15 + resolution: "@babel/register@npm:7.22.15" dependencies: clone-deep: ^4.0.1 find-cache-dir: ^2.0.0 @@ -2705,7 +2636,7 @@ __metadata: source-map-support: ^0.5.16 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 723ce27fdad6faee5b3f51ef4f5154f7f285d61da665367de14de85abbe1c81ccbac11f699671cd0ed6b755dd430f28a62364fed5d49f2527625a9ea3bf40056 + checksum: 5497be6773608cd2d874210edd14499fce464ddbea170219da55955afe4c9173adb591164193458fd639e43b7d1314088a6186f4abf241476c59b3f0da6afd6f languageName: node linkType: hard @@ -2725,12 +2656,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:~7.22.6": - version: 7.22.10 - resolution: "@babel/runtime@npm:7.22.10" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.11.2, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.17.2, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.5.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.9.2, @babel/runtime@npm:~7.22.15": + version: 7.22.15 + resolution: "@babel/runtime@npm:7.22.15" dependencies: regenerator-runtime: ^0.14.0 - checksum: 524d41517e68953dbc73a4f3616b8475e5813f64e28ba89ff5fca2c044d535c2ea1a3f310df1e5bb06162e1f0b401b5c4af73fe6e2519ca2450d9d8c44cf268d + checksum: 793296df1e41599a935a3d77ec01eb6088410d3fd4dbe4e92f06c6b7bb2f8355024e6d78621a3a35f44e0e23b0b59107f23d585384df4f3123256a1e1492040e languageName: node linkType: hard @@ -2754,9 +2685,9 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.22.10, @babel/traverse@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/traverse@npm:7.23.0" +"@babel/traverse@npm:^7.1.6, @babel/traverse@npm:^7.12.11, @babel/traverse@npm:^7.12.9, @babel/traverse@npm:^7.13.0, @babel/traverse@npm:^7.22.20, @babel/traverse@npm:^7.23.2": + version: 7.23.2 + resolution: "@babel/traverse@npm:7.23.2" dependencies: "@babel/code-frame": ^7.22.13 "@babel/generator": ^7.23.0 @@ -2768,22 +2699,11 @@ __metadata: "@babel/types": ^7.23.0 debug: ^4.1.0 globals: ^11.1.0 - checksum: 0b17fae53269e1af2cd3edba00892bc2975ad5df9eea7b84815dab07dfec2928c451066d51bc65b4be61d8499e77db7e547ce69ef2a7b0eca3f96269cb43a0b0 - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.5, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.22.10 - resolution: "@babel/types@npm:7.22.10" - dependencies: - "@babel/helper-string-parser": ^7.22.5 - "@babel/helper-validator-identifier": ^7.22.5 - to-fast-properties: ^2.0.0 - checksum: 095c4f4b7503fa816e4094113f0ec2351ef96ff32012010b771693066ff628c7c664b21c6bd3fb93aeb46fe7c61f6b3a3c9e4ed0034d6a2481201c417371c8af + checksum: 26a1eea0dde41ab99dde8b9773a013a0dc50324e5110a049f5d634e721ff08afffd54940b3974a20308d7952085ac769689369e9127dea655f868c0f6e1ab35d languageName: node linkType: hard -"@babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.23.0": +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.10, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.19, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.3.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.23.0 resolution: "@babel/types@npm:7.23.0" dependencies: @@ -2897,12 +2817,12 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^6.1.3": - version: 6.1.3 - resolution: "@changesets/apply-release-plan@npm:6.1.3" +"@changesets/apply-release-plan@npm:^6.1.4": + version: 6.1.4 + resolution: "@changesets/apply-release-plan@npm:6.1.4" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/config": ^2.3.0 + "@changesets/config": ^2.3.1 "@changesets/get-version-range-type": ^0.3.2 "@changesets/git": ^2.0.0 "@changesets/types": ^5.2.1 @@ -2913,22 +2833,22 @@ __metadata: outdent: ^0.5.0 prettier: ^2.7.1 resolve-from: ^5.0.0 - semver: ^5.4.1 - checksum: 3772a6e0ede33abdac6fcc52359307f770d5fafa53295c83e0a11b81e5802b2fe5e74e4d672c0a082f5d73dc1a9ef56509870b81824111396f74de99ada9526b + semver: ^7.5.3 + checksum: d386aee70c5483c97d964c6fa1191878005b7050d34b2e1e4a1ad66d9ad44f8f20d1c884e01e770b954bd2d4364f935510e53ae896212669f67e5c37b2a610c7 languageName: node linkType: hard -"@changesets/assemble-release-plan@npm:^5.2.3": - version: 5.2.3 - resolution: "@changesets/assemble-release-plan@npm:5.2.3" +"@changesets/assemble-release-plan@npm:^5.2.4": + version: 5.2.4 + resolution: "@changesets/assemble-release-plan@npm:5.2.4" dependencies: "@babel/runtime": ^7.20.1 "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/get-dependents-graph": ^1.3.6 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 - semver: ^5.4.1 - checksum: 2c61894414736b12e9a26903d73c387b65f4caba398e280488b885f4d0f4bb307aaa6bae140dfd754c85de6557bd07645accda2af6b8794837ab43823ba6215c + semver: ^7.5.3 + checksum: 32f443a0afec3d5a4afc68c8de32e8ff88531ea24976b50583b1d6870d71cec2729f27952af82854eb54e2ad0a619872d211d654c596ee0eb42c83ab54ad15ae languageName: node linkType: hard @@ -2941,18 +2861,18 @@ __metadata: languageName: node linkType: hard -"@changesets/cli@npm:^2.26.1": - version: 2.26.1 - resolution: "@changesets/cli@npm:2.26.1" +"@changesets/cli@npm:^2.26.2": + version: 2.26.2 + resolution: "@changesets/cli@npm:2.26.2" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/apply-release-plan": ^6.1.3 - "@changesets/assemble-release-plan": ^5.2.3 + "@changesets/apply-release-plan": ^6.1.4 + "@changesets/assemble-release-plan": ^5.2.4 "@changesets/changelog-git": ^0.1.14 - "@changesets/config": ^2.3.0 + "@changesets/config": ^2.3.1 "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 - "@changesets/get-release-plan": ^3.0.16 + "@changesets/get-dependents-graph": ^1.3.6 + "@changesets/get-release-plan": ^3.0.17 "@changesets/git": ^2.0.0 "@changesets/logger": ^0.0.5 "@changesets/pre": ^1.0.14 @@ -2961,7 +2881,7 @@ __metadata: "@changesets/write": ^0.2.3 "@manypkg/get-packages": ^1.1.3 "@types/is-ci": ^3.0.0 - "@types/semver": ^6.0.0 + "@types/semver": ^7.5.0 ansi-colors: ^4.1.3 chalk: ^2.1.0 enquirer: ^2.3.0 @@ -2974,28 +2894,28 @@ __metadata: p-limit: ^2.2.0 preferred-pm: ^3.0.0 resolve-from: ^5.0.0 - semver: ^5.4.1 + semver: ^7.5.3 spawndamnit: ^2.0.0 term-size: ^2.1.0 tty-table: ^4.1.5 bin: changeset: bin.js - checksum: d7d6445ebbc1b2718d97852a2275f59af32020e8a1e1efe666767819dd862c7794ce50627ad52f1f97ba4bc57c81bfc4750e92265757cc94ab2d44198d2afb10 + checksum: fc7b5bf319b19abed7a8d33a9fbd9ce49108af61c9c51920f609a49cb0c557f0b998711250d0cac149d0bed8a522f3109c4d8b0dda65b96ff2f823d16ca2f972 languageName: node linkType: hard -"@changesets/config@npm:^2.3.0": - version: 2.3.0 - resolution: "@changesets/config@npm:2.3.0" +"@changesets/config@npm:^2.3.1": + version: 2.3.1 + resolution: "@changesets/config@npm:2.3.1" dependencies: "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/get-dependents-graph": ^1.3.6 "@changesets/logger": ^0.0.5 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 fs-extra: ^7.0.1 micromatch: ^4.0.2 - checksum: 68a61437ffeda219f22f6d4d32bf8d428e6f284d7e0e191c0629f64f035a051b4068222b1ea3ff1866e5944a153004735dab82205404919f6806c97c546700b1 + checksum: 8af58e3add4751ac8ce2c01f026ac8843b8d1c07c9a3df6518496eaef67f56458a84cad310763c588f7eccbf6831afbf280df7e05e78b294027b6b847be3d0cc languageName: node linkType: hard @@ -3008,31 +2928,31 @@ __metadata: languageName: node linkType: hard -"@changesets/get-dependents-graph@npm:^1.3.5": - version: 1.3.5 - resolution: "@changesets/get-dependents-graph@npm:1.3.5" +"@changesets/get-dependents-graph@npm:^1.3.6": + version: 1.3.6 + resolution: "@changesets/get-dependents-graph@npm:1.3.6" dependencies: "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 chalk: ^2.1.0 fs-extra: ^7.0.1 - semver: ^5.4.1 - checksum: d7abb1da21804fd66b1458e46be2f2aec741145a43500b0463a5acfbb420ac5ce776a7328fa660ad4e6e811f933bd6f36e7bbaf00fb3f591d46f0b8e7108fdcd + semver: ^7.5.3 + checksum: d2cbbc5041063b939899502d1b264a0d9edb655acefd7f6197883229156bb7cfd1ace642ae4a1f7f7b432f2c51429f5dc9851ff5a9ed47f1c0159916e66627a9 languageName: node linkType: hard -"@changesets/get-release-plan@npm:^3.0.16": - version: 3.0.16 - resolution: "@changesets/get-release-plan@npm:3.0.16" +"@changesets/get-release-plan@npm:^3.0.17": + version: 3.0.17 + resolution: "@changesets/get-release-plan@npm:3.0.17" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/assemble-release-plan": ^5.2.3 - "@changesets/config": ^2.3.0 + "@changesets/assemble-release-plan": ^5.2.4 + "@changesets/config": ^2.3.1 "@changesets/pre": ^1.0.14 "@changesets/read": ^0.5.9 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 - checksum: ab8360c17f69437ad51edfd8910a2609ab8dc1e8cf006994b3938b2551b1eb08b7ab8043b8bf1e94916cbadd89e357a0c1148e20eab8bb5e3ae284384d239942 + checksum: 8a0e3794d0f1e6220d173dbec96352ad69b585d013c3183888ca598dfdfcaa8a5ac3f7f36d5c511575cdc3559c2ad6f8cecfaa16ba9c24380899a81daa7af924 languageName: node linkType: hard @@ -3920,50 +3840,50 @@ __metadata: languageName: node linkType: hard -"@jest/console@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/console@npm:29.6.1" +"@jest/console@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/console@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 - checksum: d0ab23a00947bfb4bff8c0a7e5a7afd16519de16dde3fe7e77b9f13e794c6df7043ecf7fcdde66ac0d2b5fb3262e9cab3d92eaf61f89a12d3b8e3602e06a9902 + checksum: 0e3624e32c5a8e7361e889db70b170876401b7d70f509a2538c31d5cd50deb0c1ae4b92dc63fe18a0902e0a48c590c21d53787a0df41a52b34fa7cab96c384d6 languageName: node linkType: hard -"@jest/core@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/core@npm:29.6.1" +"@jest/core@npm:^29.6.4, @jest/core@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/core@npm:29.7.0" dependencies: - "@jest/console": ^29.6.1 - "@jest/reporters": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/console": ^29.7.0 + "@jest/reporters": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 - jest-changed-files: ^29.5.0 - jest-config: ^29.6.1 - jest-haste-map: ^29.6.1 - jest-message-util: ^29.6.1 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-resolve-dependencies: ^29.6.1 - jest-runner: ^29.6.1 - jest-runtime: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 - jest-watcher: ^29.6.1 + jest-changed-files: ^29.7.0 + jest-config: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-resolve-dependencies: ^29.7.0 + jest-runner: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 + jest-watcher: ^29.7.0 micromatch: ^4.0.4 - pretty-format: ^29.6.1 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-ansi: ^6.0.0 peerDependencies: @@ -3971,7 +3891,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: 736dcc90c6c58dd9e1d2da122103b851187719ce3b3d4167689c63e68252632cd817712955b52ddaa648eba9c6f98f86cd58677325f0db4185f76899c64d7dac + checksum: af759c9781cfc914553320446ce4e47775ae42779e73621c438feb1e4231a5d4862f84b1d8565926f2d1aab29b3ec3dcfdc84db28608bdf5f29867124ebcfc0d languageName: node linkType: hard @@ -3984,72 +3904,72 @@ __metadata: languageName: node linkType: hard -"@jest/environment@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/environment@npm:29.6.1" +"@jest/environment@npm:^29.6.4, @jest/environment@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/environment@npm:29.7.0" dependencies: - "@jest/fake-timers": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.1 - checksum: fb671f91f27e7aa1ba04983ef87a83f0794a597aba0a57d08cbb1fcb484c2aedc2201e99f85fafe27aec9be78af6f2d1d7e6ea88267938992a1d0f9d4615f5b2 + jest-mock: ^29.7.0 + checksum: 6fb398143b2543d4b9b8d1c6dbce83fa5247f84f550330604be744e24c2bd2178bb893657d62d1b97cf2f24baf85c450223f8237cccb71192c36a38ea2272934 languageName: node linkType: hard -"@jest/expect-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect-utils@npm:29.6.1" +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" dependencies: - jest-get-type: ^29.4.3 - checksum: 037ee017eca62f7b45e1465fb5c6f9e92d5709a9ac716b8bff0bd294240a54de734e8f968fb69309cc4aef6c83b9552d5a821f3b18371af394bf04783859d706 + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed languageName: node linkType: hard -"@jest/expect@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/expect@npm:29.6.1" +"@jest/expect@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect@npm:29.7.0" dependencies: - expect: ^29.6.1 - jest-snapshot: ^29.6.1 - checksum: 5c56977b3cc8489744d97d9dc2dcb196c1dfecc83a058a7ef0fd4f63d68cf120a23d27669272d1e1b184fb4337b85e4ac1fc7f886e3988fdf243d42d73973eac + expect: ^29.7.0 + jest-snapshot: ^29.7.0 + checksum: a01cb85fd9401bab3370618f4b9013b90c93536562222d920e702a0b575d239d74cecfe98010aaec7ad464f67cf534a353d92d181646a4b792acaa7e912ae55e languageName: node linkType: hard -"@jest/fake-timers@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/fake-timers@npm:29.6.1" +"@jest/fake-timers@npm:^29.6.4, @jest/fake-timers@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/fake-timers@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@sinonjs/fake-timers": ^10.0.2 "@types/node": "*" - jest-message-util: ^29.6.1 - jest-mock: ^29.6.1 - jest-util: ^29.6.1 - checksum: 86991276944b7d6c2ada3703a272517f5f8f2f4e2af1fe26065f6db1dac4dc6299729a88c46bcb781dcc1b20504c1d4bbd8119fd8a0838ac81a9a4b5d2c8e429 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: caf2bbd11f71c9241b458d1b5a66cbe95debc5a15d96442444b5d5c7ba774f523c76627c6931cca5e10e76f0d08761f6f1f01a608898f4751a0eee54fc3d8d00 languageName: node linkType: hard -"@jest/globals@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/globals@npm:29.6.1" +"@jest/globals@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/globals@npm:29.7.0" dependencies: - "@jest/environment": ^29.6.1 - "@jest/expect": ^29.6.1 - "@jest/types": ^29.6.1 - jest-mock: ^29.6.1 - checksum: fcca0b970a8b4894a1cdff0f500a86b45609e72c0a4319875e9504237b839df1a46c44d2f1362c6d87fdc7a05928edcc4b5a3751c9e6648dd70a761cdab64c94 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/types": ^29.6.3 + jest-mock: ^29.7.0 + checksum: 97dbb9459135693ad3a422e65ca1c250f03d82b2a77f6207e7fa0edd2c9d2015fbe4346f3dc9ebff1678b9d8da74754d4d440b7837497f8927059c0642a22123 languageName: node linkType: hard -"@jest/reporters@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/reporters@npm:29.6.1" +"@jest/reporters@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/reporters@npm:29.7.0" dependencies: "@bcoe/v8-coverage": ^0.2.3 - "@jest/console": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/console": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 "@types/node": "*" chalk: ^4.0.0 @@ -4058,13 +3978,13 @@ __metadata: glob: ^7.1.3 graceful-fs: ^4.2.9 istanbul-lib-coverage: ^3.0.0 - istanbul-lib-instrument: ^5.1.0 + istanbul-lib-instrument: ^6.0.0 istanbul-lib-report: ^3.0.0 istanbul-lib-source-maps: ^4.0.0 istanbul-reports: ^3.1.3 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - jest-worker: ^29.6.1 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 slash: ^3.0.0 string-length: ^4.0.1 strip-ansi: ^6.0.0 @@ -4074,7 +3994,7 @@ __metadata: peerDependenciesMeta: node-notifier: optional: true - checksum: b7dae415f3f6342b4db2671261bbee29af20a829f42135316c3dd548b9ef85290c9bb64a0e3aec4a55486596be1257ac8216a0f8d9794acd43f8b8fb686fc7e3 + checksum: 7eadabd62cc344f629024b8a268ecc8367dba756152b761bdcb7b7e570a3864fc51b2a9810cd310d85e0a0173ef002ba4528d5ea0329fbf66ee2a3ada9c40455 languageName: node linkType: hard @@ -4087,47 +4007,47 @@ __metadata: languageName: node linkType: hard -"@jest/schemas@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/schemas@npm:29.6.0" +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" dependencies: "@sinclair/typebox": ^0.27.8 - checksum: c00511c69cf89138a7d974404d3a5060af375b5a52b9c87215d91873129b382ca11c1ff25bd6d605951404bb381ddce5f8091004a61e76457da35db1f5c51365 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 languageName: node linkType: hard -"@jest/source-map@npm:^29.6.0": - version: 29.6.0 - resolution: "@jest/source-map@npm:29.6.0" +"@jest/source-map@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/source-map@npm:29.6.3" dependencies: "@jridgewell/trace-mapping": ^0.3.18 callsites: ^3.0.0 graceful-fs: ^4.2.9 - checksum: 9c6c40387410bb70b2fae8124287fc28f6bdd1b2d7f24348e8611e1bb638b404518228a4ce64a582365b589c536ae8e7ebab0126cef59a87874b71061d19783b + checksum: bcc5a8697d471396c0003b0bfa09722c3cd879ad697eb9c431e6164e2ea7008238a01a07193dfe3cbb48b1d258eb7251f6efcea36f64e1ebc464ea3c03ae2deb languageName: node linkType: hard -"@jest/test-result@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/test-result@npm:29.6.1" +"@jest/test-result@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-result@npm:29.7.0" dependencies: - "@jest/console": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/console": ^29.7.0 + "@jest/types": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 collect-v8-coverage: ^1.0.0 - checksum: 9397a3a3410c5df564e79297b1be4fe33807a6157a017a1f74b54a6ef14de1530f12b922299e822e66a82c53269da16661772bffde3d883a78c5eefd2cd6d1cc + checksum: 67b6317d526e335212e5da0e768e3b8ab8a53df110361b80761353ad23b6aea4432b7c5665bdeb87658ea373b90fb1afe02ed3611ef6c858c7fba377505057fa languageName: node linkType: hard -"@jest/test-sequencer@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/test-sequencer@npm:29.6.1" +"@jest/test-sequencer@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/test-sequencer@npm:29.7.0" dependencies: - "@jest/test-result": ^29.6.1 + "@jest/test-result": ^29.7.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.7.0 slash: ^3.0.0 - checksum: f3437178b5dca0401ed2e990d8b69161442351856d56f5725e009a487f5232b51039f8829673884b9bea61c861120d08a53a36432f4a4b8aab38915a68f7000d + checksum: 73f43599017946be85c0b6357993b038f875b796e2f0950487a82f4ebcb115fa12131932dd9904026b4ad8be131fe6e28bd8d0aa93b1563705185f9804bff8bd languageName: node linkType: hard @@ -4154,26 +4074,26 @@ __metadata: languageName: node linkType: hard -"@jest/transform@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/transform@npm:29.6.1" +"@jest/transform@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/transform@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@jridgewell/trace-mapping": ^0.3.18 babel-plugin-istanbul: ^6.1.1 chalk: ^4.0.0 convert-source-map: ^2.0.0 fast-json-stable-stringify: ^2.1.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.1 + jest-haste-map: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 micromatch: ^4.0.4 pirates: ^4.0.4 slash: ^3.0.0 write-file-atomic: ^4.0.2 - checksum: 1635cd66e4b3dbba0689ecefabc6137301756c9c12d1d23e25124dd0dd9b4a6a38653d51e825e90f74faa022152ac1eaf200591fb50417aa7e1f7d1d1c2bc11d + checksum: 0f8ac9f413903b3cb6d240102db848f2a354f63971ab885833799a9964999dd51c388162106a807f810071f864302cdd8e3f0c241c29ce02d85a36f18f3f40ab languageName: node linkType: hard @@ -4203,17 +4123,17 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^29.6.1": - version: 29.6.1 - resolution: "@jest/types@npm:29.6.1" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: 89fc1ccf71a84fe0da643e0675b1cfe6a6f19ea72e935b2ab1dbdb56ec547e94433fb59b3536d3832a6e156c077865b7176fe9dae707dab9c3d2f9405ba6233c + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -6674,47 +6594,47 @@ __metadata: languageName: node linkType: hard -"@react-pdf/font@npm:^2.3.6": - version: 2.3.6 - resolution: "@react-pdf/font@npm:2.3.6" +"@react-pdf/font@npm:^2.3.7": + version: 2.3.7 + resolution: "@react-pdf/font@npm:2.3.7" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/types": ^2.3.3 + "@react-pdf/types": ^2.3.4 cross-fetch: ^3.1.5 fontkit: ^2.0.2 is-url: ^1.2.4 - checksum: 572e34d416ad645e609afcb582c6b8baabe4017019bbfa696b90dddfcb3931069a9dc71124f1bf9b75652063f8c434880c383b212edc659a66dd2be3879f4213 + checksum: bf3f774045294c3e4f2f7b3e86e631ee01dddfe8e8c11fb97264cfa1fbf21e4f3c4ed0684d4971c967c4c175bb918e56f7c1d0dbeac4aa1adf30c618f965f3c9 languageName: node linkType: hard -"@react-pdf/image@npm:^2.2.1": - version: 2.2.1 - resolution: "@react-pdf/image@npm:2.2.1" +"@react-pdf/image@npm:^2.2.2": + version: 2.2.2 + resolution: "@react-pdf/image@npm:2.2.2" dependencies: "@babel/runtime": ^7.20.13 "@react-pdf/png-js": ^2.2.0 cross-fetch: ^3.1.5 - checksum: d2b3c9e5b6a23c377724072c875eaeea6389fa513ae0e88ed442d7efb0eaa373b0f195e7c6b9404297ede802d063cf20109800f4d7b951087f66bb64f7c04f1a + checksum: f14c5595ba25f54a2274c1ec4b2d19b195108f05ac34960a0ec8c03499f2090faa9937428ed1d189597fb675733b4d68d092d98c18319e0ef6efa530d12c605b languageName: node linkType: hard -"@react-pdf/layout@npm:^3.6.2": - version: 3.6.2 - resolution: "@react-pdf/layout@npm:3.6.2" +"@react-pdf/layout@npm:^3.6.3": + version: 3.6.3 + resolution: "@react-pdf/layout@npm:3.6.3" dependencies: "@babel/runtime": ^7.20.13 "@react-pdf/fns": 2.0.1 - "@react-pdf/image": ^2.2.1 + "@react-pdf/image": ^2.2.2 "@react-pdf/pdfkit": ^3.0.2 "@react-pdf/primitives": ^3.0.0 - "@react-pdf/stylesheet": ^4.1.7 + "@react-pdf/stylesheet": ^4.1.8 "@react-pdf/textkit": ^4.2.0 - "@react-pdf/types": ^2.3.3 + "@react-pdf/types": ^2.3.4 "@react-pdf/yoga": ^4.1.2 cross-fetch: ^3.1.5 emoji-regex: ^10.2.1 queue: ^6.0.1 - checksum: 15816b14aa7ba8720ea5da88f3cf269070c189a2600959c61c92314aebf04e72c691df6947a1bda04d61a561ee68b046e1c8110960da121ffb63badb3d893d08 + checksum: 812b5f3c3f27fba2fc6a15c35a3e9191e4d6407ff4a23a96c2d99889842c26f15bf03531e67c607cc2114ed731739d03f02c934926db7bc05926ef29ed959dad languageName: node linkType: hard @@ -6748,35 +6668,35 @@ __metadata: languageName: node linkType: hard -"@react-pdf/render@npm:^3.2.6": - version: 3.2.6 - resolution: "@react-pdf/render@npm:3.2.6" +"@react-pdf/render@npm:^3.2.7": + version: 3.2.7 + resolution: "@react-pdf/render@npm:3.2.7" dependencies: "@babel/runtime": ^7.20.13 "@react-pdf/fns": 2.0.1 "@react-pdf/primitives": ^3.0.0 "@react-pdf/textkit": ^4.2.0 - "@react-pdf/types": ^2.3.3 + "@react-pdf/types": ^2.3.4 abs-svg-path: ^0.1.1 color-string: ^1.5.3 normalize-svg-path: ^1.1.0 parse-svg-path: ^0.1.2 svg-arc-to-cubic-bezier: ^3.2.0 - checksum: 9d0bde1e5042db8a251e474092415bd49ed4b01d7d1d404e50e6f7480d282cf59f51ed9fe08deed633aefcdcee424dd955bf4e659471905326e2911e672db925 + checksum: 74bb7190d006fee7b2df074bb28ade1f0bdf4a20a33998cdc2826974f4b4fc3622e660a598a4f4623046c12009bc3b663aa8701d9361a487334b84c7c2512de7 languageName: node linkType: hard -"@react-pdf/renderer@npm:^3.1.12": - version: 3.1.12 - resolution: "@react-pdf/renderer@npm:3.1.12" +"@react-pdf/renderer@npm:^3.1.14": + version: 3.1.14 + resolution: "@react-pdf/renderer@npm:3.1.14" dependencies: "@babel/runtime": ^7.20.13 - "@react-pdf/font": ^2.3.6 - "@react-pdf/layout": ^3.6.2 + "@react-pdf/font": ^2.3.7 + "@react-pdf/layout": ^3.6.3 "@react-pdf/pdfkit": ^3.0.2 "@react-pdf/primitives": ^3.0.0 - "@react-pdf/render": ^3.2.6 - "@react-pdf/types": ^2.3.3 + "@react-pdf/render": ^3.2.7 + "@react-pdf/types": ^2.3.4 events: ^3.3.0 object-assign: ^4.1.1 prop-types: ^15.6.2 @@ -6784,22 +6704,22 @@ __metadata: scheduler: ^0.17.0 peerDependencies: react: ^16.8.6 || ^17.0.0 || ^18.0.0 - checksum: 7fa9779c8594e8e650fc121de5b89a40268ccab62b89a87c32f110bb4ea97adacd1d0fb2893533e3834613478bed71de2c1161e88e42916862b1523d7f10367e + checksum: f0313c066b5e9f34e87940a86dd344d07347829781407ea9e7d24480213624b8d0457a8258c09b62c6cfe145120f4e06978ebf7d18e7272a2e8a7d21f02c6202 languageName: node linkType: hard -"@react-pdf/stylesheet@npm:^4.1.7": - version: 4.1.7 - resolution: "@react-pdf/stylesheet@npm:4.1.7" +"@react-pdf/stylesheet@npm:^4.1.8": + version: 4.1.8 + resolution: "@react-pdf/stylesheet@npm:4.1.8" dependencies: "@babel/runtime": ^7.20.13 "@react-pdf/fns": 2.0.1 - "@react-pdf/types": ^2.3.3 + "@react-pdf/types": ^2.3.4 color-string: ^1.5.3 hsl-to-hex: ^1.0.0 media-engine: ^1.0.3 postcss-value-parser: ^4.1.0 - checksum: f120ebe017fe48db6559105f080619b0f1f37931a87da9d1f3ac64ab75792c320ba08c4ee85e907040546b99e37d62e1571bc2de5e5cbbcf8891a6521b46bd3a + checksum: c5339fdb49ee0420a6633e0955632073440fb0d235f0153164dae17401c5880995cf835c8ca1cf81a23ba83e4377439584ee86d2ab695796f01030791ab4f31f languageName: node linkType: hard @@ -6815,10 +6735,10 @@ __metadata: languageName: node linkType: hard -"@react-pdf/types@npm:^2.3.3": - version: 2.3.3 - resolution: "@react-pdf/types@npm:2.3.3" - checksum: f4d9e5ba0b8481cb485d17922079f320de469500495f9bbd06161fca7e9deb127ea860c38c34f01d1339c519e032c0d9f63ea681c13eeedee2c8ef5cc0b79d19 +"@react-pdf/types@npm:^2.3.4": + version: 2.3.4 + resolution: "@react-pdf/types@npm:2.3.4" + checksum: 3aa1b00581c69b5078fbc946d7c86abc984c2bef6a1b4b51e236be6719efd6773f794d390356df6d8355aa3c1f5a3a4a4bdca1e2d3c31fe3d3bf55250e405b02 languageName: node linkType: hard @@ -7783,10 +7703,10 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next - "@types/bcrypt": ^5.0.0 - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/bcrypt": ^5.0.1 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 bcrypt: ^5.0.1 ejson: ^2.2.3 eslint: ~8.45.0 @@ -7795,14 +7715,14 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.4.0 pino: ^8.15.0 polka: ^0.5.2 ts-node: ^10.9.1 typescript: ~5.2.2 - uuid: ^9.0.0 + uuid: ^9.0.1 languageName: unknown linkType: soft @@ -7810,9 +7730,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/account-utils@workspace:packages/account-utils" dependencies: - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -7822,14 +7742,14 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/agenda@workspace:packages/agenda" dependencies: - "@types/debug": ^4.1.8 - "@types/jest": ~29.5.3 + "@types/debug": ^4.1.10 + "@types/jest": ~29.5.7 cron: ~1.8.2 date.js: ~0.3.3 debug: ~4.1.1 eslint: ~8.45.0 human-interval: ^2.0.1 - jest: ~29.6.1 + jest: ~29.6.4 moment-timezone: ~0.5.43 mongodb: ^4.17.1 ts-jest: ~29.0.5 @@ -7843,13 +7763,13 @@ __metadata: dependencies: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@swc/core": ^1.3.66 - "@swc/jest": ^0.2.26 - "@types/jest": ~29.5.3 - "@types/strict-uri-encode": ^2.0.0 + "@swc/core": ^1.3.95 + "@swc/jest": ^0.2.29 + "@types/jest": ~29.5.7 + "@types/strict-uri-encode": ^2.0.1 eslint: ~8.45.0 filter-obj: ^3.0.0 - jest: ~29.6.1 + jest: ~29.6.4 jest-fetch-mock: ^3.0.3 query-string: ^7.1.3 split-on-first: ^3.0.0 @@ -7907,9 +7827,9 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 ejson: ^2.2.3 eslint: ~8.45.0 event-loop-stats: ^1.4.1 @@ -7917,7 +7837,7 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.4.0 pino: ^8.15.0 @@ -7931,13 +7851,13 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/base64@workspace:packages/base64" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 "@rocket.chat/eslint-config": "workspace:^" "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -7947,10 +7867,10 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/cas-validate@workspace:packages/cas-validate" dependencies: - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 cheerio: 1.0.0-rc.10 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -7960,9 +7880,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/core-services@workspace:packages/core-services" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 - "@babel/preset-typescript": ~7.22.5 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 + "@babel/preset-typescript": ~7.22.15 "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" @@ -7971,14 +7891,14 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/ui-kit": ^0.32.1 - "@types/babel__core": ^7 - "@types/babel__preset-env": ^7 - "@types/fibers": ^3.1.1 - "@types/jest": ~29.5.3 + "@types/babel__core": ^7.20.3 + "@types/babel__preset-env": ^7.9.4 + "@types/fibers": ^3.1.3 + "@types/jest": ~29.5.7 babel-jest: ^29.5.0 eslint: ~8.45.0 fibers: ^5.0.3 - jest: ~29.6.1 + jest: ~29.6.4 mongodb: ^4.17.1 prettier: ~2.8.8 typescript: ~5.2.2 @@ -8009,9 +7929,9 @@ __metadata: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/random": "workspace:^" - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 mongodb: ^4.17.1 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -8059,13 +7979,13 @@ __metadata: dependencies: "@rocket.chat/api-client": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@swc/core": ^1.3.66 - "@swc/jest": ^0.2.26 - "@types/jest": ~29.5.3 - "@types/ws": ^8.5.5 + "@swc/core": ^1.3.95 + "@swc/jest": ^0.2.29 + "@types/jest": ~29.5.7 + "@types/ws": ^8.5.8 eslint: ~8.45.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 jest-websocket-mock: ^2.4.0 typescript: ~5.2.2 ws: ^8.13.0 @@ -8090,14 +8010,14 @@ __metadata: "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next "@rocket.chat/ui-contexts": "workspace:^" - "@types/ejson": ^2.2.0 - "@types/gc-stats": ^1 - "@types/meteor": ^2.9.2 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/ejson": ^2.2.1 + "@types/gc-stats": ^1.4.2 + "@types/meteor": ^2.9.5 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 "@types/sharp": ^0.30.5 "@types/uuid": ^8.3.4 - "@types/ws": ^8.5.5 + "@types/ws": ^8.5.8 colorette: ^1.4.0 ejson: ^2.2.3 eslint: ~8.45.0 @@ -8107,13 +8027,13 @@ __metadata: gc-stats: ^1.4.0 jaeger-client: ^3.19.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.4.0 pino: ^8.15.0 pino-pretty: ^7.6.1 polka: ^0.5.2 - sharp: ^0.30.7 + sharp: ^0.32.6 ts-node: ^10.9.1 typescript: ~5.2.2 underscore: ^1.13.6 @@ -8134,8 +8054,8 @@ __metadata: resolution: "@rocket.chat/eslint-config@workspace:packages/eslint-config" dependencies: "@babel/core": ^7.20.7 - "@babel/eslint-parser": ~7.22.9 - "@types/eslint": ~8.44.0 + "@babel/eslint-parser": ~7.22.15 + "@types/eslint": ~8.44.6 "@types/prettier": ^2.6.3 "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 @@ -8143,7 +8063,7 @@ __metadata: eslint-config-prettier: ~8.8.0 eslint-plugin-anti-trojan-source: ~1.1.1 eslint-plugin-import: ~2.26.0 - eslint-plugin-jest: ~27.2.2 + eslint-plugin-jest: ~27.2.3 eslint-plugin-prettier: ~4.2.1 prettier: ~2.8.8 languageName: unknown @@ -8184,31 +8104,7 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/forked-matrix-bot-sdk@npm:^0.6.0-beta.2": - version: 0.6.0-beta.2 - resolution: "@rocket.chat/forked-matrix-bot-sdk@npm:0.6.0-beta.2" - dependencies: - "@rocket.chat/forked-matrix-sdk-crypto-nodejs": ^0.1.0-beta.12 - "@types/express": ^4.17.13 - another-json: ^0.2.0 - chalk: ^4 - express: ^4.17.2 - glob-to-regexp: ^0.4.1 - hash.js: ^1.1.7 - html-to-text: ^8.1.0 - htmlencode: ^0.0.4 - lowdb: ^1 - lru-cache: ^6.0.0 - mkdirp: ^1.0.4 - morgan: ^1.10.0 - request: ^2.88.2 - request-promise: ^4.2.6 - sanitize-html: ^2.6.1 - checksum: f2ce128ab6d93289d711161c217ad0d2c0b879ae37c8c5527b3aea7294845c19f713f69fccde65d260f07780777be80718b73e8bdc38a6c65cba94a94fd7d85d - languageName: node - linkType: hard - -"@rocket.chat/forked-matrix-bot-sdk@npm:^0.6.0-beta.3": +"@rocket.chat/forked-matrix-bot-sdk@npm:^0.6.0-beta.2, @rocket.chat/forked-matrix-bot-sdk@npm:^0.6.0-beta.3": version: 0.6.0-beta.3 resolution: "@rocket.chat/forked-matrix-bot-sdk@npm:0.6.0-beta.3" dependencies: @@ -8293,10 +8189,10 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/fuselage-ui-kit@workspace:packages/fuselage-ui-kit" dependencies: - "@babel/core": ~7.22.10 - "@babel/preset-env": ~7.22.10 - "@babel/preset-react": ~7.22.5 - "@babel/preset-typescript": ~7.22.5 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 + "@babel/preset-react": ~7.22.15 + "@babel/preset-typescript": ~7.22.15 "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/fuselage": ^0.37.1 @@ -8317,10 +8213,10 @@ __metadata: "@storybook/source-loader": ~6.5.16 "@storybook/theming": ~6.5.16 "@tanstack/react-query": ^4.16.1 - "@types/babel__core": ^7 - "@types/babel__preset-env": ^7 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 + "@types/babel__core": ^7.20.3 + "@types/babel__preset-env": ^7.9.4 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 babel-loader: ~8.2.5 cross-env: ^7.0.3 eslint: ~8.45.0 @@ -8329,6 +8225,7 @@ __metadata: prettier: ~2.8.8 react-docgen-typescript-plugin: ~1.0.5 react-dom: ^17.0.2 + react-i18next: ~13.2.2 rimraf: ^3.0.2 storybook-dark-mode: ~3.0.1 tslib: ^2.5.3 @@ -8342,9 +8239,9 @@ __metadata: "@rocket.chat/icons": "*" "@rocket.chat/prettier-config": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-contexts": 2.0.5 + "@rocket.chat/ui-contexts": 3.0.0-rc.7 "@rocket.chat/ui-kit": "*" - "@rocket.chat/ui-video-conf": 2.0.5 + "@rocket.chat/ui-video-conf": 3.0.0-rc.7 "@tanstack/react-query": "*" react: "*" react-dom: "*" @@ -8379,7 +8276,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/gazzodown@workspace:packages/gazzodown" dependencies: - "@babel/core": ~7.22.9 + "@babel/core": ~7.22.20 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": next "@rocket.chat/fuselage": ^0.37.1 @@ -8397,15 +8294,15 @@ __metadata: "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": ~0.0.13 - "@swc/core": ^1.3.66 - "@swc/jest": ^0.2.26 + "@swc/core": ^1.3.95 + "@swc/jest": ^0.2.29 "@testing-library/jest-dom": ^5.16.5 "@testing-library/react": ~12.1.5 - "@types/jest": ~29.5.3 - "@types/katex": ~0.16.0 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 - "@types/testing-library__jest-dom": ~5.14.6 + "@types/jest": ~29.5.7 + "@types/katex": ~0.16.5 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 + "@types/testing-library__jest-dom": ~5.14.9 "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 babel-loader: ^8.3.0 @@ -8413,12 +8310,12 @@ __metadata: eslint-plugin-anti-trojan-source: ~1.1.1 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-storybook: ~0.6.12 + eslint-plugin-storybook: ~0.6.15 highlight.js: ^11.5.1 identity-obj-proxy: ^3.0.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 - katex: ~0.16.7 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 + katex: ~0.16.9 outdent: ^0.8.0 react-docgen-typescript-plugin: ~1.0.5 react-dom: ~17.0.2 @@ -8432,8 +8329,8 @@ __metadata: "@rocket.chat/fuselage-tokens": "*" "@rocket.chat/message-parser": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-client": 2.0.5 - "@rocket.chat/ui-contexts": 2.0.5 + "@rocket.chat/ui-client": 3.0.0-rc.7 + "@rocket.chat/ui-contexts": 3.0.0-rc.7 katex: "*" react: "*" languageName: unknown @@ -8443,11 +8340,11 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/i18n@workspace:packages/i18n" dependencies: - "@babel/core": ~7.22.10 - "@babel/preset-env": ~7.22.10 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 babel-jest: ^29.5.0 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 tsup: ^6.7.0 typescript: ~5.2.2 @@ -8478,9 +8375,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/jwt@workspace:packages/jwt" dependencies: - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 jose: ^4.14.4 ts-jest: ^29.1.1 typescript: ~5.2.2 @@ -8506,15 +8403,15 @@ __metadata: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/jwt": "workspace:^" "@rocket.chat/logger": "workspace:^" - "@swc/core": ^1.3.66 - "@swc/jest": ^0.2.26 - "@types/bcrypt": ^5.0.0 - "@types/jest": ~29.5.3 - "@types/ws": ^8.5.5 + "@swc/core": ^1.3.95 + "@swc/jest": ^0.2.29 + "@types/bcrypt": ^5.0.1 + "@types/jest": ~29.5.7 + "@types/ws": ^8.5.8 bcrypt: ^5.0.1 eslint: ~8.45.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 jest-websocket-mock: ^2.4.0 ts-jest: ~29.0.5 typescript: ^5.2.2 @@ -8525,9 +8422,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/livechat@workspace:packages/livechat" dependencies: - "@babel/eslint-parser": ~7.22.9 - "@babel/preset-env": ~7.22.9 - "@babel/preset-typescript": ~7.22.5 + "@babel/eslint-parser": ~7.22.15 + "@babel/preset-env": ~7.22.20 + "@babel/preset-typescript": ~7.22.15 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/ddp-client": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" @@ -8542,10 +8439,10 @@ __metadata: "@storybook/addon-postcss": ~2.0.0 "@storybook/preact": ~6.5.16 "@storybook/theming": ~6.5.16 - "@types/crypto-js": ~4.1.1 + "@types/crypto-js": ~4.1.3 "@types/mini-css-extract-plugin": ~1.4.3 "@types/webpack": ^5.28.4 - "@types/webpack-bundle-analyzer": ^4 + "@types/webpack-bundle-analyzer": ^4.6.2 "@types/webpack-dev-server": ~4.7.2 "@types/whatwg-fetch": ~0.0.33 "@typescript-eslint/eslint-plugin": ~5.60.1 @@ -8568,7 +8465,7 @@ __metadata: history: ~5.3.0 html-webpack-plugin: ^5.5.3 husky: ^4.3.8 - i18next: ~23.4.5 + i18next: ~23.4.9 if-env: ^1.0.4 image-webpack-loader: ~8.1.0 lorem-ipsum: ^2.0.8 @@ -8583,14 +8480,14 @@ __metadata: postcss-ie11-supports: ^0.1.3 postcss-loader: ^3.0.0 postcss-logical: ^4.0.2 - postcss-scss: ^4.0.6 + postcss-scss: ^4.0.9 postcss-selector-not: ^4.0.1 preact: 10.15.1 preact-router: ^3.2.1 query-string: ^7.1.3 react-dom: ~17.0.2 react-hook-form: ~7.45.4 - react-i18next: ~13.2.1 + react-i18next: ~13.2.2 rimraf: ^3.0.2 sass: ~1.62.1 sass-loader: ~10.4.1 @@ -8603,10 +8500,10 @@ __metadata: typescript: ~5.2.2 url-loader: ^4.1.1 webpack: ^5.89.0 - webpack-bundle-analyzer: ^4.9.0 + webpack-bundle-analyzer: ^4.9.1 webpack-cli: ^5.1.4 webpack-dev-server: ~4.13.3 - whatwg-fetch: ^3.6.2 + whatwg-fetch: ^3.6.19 peerDependencies: "@rocket.chat/fuselage-tokens": "*" "@rocket.chat/logo": "*" @@ -8618,12 +8515,12 @@ __metadata: resolution: "@rocket.chat/log-format@workspace:packages/log-format" dependencies: "@types/chalk": ^2.2.0 - "@types/ejson": ^2.2.0 - "@types/jest": ~29.5.3 + "@types/ejson": ^2.2.1 + "@types/jest": ~29.5.7 chalk: ^4.0.0 ejson: ^2.2.3 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -8634,9 +8531,9 @@ __metadata: resolution: "@rocket.chat/logger@workspace:packages/logger" dependencies: "@rocket.chat/emitter": next - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 pino: ^8.15.0 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -8684,14 +8581,14 @@ __metadata: resolution: "@rocket.chat/meteor@workspace:apps/meteor" dependencies: "@axe-core/playwright": ^4.7.3 - "@babel/core": ~7.22.9 - "@babel/eslint-parser": ~7.22.9 + "@babel/core": ~7.22.20 + "@babel/eslint-parser": ~7.22.15 "@babel/plugin-proposal-nullish-coalescing-operator": ~7.18.6 "@babel/plugin-proposal-optional-chaining": ~7.21.0 - "@babel/preset-env": ~7.22.9 - "@babel/preset-react": ~7.22.5 - "@babel/register": ~7.22.5 - "@babel/runtime": ~7.22.6 + "@babel/preset-env": ~7.22.20 + "@babel/preset-react": ~7.22.15 + "@babel/register": ~7.22.15 + "@babel/runtime": ~7.22.15 "@bugsnag/js": ~7.20.2 "@bugsnag/plugin-react": ~7.19.0 "@faker-js/faker": ~8.0.2 @@ -8704,7 +8601,7 @@ __metadata: "@nivo/pie": 0.80.0 "@playwright/test": ^1.37.1 "@react-aria/color": ^3.0.0-beta.15 - "@react-pdf/renderer": ^3.1.12 + "@react-pdf/renderer": ^3.1.14 "@rocket.chat/account-utils": "workspace:^" "@rocket.chat/agenda": "workspace:^" "@rocket.chat/api-client": "workspace:^" @@ -8773,89 +8670,89 @@ __metadata: "@storybook/addons": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": 0.0.13 - "@swc/core": ^1.3.66 - "@swc/jest": ^0.2.26 + "@swc/core": ^1.3.95 + "@swc/jest": ^0.2.29 "@tanstack/react-query": ^4.16.1 "@tanstack/react-query-devtools": ^4.19.1 "@testing-library/react": ~12.1.5 "@testing-library/react-hooks": ^8.0.1 "@testing-library/user-event": ~13.5.0 - "@types/adm-zip": ^0.5.0 - "@types/archiver": ^5.3.2 - "@types/bad-words": ^3.0.1 - "@types/bcrypt": ^5.0.0 - "@types/body-parser": ^1.19.2 - "@types/busboy": ^1.5.0 - "@types/chai": ^4.3.5 - "@types/chai-as-promised": ^7.1.5 - "@types/chai-datetime": 0.0.37 - "@types/chai-dom": 0.0.13 - "@types/chai-spies": ~1.0.3 + "@types/adm-zip": ^0.5.3 + "@types/archiver": ^5.3.4 + "@types/bad-words": ^3.0.2 + "@types/bcrypt": ^5.0.1 + "@types/body-parser": ^1.19.4 + "@types/busboy": ^1.5.2 + "@types/chai": ^4.3.9 + "@types/chai-as-promised": ^7.1.7 + "@types/chai-datetime": 0.0.38 + "@types/chai-dom": 1.11.2 + "@types/chai-spies": ~1.0.5 "@types/clipboard": ^2.0.7 - "@types/codemirror": ^5.60.8 - "@types/cookie": ^0.5.1 - "@types/cookie-parser": ^1.4.3 - "@types/cors": ^2.8.13 - "@types/cssom": ^0.4.1 + "@types/codemirror": ^5.60.12 + "@types/cookie": ^0.5.3 + "@types/cookie-parser": ^1.4.5 + "@types/cors": ^2.8.15 + "@types/cssom": ^0.4.2 "@types/dompurify": ^2.3.3 - "@types/ejson": ^2.2.0 - "@types/express": ^4.17.17 + "@types/ejson": ^2.2.1 + "@types/express": ^4.17.20 "@types/express-rate-limit": ^5.1.3 - "@types/fibers": ^3.1.1 - "@types/google-libphonenumber": ^7.4.23 - "@types/gravatar": ^1.8.3 + "@types/fibers": ^3.1.3 + "@types/google-libphonenumber": ^7.4.29 + "@types/gravatar": ^1.8.5 "@types/he": ^1.1.2 - "@types/i18next-sprintf-postprocessor": ^0.2.0 - "@types/imap": ^0.8.37 + "@types/i18next-sprintf-postprocessor": ^0.2.2 + "@types/imap": ^0.8.39 "@types/jsdom": ^16.2.15 - "@types/jsdom-global": ^3.0.4 - "@types/jsrsasign": ^10.5.8 + "@types/jsdom-global": ^3.0.6 + "@types/jsrsasign": ^10.5.11 "@types/katex": ^0.14.0 - "@types/later": ^1.2.7 + "@types/later": ^1.2.8 "@types/ldapjs": ^2.2.5 - "@types/less": ~3.0.3 - "@types/lodash": ^4.14.195 - "@types/lodash.debounce": ^4.0.7 - "@types/lodash.get": ^4.4.7 - "@types/mailparser": ^3.4.0 + "@types/less": ~3.0.5 + "@types/lodash": ^4.14.200 + "@types/lodash.debounce": ^4.0.8 + "@types/lodash.get": ^4.4.8 + "@types/mailparser": ^3.4.3 "@types/marked": ^4.0.8 - "@types/meteor-collection-hooks": ^0.8.6 + "@types/meteor-collection-hooks": ^0.8.8 "@types/mkdirp": ^1.0.2 "@types/mocha": "github:whitecolor/mocha-types" "@types/moment-timezone": ^0.5.30 - "@types/node": ^14.18.51 - "@types/node-gcm": ^1.0.1 - "@types/node-rsa": ^1.1.1 - "@types/nodemailer": ^6.4.8 - "@types/oauth2-server": ^3.0.13 - "@types/object-path": ^0.11.1 - "@types/parseurl": ^1.3.1 - "@types/photoswipe": ^4.1.2 - "@types/prometheus-gc-stats": ^0.6.2 - "@types/proxy-from-env": ^1.0.1 - "@types/proxyquire": ^1.3.28 - "@types/psl": ^1.1.0 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 - "@types/rewire": ^2.5.28 - "@types/sanitize-html": ^2.9.0 + "@types/node": ^14.18.63 + "@types/node-gcm": ^1.0.3 + "@types/node-rsa": ^1.1.3 + "@types/nodemailer": ^6.4.13 + "@types/oauth2-server": ^3.0.15 + "@types/object-path": ^0.11.3 + "@types/parseurl": ^1.3.2 + "@types/photoswipe": ^4.1.5 + "@types/prometheus-gc-stats": ^0.6.3 + "@types/proxy-from-env": ^1.0.3 + "@types/proxyquire": ^1.3.30 + "@types/psl": ^1.1.2 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 + "@types/rewire": ^2.5.29 + "@types/sanitize-html": ^2.9.3 "@types/semver": ^7.3.10 "@types/sharp": ^0.30.5 - "@types/sinon": ^10.0.15 - "@types/speakeasy": ^2.0.7 - "@types/strict-uri-encode": ^2.0.0 + "@types/sinon": ^10.0.20 + "@types/speakeasy": ^2.0.9 + "@types/strict-uri-encode": ^2.0.1 "@types/string-strip-html": ^5.0.1 - "@types/supertest": ^2.0.12 - "@types/textarea-caret": ^3.0.1 - "@types/ua-parser-js": ^0.7.36 - "@types/use-subscription": ^1.0.0 - "@types/use-sync-external-store": ^0.0.3 + "@types/supertest": ^2.0.15 + "@types/textarea-caret": ^3.0.2 + "@types/ua-parser-js": ^0.7.38 + "@types/use-subscription": ^1.0.1 + "@types/use-sync-external-store": ^0.0.5 "@types/uuid": ^8.3.4 - "@types/xml-crypto": ~1.4.2 - "@types/xml-encryption": ~1.2.1 + "@types/xml-crypto": ~1.4.4 + "@types/xml-encryption": ~1.2.3 "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 - "@xmldom/xmldom": ^0.8.8 + "@xmldom/xmldom": ^0.8.10 adm-zip: 0.5.10 ajv: ^8.11.0 ajv-formats: ~2.1.1 @@ -8875,7 +8772,7 @@ __metadata: bson: ^4.6.4 busboy: ^1.6.0 bytebuffer: 5.0.1 - chai: ^4.3.7 + chai: ^4.3.10 chai-as-promised: ^7.1.1 chai-datetime: ^1.8.0 chai-dom: ^1.11.0 @@ -8884,7 +8781,7 @@ __metadata: change-case: ^4.1.2 chart.js: ^3.8.0 clipboard: ^2.0.11 - codemirror: ^5.65.13 + codemirror: ^5.65.15 colorette: ^2.0.20 colors: ^1.4.0 connect: ^3.7.0 @@ -8909,11 +8806,11 @@ __metadata: eslint-plugin-anti-trojan-source: ~1.1.1 eslint-plugin-import: ~2.26.0 eslint-plugin-no-floating-promise: ~1.0.2 - eslint-plugin-playwright: ~0.15.0 + eslint-plugin-playwright: ~0.15.3 eslint-plugin-prettier: ~4.2.1 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-testing-library: ~5.11.0 + eslint-plugin-testing-library: ~5.11.1 eslint-plugin-you-dont-need-lodash-underscore: ~6.12.0 eventemitter3: ^4.0.7 exif-be-gone: ^1.3.2 @@ -8926,8 +8823,8 @@ __metadata: file-type: ^16.5.4 filenamify: ^4.3.0 filesize: 9.0.11 - generate-password: ^1.7.0 - google-libphonenumber: ^3.2.32 + generate-password: ^1.7.1 + google-libphonenumber: ^3.2.33 googleapis: ^104.0.0 gravatar: ^1.8.2 he: ^1.2.0 @@ -8935,7 +8832,7 @@ __metadata: hljs9: "npm:highlight.js@^9.18.5" http-proxy-agent: ^5.0.0 human-interval: ^2.0.1 - i18next: ~23.4.5 + i18next: ~23.4.9 i18next-http-backend: ^1.4.5 i18next-sprintf-postprocessor: ^0.2.2 iconv-lite: ^0.6.3 @@ -8944,14 +8841,14 @@ __metadata: ip-range-check: ^0.2.0 is-svg: ^4.3.2 isolated-vm: 4.4.2 - jest: ~29.6.1 + jest: ~29.6.4 jquery: ^3.6.0 jschardet: ^3.0.0 jsdom: ^16.7.0 jsdom-global: ^3.0.2 jsrsasign: ^10.5.24 juice: ^8.0.0 - katex: ^0.16.7 + katex: ~0.16.9 ldap-escape: ^2.0.6 ldapjs: ^2.3.3 limax: ^3.0.0 @@ -8967,7 +8864,7 @@ __metadata: mime-type: ^4.0.0 mkdirp: ^1.0.4 mocha: ^9.2.2 - moleculer: ^0.14.29 + moleculer: ^0.14.31 moment: ^2.29.4 moment-timezone: ^0.5.43 mongo-message-queue: ^1.0.0 @@ -8989,8 +8886,8 @@ __metadata: photoswipe: ^4.1.3 pino: ^8.15.0 pino-pretty: ^7.6.1 - playwright-qase-reporter: ^1.2.0-alpha.3 - postcss: ~8.4.24 + playwright-qase-reporter: ^1.2.1 + postcss: ~8.4.31 postcss-custom-properties: ^11.0.0 postcss-easy-import: ^3.0.0 postcss-load-config: ^3.1.4 @@ -9000,27 +8897,27 @@ __metadata: postis: ^2.2.0 prettier: ~2.8.8 prom-client: ^14.0.1 - prometheus-gc-stats: ^0.6.4 + prometheus-gc-stats: ^0.6.5 proxy-from-env: ^1.1.0 proxyquire: ^2.1.3 psl: ^1.8.0 query-string: ^7.1.3 queue-fifo: ^0.2.6 - rc-scrollbars: ^1.1.5 + rc-scrollbars: ^1.1.6 react: ~17.0.2 react-aria: ~3.23.1 react-docgen-typescript-plugin: ^1.0.5 react-dom: ~17.0.2 react-error-boundary: ^3.1.4 react-hook-form: ~7.45.4 - react-i18next: ~13.2.1 + react-i18next: ~13.2.2 react-keyed-flatten-children: ^1.3.0 react-virtuoso: ^1.11.1 redis: ^4.0.6 rewire: ^6.0.0 sanitize-html: ^2.7.2 semver: ^7.3.7 - sharp: ^0.30.7 + sharp: ^0.32.6 sinon: ^14.0.2 sip.js: ^0.20.1 sodium-native: ^3.3.0 @@ -9043,7 +8940,7 @@ __metadata: twilio: ^3.76.1 twit: ^2.2.11 typescript: ~5.2.2 - ua-parser-js: ^1.0.35 + ua-parser-js: ^1.0.37 underscore: ^1.13.6 universal-perf-hooks: ^1.0.1 url-polyfill: ^1.1.12 @@ -9051,7 +8948,7 @@ __metadata: use-sync-external-store: ^1.2.0 uuid: ^8.3.2 vm2: ^3.9.19 - webdav: ^4.11.2 + webdav: ^4.11.3 xml-crypto: ~3.1.0 xml-encryption: ~3.0.2 xml2js: ~0.5.0 @@ -9067,12 +8964,12 @@ __metadata: "@rocket.chat/ui-contexts": "workspace:*" "@storybook/react": ~6.5.16 "@tanstack/react-query": ^4.16.1 - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - i18next: ~23.4.5 - jest: ~29.6.1 + i18next: ~23.4.9 + jest: ~29.6.4 react: ~17.0.2 - react-i18next: ~13.2.1 + react-i18next: ~13.2.2 ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: @@ -9086,10 +8983,10 @@ __metadata: resolution: "@rocket.chat/model-typings@workspace:packages/model-typings" dependencies: "@rocket.chat/core-typings": "workspace:^" - "@types/jest": ~29.5.3 - "@types/node-rsa": ^1.1.1 + "@types/jest": ~29.5.7 + "@types/node-rsa": ^1.1.3 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 mongodb: ^4.17.1 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -9101,9 +8998,9 @@ __metadata: resolution: "@rocket.chat/models@workspace:packages/models" dependencies: "@rocket.chat/model-typings": "workspace:^" - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -9133,14 +9030,14 @@ __metadata: "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next "@rocket.chat/tools": "workspace:^" - "@types/jest": ~29.5.3 - "@types/node": ^14.18.51 + "@types/jest": ~29.5.7 + "@types/node": ^14.18.63 ejson: ^2.2.3 emoji-toolkit: ^7.0.1 eslint: ~8.45.0 eventemitter3: ^4.0.7 fibers: ^5.0.3 - jest: ~29.6.1 + jest: ~29.6.4 mem: ^8.1.1 moment-timezone: ^0.5.43 mongo-message-queue: ^1.0.0 @@ -9155,7 +9052,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/omnichannel-transcript@workspace:ee/apps/omnichannel-transcript" dependencies: - "@react-pdf/renderer": ^3.1.12 + "@react-pdf/renderer": ^3.1.14 "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next @@ -9167,9 +9064,9 @@ __metadata: "@rocket.chat/pdf-worker": "workspace:^" "@rocket.chat/tools": "workspace:^" "@rocket.chat/ui-contexts": "workspace:^" - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 ejson: ^2.2.3 emoji-toolkit: ^7.0.1 eslint: ~8.45.0 @@ -9178,7 +9075,7 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 moment-timezone: ^0.5.43 mongo-message-queue: ^1.0.0 mongodb: ^4.17.1 @@ -9215,11 +9112,11 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/password-policies@workspace:packages/password-policies" dependencies: - "@types/chai": ^4.3.5 - "@types/jest": ~29.5.3 - chai: ^4.3.7 + "@types/chai": ^4.3.9 + "@types/jest": ~29.5.7 + chai: ^4.3.10 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -9229,23 +9126,23 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/pdf-worker@workspace:ee/packages/pdf-worker" dependencies: - "@react-pdf/renderer": ^3.1.12 + "@react-pdf/renderer": ^3.1.14 "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/fuselage-tokens": ^0.32.0 "@storybook/addon-essentials": ~6.5.16 "@storybook/react": ~6.5.16 "@testing-library/jest-dom": ^5.16.5 "@testing-library/react": ~13.4.0 - "@types/emojione": ^2.2.6 - "@types/jest": ~29.5.3 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 - "@types/testing-library__jest-dom": ~5.14.6 + "@types/emojione": ^2.2.8 + "@types/jest": ~29.5.7 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 + "@types/testing-library__jest-dom": ~5.14.9 emoji-assets: ^7.0.1 emoji-toolkit: ^7.0.1 eslint: ~8.45.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 moment: ^2.29.4 moment-timezone: ^0.5.43 react: ^18.2.0 @@ -9259,9 +9156,9 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/poplib@workspace:packages/node-poplib" dependencies: - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -9279,9 +9176,9 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/presence": "workspace:^" "@rocket.chat/string-helpers": next - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 ejson: ^2.2.3 eslint: ~8.45.0 event-loop-stats: ^1.4.1 @@ -9289,7 +9186,7 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.4.0 pino: ^8.15.0 @@ -9303,19 +9200,19 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/presence@workspace:ee/packages/presence" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 - "@babel/preset-typescript": ~7.22.5 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 + "@babel/preset-typescript": ~7.22.15 "@rocket.chat/apps-engine": 1.41.0-alpha.290 "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@types/node": ^14.18.51 + "@types/node": ^14.18.63 babel-jest: ^29.0.3 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 mongodb: ^4.17.1 typescript: ~5.2.2 languageName: unknown @@ -9334,7 +9231,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/queue-worker@workspace:ee/apps/queue-worker" dependencies: - "@react-pdf/renderer": ^3.1.12 + "@react-pdf/renderer": ^3.1.14 "@rocket.chat/core-services": "workspace:^" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/emitter": next @@ -9343,9 +9240,9 @@ __metadata: "@rocket.chat/model-typings": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/omnichannel-services": "workspace:^" - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 ejson: ^2.2.3 emoji-toolkit: ^7.0.1 eslint: ~8.45.0 @@ -9354,7 +9251,7 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 moment-timezone: ^0.5.43 mongo-message-queue: ^1.0.0 mongodb: ^4.17.1 @@ -9370,14 +9267,14 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/random@workspace:packages/random" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 "@rocket.chat/eslint-config": "workspace:^" "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 eslint: ~8.45.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -9387,12 +9284,12 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/release-action@workspace:packages/release-action" dependencies: - "@actions/core": ^1.10.0 + "@actions/core": ^1.10.1 "@actions/exec": ^1.1.1 "@actions/github": ^5.1.1 "@octokit/plugin-throttling": ^6.0.0 "@rocket.chat/eslint-config": "workspace:^" - "@types/node": ^16.18.36 + "@types/node": ^16.18.60 eslint: ~8.45.0 mdast-util-to-string: 2.0.0 remark-parse: 9.0.0 @@ -9413,12 +9310,12 @@ __metadata: "@rocket.chat/license": "workspace:^" "@rocket.chat/message-parser": next "@rocket.chat/ui-kit": ^0.32.1 - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 ajv: ^8.11.0 ajv-formats: ^2.1.1 eslint: ~8.45.0 - jest: ~29.6.1 - jest-environment-jsdom: ~29.6.1 + jest: ~29.6.4 + jest-environment-jsdom: ~29.6.4 mongodb: ^4.17.1 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -9443,9 +9340,9 @@ __metadata: resolution: "@rocket.chat/server-cloud-communication@workspace:packages/server-cloud-communication" dependencies: "@rocket.chat/license": "workspace:^" - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.1.6 languageName: unknown @@ -9455,12 +9352,12 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/server-fetch@workspace:packages/server-fetch" dependencies: - "@types/jest": ~29.5.3 - "@types/proxy-from-env": ^1.0.1 + "@types/jest": ~29.5.7 + "@types/proxy-from-env": ^1.0.3 eslint: ~8.45.0 http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.1 - jest: ~29.6.1 + jest: ~29.6.4 node-fetch: 2.3.0 proxy-from-env: ^1.1.0 ts-jest: ~29.0.5 @@ -9472,13 +9369,13 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/sha256@workspace:packages/sha256" dependencies: - "@babel/core": ~7.22.9 - "@babel/preset-env": ~7.22.9 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 "@rocket.chat/eslint-config": "workspace:^" "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 ts-jest: ~29.0.5 typescript: ~5.2.2 languageName: unknown @@ -9497,10 +9394,10 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next - "@types/bcrypt": ^5.0.0 - "@types/gc-stats": ^1 - "@types/node": ^14.18.51 - "@types/polka": ^0.5.4 + "@types/bcrypt": ^5.0.1 + "@types/gc-stats": ^1.4.2 + "@types/node": ^14.18.63 + "@types/polka": ^0.5.6 ejson: ^2.2.3 eslint: ~8.45.0 event-loop-stats: ^1.4.1 @@ -9508,7 +9405,7 @@ __metadata: fibers: ^5.0.3 gc-stats: ^1.4.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.4.0 pino: ^8.15.0 @@ -9554,13 +9451,13 @@ __metadata: languageName: node linkType: hard -"@rocket.chat/tools@workspace:^, @rocket.chat/tools@workspace:packages/tools": +"@rocket.chat/tools@workspace:^, @rocket.chat/tools@workspace:packages/tools, @rocket.chat/tools@workspace:~": version: 0.0.0-use.local resolution: "@rocket.chat/tools@workspace:packages/tools" dependencies: - "@types/jest": ~29.5.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 moment-timezone: ^0.5.43 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -9571,7 +9468,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/ui-client@workspace:packages/ui-client" dependencies: - "@babel/core": ~7.22.9 + "@babel/core": ~7.22.20 "@rocket.chat/css-in-js": next "@rocket.chat/fuselage": ^0.37.1 "@rocket.chat/fuselage-hooks": ^0.32.1 @@ -9588,21 +9485,21 @@ __metadata: "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": ~0.0.13 - "@swc/jest": ^0.2.26 + "@swc/jest": ^0.2.29 "@testing-library/jest-dom": ~5.16.5 - "@testing-library/react": ^12.1.2 + "@testing-library/react": ^12.1.5 "@testing-library/react-hooks": ^8.0.1 - "@types/babel__core": ~7.20.1 - "@types/jest": ~29.5.3 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 + "@types/babel__core": ~7.20.3 + "@types/jest": ~29.5.7 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 eslint: ~8.45.0 eslint-plugin-anti-trojan-source: ~1.1.1 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-storybook: ~0.6.12 - eslint-plugin-testing-library: ~5.11.0 - jest: ~29.6.1 + eslint-plugin-storybook: ~0.6.15 + eslint-plugin-testing-library: ~5.11.1 + jest: ~29.6.4 react: ^17.0.2 react-dom: ^17.0.2 react-hook-form: ~7.45.4 @@ -9613,7 +9510,7 @@ __metadata: "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" - "@rocket.chat/ui-contexts": 2.0.5 + "@rocket.chat/ui-contexts": 3.0.0-rc.7 react: ~17.0.2 languageName: unknown linkType: soft @@ -9622,7 +9519,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/ui-composer@workspace:packages/ui-composer" dependencies: - "@babel/core": ~7.22.9 + "@babel/core": ~7.22.20 "@rocket.chat/eslint-config": "workspace:^" "@rocket.chat/fuselage": ^0.37.1 "@rocket.chat/icons": ^0.32.0 @@ -9633,13 +9530,13 @@ __metadata: "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": ~0.0.13 - "@types/babel__core": ~7.20.1 - "@types/jest": ~29.5.3 + "@types/babel__core": ~7.20.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-storybook: ~0.6.12 - jest: ~29.6.1 + eslint-plugin-storybook: ~0.6.15 + jest: ~29.6.4 react-docgen-typescript-plugin: ~1.0.5 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -9660,13 +9557,13 @@ __metadata: "@rocket.chat/fuselage-hooks": ^0.32.1 "@rocket.chat/password-policies": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@types/jest": ~29.5.3 - "@types/react": ~17.0.62 - "@types/react-dom": ~17.0.20 - "@types/use-sync-external-store": ^0.0.3 + "@types/jest": ~29.5.7 + "@types/react": ~17.0.69 + "@types/react-dom": ~17.0.22 + "@types/use-sync-external-store": ^0.0.5 eslint: ~8.45.0 eslint-plugin-react-hooks: ^4.6.0 - jest: ~29.6.1 + jest: ~29.6.4 mongodb: ^4.17.1 react: ~17.0.2 ts-jest: ~29.0.5 @@ -9709,14 +9606,14 @@ __metadata: "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": ~0.0.13 - "@types/jest": ~29.5.3 - "@types/react": ~17.0.62 + "@types/jest": ~29.5.7 + "@types/react": ~17.0.69 eslint: ~8.45.0 eslint-plugin-anti-trojan-source: ~1.1.1 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-testing-library: ^5.11.0 - jest: ~29.6.1 + eslint-plugin-testing-library: ^5.11.1 + jest: ~29.6.4 react: ~17.0.2 react-docgen-typescript-plugin: ~1.0.5 ts-jest: ~29.0.5 @@ -9734,7 +9631,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/ui-video-conf@workspace:packages/ui-video-conf" dependencies: - "@babel/core": ~7.22.9 + "@babel/core": ~7.22.20 "@rocket.chat/css-in-js": next "@rocket.chat/emitter": next "@rocket.chat/eslint-config": "workspace:^" @@ -9750,13 +9647,13 @@ __metadata: "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 "@storybook/testing-library": ~0.0.13 - "@types/babel__core": ~7.20.1 - "@types/jest": ~29.5.3 + "@types/babel__core": ~7.20.3 + "@types/jest": ~29.5.7 eslint: ~8.45.0 eslint-plugin-react: ~7.32.2 eslint-plugin-react-hooks: ~4.6.0 - eslint-plugin-storybook: ~0.6.12 - jest: ~29.6.1 + eslint-plugin-storybook: ~0.6.15 + jest: ~29.6.4 react-docgen-typescript-plugin: ~1.0.5 ts-jest: ~29.0.5 typescript: ~5.2.2 @@ -9766,7 +9663,7 @@ __metadata: "@rocket.chat/fuselage-hooks": "*" "@rocket.chat/icons": "*" "@rocket.chat/styled": "*" - "@rocket.chat/ui-contexts": 2.0.5 + "@rocket.chat/ui-contexts": 3.0.0-rc.7 react: ^17.0.2 react-dom: ^17.0.2 languageName: unknown @@ -9790,17 +9687,17 @@ __metadata: "@rocket.chat/logo": ^0.31.28 "@rocket.chat/styled": next "@rocket.chat/ui-contexts": "workspace:~" - "@types/react": ~17.0.62 - "@types/react-beautiful-dnd": ^13.1.4 - "@types/react-dom": ~17.0.20 - "@types/use-subscription": ^1.0.0 + "@types/react": ~17.0.69 + "@types/react-beautiful-dnd": ^13.1.6 + "@types/react-dom": ~17.0.22 + "@types/use-subscription": ^1.0.1 "@typescript-eslint/eslint-plugin": ~5.60.1 "@typescript-eslint/parser": ~5.60.1 "@vitejs/plugin-react": ^4.0.0 codemirror: ^6.0.1 eslint: ~8.45.0 eslint-plugin-react-hooks: ^4.6.0 - eslint-plugin-react-refresh: ^0.4.1 + eslint-plugin-react-refresh: ^0.4.4 eslint4b-prebuilt: ^6.7.2 rc-scrollbars: ^1.1.6 react: ^17.0.2 @@ -9819,13 +9716,14 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/web-ui-registration@workspace:packages/web-ui-registration" dependencies: - "@babel/core": ~7.22.10 - "@babel/preset-env": ~7.22.10 - "@babel/preset-react": ~7.22.5 - "@babel/preset-typescript": ~7.22.5 + "@babel/core": ~7.22.20 + "@babel/preset-env": ~7.22.20 + "@babel/preset-react": ~7.22.15 + "@babel/preset-typescript": ~7.22.15 "@rocket.chat/i18n": "workspace:~" "@rocket.chat/layout": next "@rocket.chat/mock-providers": "workspace:~" + "@rocket.chat/tools": "workspace:~" "@rocket.chat/ui-client": "workspace:^" "@rocket.chat/ui-contexts": "workspace:^" "@storybook/addon-actions": ~6.5.16 @@ -9834,23 +9732,24 @@ __metadata: "@storybook/builder-webpack4": ~6.5.16 "@storybook/manager-webpack4": ~6.5.16 "@storybook/react": ~6.5.16 - "@storybook/testing-library": ^0.2.0 + "@storybook/testing-library": ^0.2.2 "@tanstack/react-query": ^4.16.1 "@testing-library/react": ^13.3.0 - "@types/jest": ~29.5.3 - "@types/react": ~17.0.62 + "@types/jest": ~29.5.7 + "@types/react": ~17.0.69 babel-loader: ~8.3.0 eslint: ~8.45.0 - jest: ~29.6.1 + jest: ~29.6.4 react: ~17.0.2 react-hook-form: ~7.45.4 - react-i18next: ~13.2.1 + react-i18next: ~13.2.2 storybook-dark-mode: ~3.0.1 ts-jest: ~29.0.5 typescript: ~5.2.2 peerDependencies: "@rocket.chat/layout": "*" - "@rocket.chat/ui-contexts": 2.0.5 + "@rocket.chat/tools": "*" + "@rocket.chat/ui-contexts": 3.0.0-rc.7 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" @@ -11614,14 +11513,14 @@ __metadata: languageName: node linkType: hard -"@storybook/testing-library@npm:^0.2.0": - version: 0.2.0 - resolution: "@storybook/testing-library@npm:0.2.0" +"@storybook/testing-library@npm:^0.2.2": + version: 0.2.2 + resolution: "@storybook/testing-library@npm:0.2.2" dependencies: "@testing-library/dom": ^9.0.0 - "@testing-library/user-event": ^14.0.0 + "@testing-library/user-event": ^14.4.0 ts-dedent: ^2.2.0 - checksum: 1c1c16aea6f961de344f5d43bdfd2847bc5f44df1037c2e1383312bb6b842e2c17a805670fc9cfe1a8425f9e48e240fe5d025ab3d4802a198cfe9eb6ed8e7636 + checksum: 8ccdc1fbbb3472264c56b0aaf2f1c5d273f1ae9b230a53adf9cf82bf82c1a555550894f0e8869c206fa07b1fe8423da4d56590377756c58de3ec560b35a96c46 languageName: node linkType: hard @@ -11692,90 +11591,92 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-arm64@npm:1.3.66" +"@swc/core-darwin-arm64@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-darwin-arm64@npm:1.3.95" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-x64@npm:1.3.66" +"@swc/core-darwin-x64@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-darwin-x64@npm:1.3.95" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" +"@swc/core-linux-arm-gnueabihf@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.95" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" +"@swc/core-linux-arm64-gnu@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.95" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" +"@swc/core-linux-arm64-musl@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.95" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" +"@swc/core-linux-x64-gnu@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.95" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-musl@npm:1.3.66" +"@swc/core-linux-x64-musl@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-linux-x64-musl@npm:1.3.95" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" +"@swc/core-win32-arm64-msvc@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.95" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" +"@swc/core-win32-ia32-msvc@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.95" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" +"@swc/core-win32-x64-msvc@npm:1.3.95": + version: 1.3.95 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.95" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:^1.3.66": - version: 1.3.66 - resolution: "@swc/core@npm:1.3.66" +"@swc/core@npm:^1.3.95": + version: 1.3.95 + resolution: "@swc/core@npm:1.3.95" dependencies: - "@swc/core-darwin-arm64": 1.3.66 - "@swc/core-darwin-x64": 1.3.66 - "@swc/core-linux-arm-gnueabihf": 1.3.66 - "@swc/core-linux-arm64-gnu": 1.3.66 - "@swc/core-linux-arm64-musl": 1.3.66 - "@swc/core-linux-x64-gnu": 1.3.66 - "@swc/core-linux-x64-musl": 1.3.66 - "@swc/core-win32-arm64-msvc": 1.3.66 - "@swc/core-win32-ia32-msvc": 1.3.66 - "@swc/core-win32-x64-msvc": 1.3.66 + "@swc/core-darwin-arm64": 1.3.95 + "@swc/core-darwin-x64": 1.3.95 + "@swc/core-linux-arm-gnueabihf": 1.3.95 + "@swc/core-linux-arm64-gnu": 1.3.95 + "@swc/core-linux-arm64-musl": 1.3.95 + "@swc/core-linux-x64-gnu": 1.3.95 + "@swc/core-linux-x64-musl": 1.3.95 + "@swc/core-win32-arm64-msvc": 1.3.95 + "@swc/core-win32-ia32-msvc": 1.3.95 + "@swc/core-win32-x64-msvc": 1.3.95 + "@swc/counter": ^0.1.1 + "@swc/types": ^0.1.5 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -11802,7 +11703,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 + checksum: 49856ad64fa16151f7f784956c8134060c5ed612c9b3fcb79e33676c77219f61fa3bb6b9e0dd15d78c7bff92cacc0c944d2b4e60849eb93caca917a8544b1c2c + languageName: node + linkType: hard + +"@swc/counter@npm:^0.1.1": + version: 0.1.2 + resolution: "@swc/counter@npm:0.1.2" + checksum: 8427c594f1f0cf44b83885e9c8fe1e370c9db44ae96e07a37c117a6260ee97797d0709483efbcc244e77bac578690215f45b23254c4cd8a70fb25ddbb50bf33e languageName: node linkType: hard @@ -11815,15 +11723,22 @@ __metadata: languageName: node linkType: hard -"@swc/jest@npm:^0.2.26": - version: 0.2.26 - resolution: "@swc/jest@npm:0.2.26" +"@swc/jest@npm:^0.2.29": + version: 0.2.29 + resolution: "@swc/jest@npm:0.2.29" dependencies: "@jest/create-cache-key-function": ^27.4.2 jsonc-parser: ^3.2.0 peerDependencies: "@swc/core": "*" - checksum: 771821ed08cf168ca0b6307dee7689253d0af0685acd08408ac431860a7c42ace892db2cb6bb6dcfe297edbdce0f2e22d44ed4ed72d1c621be9e841cffd408a0 + checksum: 9eaad322310f34e81f67d41411a7d60663341af1bd9fb65456faa914c936d849d6f643fa3b942a187d52e71e62c33097098c639d25c2047fa874f49bf51cec76 + languageName: node + linkType: hard + +"@swc/types@npm:^0.1.5": + version: 0.1.5 + resolution: "@swc/types@npm:0.1.5" + checksum: 6aee11f62d3d805a64848e0bd5f0e0e615f958e327a9e1260056c368d7d28764d89e38bd8005a536c9bf18afbcd303edd84099d60df34a2975d62540f61df13b languageName: node linkType: hard @@ -11948,7 +11863,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/react@npm:^12.1.2, @testing-library/react@npm:~12.1.5": +"@testing-library/react@npm:^12.1.5, @testing-library/react@npm:~12.1.5": version: 12.1.5 resolution: "@testing-library/react@npm:12.1.5" dependencies: @@ -11987,12 +11902,12 @@ __metadata: languageName: node linkType: hard -"@testing-library/user-event@npm:^14.0.0": - version: 14.4.3 - resolution: "@testing-library/user-event@npm:14.4.3" +"@testing-library/user-event@npm:^14.4.0": + version: 14.5.1 + resolution: "@testing-library/user-event@npm:14.5.1" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 852c48ea6db1c9471b18276617c84fec4320771e466cd58339a732ca3fd73ad35e5a43ae14f51af51a8d0a150dcf60fcaab049ef367871207bea8f92c4b8195e + checksum: 3e6bc9fd53dfe2f3648190193ed2fd4bca2a1bfb47f68810df3b33f05412526e5fd5c4ef9dc5375635e0f4cdf1859916867b597eed22bda1321e04242ea6c519 languageName: node linkType: hard @@ -12052,21 +11967,21 @@ __metadata: languageName: node linkType: hard -"@types/adm-zip@npm:^0.5.0": - version: 0.5.0 - resolution: "@types/adm-zip@npm:0.5.0" +"@types/adm-zip@npm:^0.5.3": + version: 0.5.3 + resolution: "@types/adm-zip@npm:0.5.3" dependencies: "@types/node": "*" - checksum: 11dd013584e47d431bdf7c115b73cd3162c1a1eca0fbb911f691c9734e904cfe4a01ac1d2d3cbf76d0a952e01fcce8a01fd6fb1c150675a29d740a7fb15325b2 + checksum: 995e21441cc6fe180f12ebf4e722bc6dbde0f9c765e57353018a0969a27cf15542c3f5451bfa1a82b958d5ed5e371fb3cbe55f934076dae22d8bf6a259a536bf languageName: node linkType: hard -"@types/archiver@npm:^5.3.2": - version: 5.3.2 - resolution: "@types/archiver@npm:5.3.2" +"@types/archiver@npm:^5.3.4": + version: 5.3.4 + resolution: "@types/archiver@npm:5.3.4" dependencies: "@types/readdir-glob": "*" - checksum: 9db5b4fdc1740fa07d08340ed827598cc6eda97406ac18a06a158670c7124d4120650a3b9cd660e9e39b42f033cf8f052566da32681e8ad91163473df88a3c4c + checksum: 4ef27b99091ada9b8f13017d5b9e6d42a439e35a7858b30e040c408e081d98d8db6307b0762500288b5da38cab9823c4756b6abae1fdd2658d42bfb09eb7c5fb languageName: node linkType: hard @@ -12084,16 +11999,16 @@ __metadata: languageName: node linkType: hard -"@types/babel__core@npm:^7, @types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:~7.20.1": - version: 7.20.1 - resolution: "@types/babel__core@npm:7.20.1" +"@types/babel__core@npm:^7.0.0, @types/babel__core@npm:^7.1.14, @types/babel__core@npm:^7.20.3, @types/babel__core@npm:~7.20.3": + version: 7.20.3 + resolution: "@types/babel__core@npm:7.20.3" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 9fcd9691a33074802d9057ff70b0e3ff3778f52470475b68698a0f6714fbe2ccb36c16b43dc924eb978cd8a81c1f845e5ff4699e7a47606043b539eb8c6331a8 + checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 languageName: node linkType: hard @@ -12106,10 +12021,10 @@ __metadata: languageName: node linkType: hard -"@types/babel__preset-env@npm:^7": - version: 7.9.2 - resolution: "@types/babel__preset-env@npm:7.9.2" - checksum: a905ed92a3f602384966153e74a94790425e98af54e392a7fcfb5c5ded2f2a58c49a9fa64a0cb506fbffb8169ad25b56ea87983c812a4fb880f0716668c8c085 +"@types/babel__preset-env@npm:^7.9.4": + version: 7.9.4 + resolution: "@types/babel__preset-env@npm:7.9.4" + checksum: a4580b541d4fe7bdf9ecb9695cb90827f96c75e5c807e6fcf6cbca3beeb9106019dc322b2d08de03025d57c6f3f1431d80eb3ea6d9416e90bc8ee15460efa27d languageName: node linkType: hard @@ -12132,29 +12047,29 @@ __metadata: languageName: node linkType: hard -"@types/bad-words@npm:^3.0.1": - version: 3.0.1 - resolution: "@types/bad-words@npm:3.0.1" - checksum: c700fadd2bafef153812137220466ca3148425228915ddb6e7e80bc339fa983d2ddef098cacf00196fbd7467181ae5b9747d8fd383fc5ed17f8bf5e62e89d425 +"@types/bad-words@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/bad-words@npm:3.0.2" + checksum: aa40d10364b73deb5617c0b53d5a782841ddd173e6cc68bc41d48c2c95c63ac81d23e2cabeb3d686cb7d655512353ac1866135203305b820d4c60859635ba9d3 languageName: node linkType: hard -"@types/bcrypt@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/bcrypt@npm:5.0.0" +"@types/bcrypt@npm:^5.0.1": + version: 5.0.1 + resolution: "@types/bcrypt@npm:5.0.1" dependencies: "@types/node": "*" - checksum: 063c32c7a519d64768dfc0169a319b8244d6a6cb50a355c93992b3c5fee1dbc236526a1111f0e7bb25abc8b0473e5f40a5edfeb8b33cad2a6ea35aa2d7d7db14 + checksum: 2419ad2e7601b2c306ce2bd8bd8d911770f1abdea780efd4e61e9329b757e47c80fbd73fc52a925a371de47247ce92f04d11bdf24b8b44754ea0ba18d06d2202 languageName: node linkType: hard -"@types/body-parser@npm:*, @types/body-parser@npm:^1.19.2": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" +"@types/body-parser@npm:*, @types/body-parser@npm:^1.19.4": + version: 1.19.4 + resolution: "@types/body-parser@npm:1.19.4" dependencies: "@types/connect": "*" "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 + checksum: 10accc30773319bd49af7d12d2cd5faf9a0293ea4764345297f26ba6ef31d5caa7609da7619584d6c61279e09b89d3ab13d28c5cb644807c5d9c722ae1454778 languageName: node linkType: hard @@ -12167,55 +12082,55 @@ __metadata: languageName: node linkType: hard -"@types/busboy@npm:^1.5.0": - version: 1.5.0 - resolution: "@types/busboy@npm:1.5.0" +"@types/busboy@npm:^1.5.2": + version: 1.5.2 + resolution: "@types/busboy@npm:1.5.2" dependencies: "@types/node": "*" - checksum: ffa7bf25c0395f6927526b7d97e70cd2df789e4ca0d231e41855fb08542fa236891ce457d83cc50cac6e5cef6be092ab80597070dcf1413f736462690a23e987 + checksum: d2cfa334e06ce0fbeb31bdac7b4ba051b85e508f4f46d016e55488a717c626e19285f0e2fae40d0183d0f676dd162ab9216613799f83d40430e1996fba4bfb2f languageName: node linkType: hard -"@types/chai-as-promised@npm:^7.1.5": - version: 7.1.5 - resolution: "@types/chai-as-promised@npm:7.1.5" +"@types/chai-as-promised@npm:^7.1.7": + version: 7.1.7 + resolution: "@types/chai-as-promised@npm:7.1.7" dependencies: "@types/chai": "*" - checksum: 7c1345c6e32513d52d8e562ec173c23161648d6b792046525f18803a9932d7b3ad3dca8f0181e3c529ec42b106099f174e34edeb184d61dc93e32c98b5132fd4 + checksum: 59199afbd91289588648e263d7f32f7d72fa9c0075f3c17b1e760e10fdc1a310c2170a392b0d17d96cfff2c51daca72839eed6d80142f9230c9784b8e08ba676 languageName: node linkType: hard -"@types/chai-datetime@npm:0.0.37": - version: 0.0.37 - resolution: "@types/chai-datetime@npm:0.0.37" +"@types/chai-datetime@npm:0.0.38": + version: 0.0.38 + resolution: "@types/chai-datetime@npm:0.0.38" dependencies: "@types/chai": "*" - checksum: c55cb13f7359f670849d0f313517d4c3f1f5ff4e82851b9643a0aeda426666e40a43b99518c02c877bc533c6180196f68fc48e077f37487e8b71f3a4b1855272 + checksum: 2c0269e91a282ef71fe5603a94b6df4c3b784e3ded25f380ed91c0d91c26d08ac33da6bde903bc9bddfec4636455378c26810947a989ef87fe37078213e350ca languageName: node linkType: hard -"@types/chai-dom@npm:0.0.13": - version: 0.0.13 - resolution: "@types/chai-dom@npm:0.0.13" +"@types/chai-dom@npm:1.11.2": + version: 1.11.2 + resolution: "@types/chai-dom@npm:1.11.2" dependencies: "@types/chai": "*" - checksum: 94820d5d086eb339af62c74c17f79640b86b1f70818e366bff943826b5d28400a4a97f1b8740ae7727f93ebe9887bc9b5a3ae4aab4a5be420f8cdb4bd5eaef0e + checksum: d59a90bf2b497797178d3a5bd17f242caaf6ee098563142fdc765a6c12786f94bc0a9b8e4023de37ef8c803198ce9562823651610b02c80f1e21a29f2ece80fd languageName: node linkType: hard -"@types/chai-spies@npm:~1.0.3": - version: 1.0.3 - resolution: "@types/chai-spies@npm:1.0.3" +"@types/chai-spies@npm:~1.0.5": + version: 1.0.5 + resolution: "@types/chai-spies@npm:1.0.5" dependencies: "@types/chai": "*" - checksum: f88b1a021c1f6c37259adf4268b00401431633027995725a49c44658b0fedf7ec09aa4e26e59fdf6564df0767a0b105b26a4a9c8a7c6acaf9ba417b06a4c9c70 + checksum: d8009e0e4bf78fdce4a6824d43a2e206ddc0c07e3869f5d55ed7a7476c5623f77d0a5f444148ce7a0b9d9f47592fe3f0c6652952e6a0f514d8603cbb2e587cd4 languageName: node linkType: hard -"@types/chai@npm:*, @types/chai@npm:^4.3.5": - version: 4.3.5 - resolution: "@types/chai@npm:4.3.5" - checksum: c8f26a88c6b5b53a3275c7f5ff8f107028e3cbb9ff26795fff5f3d9dea07106a54ce9e2dce5e40347f7c4cc35657900aaf0c83934a25a1ae12e61e0f5516e431 +"@types/chai@npm:*, @types/chai@npm:^4.3.9": + version: 4.3.9 + resolution: "@types/chai@npm:4.3.9" + checksum: 2300a2c7abd4cb590349927a759b3d0172211a69f363db06e585faf7874a47f125ef3b364cce4f6190e3668147587fc11164c791c9560cf9bce8478fb7019610 languageName: node linkType: hard @@ -12228,12 +12143,12 @@ __metadata: languageName: node linkType: hard -"@types/chart.js@npm:^2.9.37": - version: 2.9.37 - resolution: "@types/chart.js@npm:2.9.37" +"@types/chart.js@npm:^2.9.39": + version: 2.9.39 + resolution: "@types/chart.js@npm:2.9.39" dependencies: moment: ^2.10.2 - checksum: 5626a8cc3b410c9f2668ee7efd5b1b408f7de814608f83f9fdb349f59e3c7f5eb7199e73b41e6634c24b4ccb8d3846b290264df8d4224d184f63b095f82cfb94 + checksum: c19cab03143db9cabc9c7277b77a974634baa9a9554dc95a7d2996091ac88ca9d98718e701446932a4cf0b8f3c2862ad0d3f232e1deb6a9bdf72d9ef5342582d languageName: node linkType: hard @@ -12246,12 +12161,12 @@ __metadata: languageName: node linkType: hard -"@types/codemirror@npm:^5.60.8": - version: 5.60.8 - resolution: "@types/codemirror@npm:5.60.8" +"@types/codemirror@npm:^5.60.12": + version: 5.60.12 + resolution: "@types/codemirror@npm:5.60.12" dependencies: "@types/tern": "*" - checksum: bc3a63eab0308b3ef5ed2ca22afb7f1c0b8acde6477e1d569df7e93f3fe4f78754d28a3e081c72931259fe1bf906a319b54bcdeba74600b989e5558d32478496 + checksum: dff22f32ea42ccd3f9bfcf408631f94a11ffb4614ff4fa8cc55adf7da6e7ba96650533b8dd27d037242747bdaa85141e93520f84409db7bc394862a174a10e1e languageName: node linkType: hard @@ -12274,19 +12189,19 @@ __metadata: languageName: node linkType: hard -"@types/cookie-parser@npm:^1.4.3": - version: 1.4.3 - resolution: "@types/cookie-parser@npm:1.4.3" +"@types/cookie-parser@npm:^1.4.5": + version: 1.4.5 + resolution: "@types/cookie-parser@npm:1.4.5" dependencies: "@types/express": "*" - checksum: f390f3af1b1711190dee2c2ecd9af33af81fbde8d81ee820dadb6fe1e0d80c3faba40af37c6ed36fb88b04b64870f6a021f7e9edceecd17c42fe22abe0af5005 + checksum: 45855721706d6a57bb0441db11fb59db407414ea83a0000a0df80d19230447cc3bcc43c436397bfb8998ec78db222265fa8083456b00c5b5054a0c03d06f0086 languageName: node linkType: hard -"@types/cookie@npm:^0.5.1": - version: 0.5.1 - resolution: "@types/cookie@npm:0.5.1" - checksum: 9a8d60fc84797122bc399d6bd330fe5780dc7aab032321de705049ea925339f74658bfa418de483a625d51858770efef58df633ff2e20f1bdf7fbd74a52847e2 +"@types/cookie@npm:^0.5.3": + version: 0.5.3 + resolution: "@types/cookie@npm:0.5.3" + checksum: b785618f6b2fdceb6a20a17e1dfe99651b1e5c2c079f486de76dfb21b508f09d91913755e4a6dbdfe628882ea32466bb2e9318b114ce34efa5e624356494fcab languageName: node linkType: hard @@ -12297,35 +12212,35 @@ __metadata: languageName: node linkType: hard -"@types/cors@npm:^2.8.13": - version: 2.8.13 - resolution: "@types/cors@npm:2.8.13" +"@types/cors@npm:^2.8.15": + version: 2.8.15 + resolution: "@types/cors@npm:2.8.15" dependencies: "@types/node": "*" - checksum: 7ef197ea19d2e5bf1313b8416baa6f3fd6dd887fd70191da1f804f557395357dafd8bc8bed0ac60686923406489262a7c8a525b55748f7b2b8afa686700de907 + checksum: ef7b0aba4c6a4c1fe9d459bd471ebaa891a75319682c9248daa17720003d1d0d2c59de4bdb6868630596ade9b7c3c949e652d6141b14c6fe4387ffcc520d0f3f languageName: node linkType: hard -"@types/crypto-js@npm:~4.1.1": - version: 4.1.1 - resolution: "@types/crypto-js@npm:4.1.1" - checksum: ea3d6a67b69f88baeb6af96004395903d2367a41bd5cd86306da23a44dd96589749495da50974a9b01bb5163c500764c8a33706831eade036bddae016417e3ea +"@types/crypto-js@npm:~4.1.3": + version: 4.1.3 + resolution: "@types/crypto-js@npm:4.1.3" + checksum: 4489854579c1b90b77da881fc980e3f05ab1e9c68b18ae580fedbb7b0fb40d531fda7bdc05f1b3bd5d4218c1d97c2f821bbac57eb3d7d9e505ce5a2c5b034166 languageName: node linkType: hard -"@types/cssom@npm:^0.4.1": - version: 0.4.1 - resolution: "@types/cssom@npm:0.4.1" - checksum: 0f44f5ff27f5dfadfb89c8bd00f8d588dc1aaa77ec05ffa3ab732929683aef842f55a6c52c9a75586a28987f009b45f6ea5f63dbc34660f6bb98650eea7f59e9 +"@types/cssom@npm:^0.4.2": + version: 0.4.2 + resolution: "@types/cssom@npm:0.4.2" + checksum: 4bcc54245b8c09c832c21465f60af412a5c2446ae5c17ab1a874dd87a9488e43951f8027594cc0eaf99d4e9a7c061882f017552a13f0a94ac25db9ac92fea837 languageName: node linkType: hard -"@types/debug@npm:^4.1.8": - version: 4.1.8 - resolution: "@types/debug@npm:4.1.8" +"@types/debug@npm:^4.1.10": + version: 4.1.10 + resolution: "@types/debug@npm:4.1.10" dependencies: "@types/ms": "*" - checksum: a9a9bb40a199e9724aa944e139a7659173a9b274798ea7efbc277cb084bc37d32fc4c00877c3496fac4fed70a23243d284adb75c00b5fdabb38a22154d18e5df + checksum: 938f79c5b610f851da9c67ecd8641a09b33ce9cb38fe4c9f4d20ee743d6bccb5d8e9a833a4cd23e0684a316622af67a0634fa706baea5a01f5219961d1976314 languageName: node linkType: hard @@ -12338,17 +12253,17 @@ __metadata: languageName: node linkType: hard -"@types/ejson@npm:^2.2.0": - version: 2.2.0 - resolution: "@types/ejson@npm:2.2.0" - checksum: 0cbc610c58a60847822353782d133f7a3cf362223d58f6a2b6ce0ae6e1f22885dc8f2a6ca7676df2556ed631e74c5a4880575704b964fdef89d216dc69ac0ad6 +"@types/ejson@npm:^2.2.1": + version: 2.2.1 + resolution: "@types/ejson@npm:2.2.1" + checksum: 8a0e6e9d50a9b33cdb645e7fdaca5fccb5a0687be0918eaeb06c9c7f21bb8b5757881de77c9d19d84bf16e6949c10b23d098954990aef7bd26257d471f4c008f languageName: node linkType: hard -"@types/emojione@npm:^2.2.6": - version: 2.2.6 - resolution: "@types/emojione@npm:2.2.6" - checksum: 5a049b57ea99eb88359b257256cdb74f048f8cfddc58a7ea9a50ba5d937f9414025c0616205b67f63512fcbbba44471901209d8f3c7fb5a9741fb6d3038eb864 +"@types/emojione@npm:^2.2.8": + version: 2.2.8 + resolution: "@types/emojione@npm:2.2.8" + checksum: 3342fd3fbcbc7e7429c7a23330f559d0f41f4fcba5a699035fddb53efba8c7c5ed3af54024011643aa338792d8fd963768766877bc115e093bef193a391abb05 languageName: node linkType: hard @@ -12362,13 +12277,13 @@ __metadata: languageName: node linkType: hard -"@types/eslint@npm:*, @types/eslint@npm:~8.44.0": - version: 8.44.0 - resolution: "@types/eslint@npm:8.44.0" +"@types/eslint@npm:*, @types/eslint@npm:~8.44.6": + version: 8.44.6 + resolution: "@types/eslint@npm:8.44.6" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: 2655f409a4ecdd64bb9dd9eb6715e7a2ac30c0e7f902b414e10dbe9d6d497baa5a0f13105e1f7bd5ad7a913338e2ab4bed1faf192a7a0d27d1acd45ba79d3f69 + checksum: ed8de582ab3dbd7ec0bf97d41f4f3de28dd8a37fc48bc423e1c406bbb70d1fd8c4175ba17ad6495ef9ef99a43df71421277b7a2a0355097489c4c4cf6bb266ff languageName: node linkType: hard @@ -12407,41 +12322,31 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:*, @types/express@npm:^4.17.13, @types/express@npm:^4.17.17, @types/express@npm:^4.17.8, @types/express@npm:^4.7.0": - version: 4.17.17 - resolution: "@types/express@npm:4.17.17" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.33 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 0196dacc275ac3ce89d7364885cb08e7fb61f53ca101f65886dbf1daf9b7eb05c0943e2e4bbd01b0cc5e50f37e0eea7e4cbe97d0304094411ac73e1b7998f4da - languageName: node - linkType: hard - -"@types/express@npm:^4.16.1": - version: 4.17.18 - resolution: "@types/express@npm:4.17.18" +"@types/express@npm:*, @types/express@npm:^4.16.1, @types/express@npm:^4.17.13, @types/express@npm:^4.17.20, @types/express@npm:^4.17.8, @types/express@npm:^4.7.0": + version: 4.17.20 + resolution: "@types/express@npm:4.17.20" dependencies: "@types/body-parser": "*" "@types/express-serve-static-core": ^4.17.33 "@types/qs": "*" "@types/serve-static": "*" - checksum: 8c178da4f0edff1f006d871fbdc3f849620986ff10bad252f3dfd45b57554e26aaa28c602285df028930d5216e257a06fbaf795070f8bb42f7d87e3b689cba50 + checksum: bf8a97d283128e5129f9ccabbeef728ff3f0484465e0ae74a304bd0588fa6cb715ae68845650caba9a641944b7791ba125d02ddbd47a7e62aaefdd036570c6c5 languageName: node linkType: hard -"@types/fibers@npm:^3.1.1": - version: 3.1.1 - resolution: "@types/fibers@npm:3.1.1" - checksum: 3bcc53c92dcaabf77cf31274c06ba615a59d21730bdb47214f64d7bf356ab31712f1d9c79707e50d2c9d2f8cda8cca4f7e4c20ddf272b07397d20fb196dbc400 +"@types/fibers@npm:^3.1.3": + version: 3.1.3 + resolution: "@types/fibers@npm:3.1.3" + checksum: c4511eecea1c4e73a4b4310ff5152bb43477dfbd7c19ea8614de5ce6d604c6bd629b4552bdbc06fbd593215c684d06aee4e6d8e6681b4ab019f2b8a03838de79 languageName: node linkType: hard -"@types/gc-stats@npm:^1": - version: 1.4.1 - resolution: "@types/gc-stats@npm:1.4.1" - checksum: 07c08e5452f96e3afbaba259ec0f684f1172b0e1bdb466d8606bc9af0428399bf334b57944ef2762d61be122892619aabab11ff63cd07f2dfc7dd436118d04b6 +"@types/gc-stats@npm:^1.4.2": + version: 1.4.2 + resolution: "@types/gc-stats@npm:1.4.2" + dependencies: + "@types/node": "*" + checksum: 4039f699b497595c3ac30f221f72d798e12a764093ab5df05cec25cd501fe806005daec10c25737d2b08449772bc318ac720f01fe73d13fdb33168429e25483f languageName: node linkType: hard @@ -12455,10 +12360,10 @@ __metadata: languageName: node linkType: hard -"@types/google-libphonenumber@npm:^7.4.23": - version: 7.4.23 - resolution: "@types/google-libphonenumber@npm:7.4.23" - checksum: 6c46f980fcff49befbddc165dea466cd2b444bf12a2a110767c6a656164cbfc09cbc84e1d2142b275def443246704115eddaf040668caee623676b1e37bb90bc +"@types/google-libphonenumber@npm:^7.4.29": + version: 7.4.29 + resolution: "@types/google-libphonenumber@npm:7.4.29" + checksum: 63b1d03ab6dcd877c1249251d73c54777f6b6cbd13f6b3107c8fcef70d19f8e3a768555942735318da86fa6c50ea0dcfc82d521d4defc9e9dfc1e67b4746ab96 languageName: node linkType: hard @@ -12471,10 +12376,10 @@ __metadata: languageName: node linkType: hard -"@types/gravatar@npm:^1.8.3": - version: 1.8.3 - resolution: "@types/gravatar@npm:1.8.3" - checksum: 7d05ab0b0fae62c6932bbb952b863e67a96385dd428a4cef161518e5e5176788194db34ca0815ce28a41779e472ea3d6ca21fedd0f00d77e62b016b59117bf81 +"@types/gravatar@npm:^1.8.5": + version: 1.8.5 + resolution: "@types/gravatar@npm:1.8.5" + checksum: a4a5e9010e5f2caff27f360cd4e0acf4e3276be3fdf8cc4a38baed8b9ca14d187b6b5c1d30d4d3abe326b0aecf30d1b47111ea543c8f6caf8bce9a8bb147c090 languageName: node linkType: hard @@ -12527,21 +12432,21 @@ __metadata: languageName: node linkType: hard -"@types/i18next-sprintf-postprocessor@npm:^0.2.0": - version: 0.2.0 - resolution: "@types/i18next-sprintf-postprocessor@npm:0.2.0" +"@types/i18next-sprintf-postprocessor@npm:^0.2.2": + version: 0.2.2 + resolution: "@types/i18next-sprintf-postprocessor@npm:0.2.2" dependencies: i18next: ">=17.0.11" - checksum: be1203358724c253a402f08043ba5900661849ee0ae103c5a9928f07b17e0ff1558fe22219a10d1a28a915af5564337135ee91572c6ae7f2a427bb67291e6800 + checksum: 1029c5f896e453534a128013f9ee8a0873a2e03b82a18a530842d06618c3dd1b1f3adf0491efa3f7efd86d19c61b23af60df5c0f36306ed298a20d6d895db95e languageName: node linkType: hard -"@types/imap@npm:^0.8.37": - version: 0.8.37 - resolution: "@types/imap@npm:0.8.37" +"@types/imap@npm:^0.8.39": + version: 0.8.39 + resolution: "@types/imap@npm:0.8.39" dependencies: "@types/node": "*" - checksum: 39af91e5ed0fe3b6f261a735f5af29de2ac325bddefbaa0067fcd1f51c9aa6d9d7c50eb0843091bca1faf14158085709c16315acddd6222d56e4557519abfba6 + checksum: 403a0810dc24f035d1762d9ebc1cf548448bdbe565ab6062d2a1d1be2afd4f8ef1483723d4077c0e0e2312a39a27f393a513a40515589149c0617aa984946ae5 languageName: node linkType: hard @@ -12595,13 +12500,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:*, @types/jest@npm:~29.5.3": - version: 29.5.3 - resolution: "@types/jest@npm:29.5.3" +"@types/jest@npm:*, @types/jest@npm:~29.5.7": + version: 29.5.7 + resolution: "@types/jest@npm:29.5.7" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: e36bb92e0b9e5ea7d6f8832baa42f087fc1697f6cd30ec309a07ea4c268e06ec460f1f0cfd2581daf5eff5763475190ec1ad8ac6520c49ccfe4f5c0a48bfa676 + checksum: e28624ccb0ef1255a03fbbb4b5bc3e5cbcdc450d39e0739985ff679b124198f808c38c8c3e67859c6efc0e848196deeb8cfed028e12a821c511dfc1112a2d6e9 languageName: node linkType: hard @@ -12614,19 +12519,19 @@ __metadata: languageName: node linkType: hard -"@types/js-yaml@npm:^4.0.5": - version: 4.0.5 - resolution: "@types/js-yaml@npm:4.0.5" - checksum: 7dcac8c50fec31643cc9d6444b5503239a861414cdfaa7ae9a38bc22597c4d850c4b8cec3d82d73b3fbca408348ce223b0408d598b32e094470dfffc6d486b4d +"@types/js-yaml@npm:^4.0.8": + version: 4.0.8 + resolution: "@types/js-yaml@npm:4.0.8" + checksum: a5a77a5a1eac7e7fb667156c251c2b947ca4ddfdda570726369dd50bd5b2b1d0da2d0fb4273d1b10aa1782406d7b3da8923d957df4fb89dbfa1db06f43297de2 languageName: node linkType: hard -"@types/jsdom-global@npm:^3.0.4": - version: 3.0.4 - resolution: "@types/jsdom-global@npm:3.0.4" +"@types/jsdom-global@npm:^3.0.6": + version: 3.0.6 + resolution: "@types/jsdom-global@npm:3.0.6" dependencies: "@types/jsdom": "*" - checksum: c4da8432609686961a4336b8adfe882cd844a5c8cb0213d12c8d2a69d8602a73ef0f175e9ed7d45ab75b833c8551147eb21015efe1b9505872326f1ea9d7ec91 + checksum: cb216d588d6abc583615706bbc8beab6265d7afec8e51cadea06f84dd5ba4508e583c500556b2c273d7569c80af9cd68dce19ab6042cd881567aa0fe10261cd1 languageName: node linkType: hard @@ -12675,10 +12580,10 @@ __metadata: languageName: node linkType: hard -"@types/jsrsasign@npm:^10.5.8": - version: 10.5.8 - resolution: "@types/jsrsasign@npm:10.5.8" - checksum: ef53cee635ab31ae60b41d050266e16949be84b9b6781eb7585acc9094bc6e1f8c9aff4f19221ee1c587ecf3134a6b551800989d2add6f28f9176a248c89a57d +"@types/jsrsasign@npm:^10.5.11": + version: 10.5.11 + resolution: "@types/jsrsasign@npm:10.5.11" + checksum: c18b52af99ffb831fd84738356a49e94407e732f0a88f0f6db1e1fd55c06a47d2bab23a9e17b3b21af50fbf5f4d115e13fbe2796357204b18072929bd7b4bd5c languageName: node linkType: hard @@ -12689,10 +12594,10 @@ __metadata: languageName: node linkType: hard -"@types/katex@npm:~0.16.0": - version: 0.16.0 - resolution: "@types/katex@npm:0.16.0" - checksum: f93ceb2496621d18a28252264c0b7f5b0bdf125f9dc92d1adfbd9bf00942cd2918de336fae628d3929e615aaf84b7adb1781711c4e4605664be0827b1013ec14 +"@types/katex@npm:~0.16.5": + version: 0.16.5 + resolution: "@types/katex@npm:0.16.5" + checksum: a1ce22cd87acd9b32891931f2bc4355c3540cc0a423e161a2e5b040d3e50812cb85ce1fd09f23d42324b19f9da30ded6b1807114f215624f670d79bb46c47cc8 languageName: node linkType: hard @@ -12705,10 +12610,10 @@ __metadata: languageName: node linkType: hard -"@types/later@npm:^1.2.7": - version: 1.2.7 - resolution: "@types/later@npm:1.2.7" - checksum: 247f10e3e39bf50d78cdeb95f854e73b8378fdb2de542a0b632d892377098b438c2596dd99657d2ca0ca9370b07a2c112b29e5fbde636c91e4292f9a82b04572 +"@types/later@npm:^1.2.8": + version: 1.2.8 + resolution: "@types/later@npm:1.2.8" + checksum: b89b391e6dc6721955b04c01b81a3e38b4ac3d4f40ebcf35bc34d694c46a81c387c028760b3fc1441b9852c46298dfd562708f61504aba65983d2484b99d6420 languageName: node linkType: hard @@ -12721,45 +12626,45 @@ __metadata: languageName: node linkType: hard -"@types/less@npm:~3.0.3": - version: 3.0.3 - resolution: "@types/less@npm:3.0.3" - checksum: 389ce4c843fb88484ffbe4e3b63da0db1cea3e594c57086a5e642431f031f569819b4a210ae4ca109207d2307daa7e48e0e00315892fa7582748e0f434e62881 +"@types/less@npm:~3.0.5": + version: 3.0.5 + resolution: "@types/less@npm:3.0.5" + checksum: 72d04c7877a63ef8a49e22a2aaf2e595aec41b4fcbbb48603e4d3a3d1e2d903edea6654db00bba52148ea4101a904e866b410599088b41935aa4c0733d25ef3c languageName: node linkType: hard -"@types/lodash.debounce@npm:^4.0.7": - version: 4.0.7 - resolution: "@types/lodash.debounce@npm:4.0.7" +"@types/lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "@types/lodash.debounce@npm:4.0.8" dependencies: "@types/lodash": "*" - checksum: e873b2d77f89010876baba3437ef826b17221b98948e00b5590828334a481dea1c8f9d28543210e564adc53199584f42c3cb171f8b6c3614fefc0b4e0888679c + checksum: 63f195cb053ca390135a9aca62bb60fa149ca81838519871506b60760ff4113333709becb8e4147707eaa3d916dab7eff66b0588caf4ce508cabda9bee9c5b60 languageName: node linkType: hard -"@types/lodash.get@npm:^4.4.7": - version: 4.4.7 - resolution: "@types/lodash.get@npm:4.4.7" +"@types/lodash.get@npm:^4.4.8": + version: 4.4.8 + resolution: "@types/lodash.get@npm:4.4.8" dependencies: "@types/lodash": "*" - checksum: 0dbf1960606e4707c34e8ffbe97ffaad0e47fc5df7a6e24ea6e4fe5838d2468aa13360f38815c77b06e3c9932631ae15662b4139036a69ee16aeb54827a21405 + checksum: fea09c12f098e5cbdc16510e8319a7f0dd4d0af49a5e6622ae4f0dcd4893f1b2c44a5d22f452d73443f50b85c8461f3fe2370c19b8d9051686265bbb0aae0ffa languageName: node linkType: hard -"@types/lodash@npm:*, @types/lodash@npm:^4.14.167, @types/lodash@npm:^4.14.195": - version: 4.14.195 - resolution: "@types/lodash@npm:4.14.195" - checksum: 39b75ca635b3fa943d17d3d3aabc750babe4c8212485a4df166fe0516e39288e14b0c60afc6e21913cc0e5a84734633c71e617e2bd14eaa1cf51b8d7799c432e +"@types/lodash@npm:*, @types/lodash@npm:^4.14.167, @types/lodash@npm:^4.14.200": + version: 4.14.200 + resolution: "@types/lodash@npm:4.14.200" + checksum: 6471f8bb5da692a6ecf03a8da4935bfbc341e67ee9bcb4f5730bfacff0c367232548f0a01e8ac5ea18c6fe78fb085d502494e33ccb47a7ee87cbdee03b47d00d languageName: node linkType: hard -"@types/mailparser@npm:^3.4.0": - version: 3.4.0 - resolution: "@types/mailparser@npm:3.4.0" +"@types/mailparser@npm:^3.4.3": + version: 3.4.3 + resolution: "@types/mailparser@npm:3.4.3" dependencies: "@types/node": "*" iconv-lite: ^0.6.3 - checksum: 05232ba3579b09224e5335848da27817a4cac8cc0eb622202904b62851fd61bbab7b5ca90016531e40098641351d84c2355f10cd9c9fa718da4ea2cb0e637bd0 + checksum: 9374b713311b523b66429a7b509e90229dd001029e87d901ab6c756e1856eb2a8427012c016ad70ac45b39056eba1334e568f85ce9f329f5dd147986a897b691 languageName: node linkType: hard @@ -12779,26 +12684,27 @@ __metadata: languageName: node linkType: hard -"@types/meteor-collection-hooks@npm:^0.8.6": - version: 0.8.6 - resolution: "@types/meteor-collection-hooks@npm:0.8.6" +"@types/meteor-collection-hooks@npm:^0.8.8": + version: 0.8.8 + resolution: "@types/meteor-collection-hooks@npm:0.8.8" dependencies: meteor-typings: ^1.3.1 - checksum: 620f6315dba4457dcacb0656ebdabfe2997b39be8757b87cd883e11aa77a573c27abbb0682b75c5d284ccc2be372b377d17c22a09d465ba2d59e3e62ca298ccf + checksum: bf0afc8531c836f3f7ead4aa0f8be3f69257af7a62397924a50533a20837b21b16c307777bb4fe52dc2e26753ba7269d0df6133ba6f1dad27d4075fea38a05f9 languageName: node linkType: hard -"@types/meteor@npm:^2.9.2": - version: 2.9.2 - resolution: "@types/meteor@npm:2.9.2" +"@types/meteor@npm:^2.9.5": + version: 2.9.5 + resolution: "@types/meteor@npm:2.9.5" dependencies: "@types/connect": "*" "@types/jquery": "*" + "@types/node": "*" "@types/nodemailer": "*" "@types/react": "*" "@types/underscore": "*" mongodb: ^4.3.1 - checksum: 6395578e5d5f139aad8dfd0f70cb489dd70984b78ed2ab791bfabc59c70f94196cdb3cfc40659da0498ae1962f135782067579e5c320341c9a1a331553329f56 + checksum: e16d072fe0f0ddaf2a8ac6b442580126c6d38e9e2ac36d72551d401a9a86c1dfa42e17b28ac28842b43ed0106b1c47126348332b3fcca3c86ef0d266c1201da9 languageName: node linkType: hard @@ -12883,30 +12789,23 @@ __metadata: languageName: node linkType: hard -"@types/node-gcm@npm:^1.0.1": - version: 1.0.1 - resolution: "@types/node-gcm@npm:1.0.1" - checksum: feaf8952ae0029075fef79b5a6397fbccb19caa6580bc9e15ab20f47fa122f4be2241dde72bb5884ec87b4a8a5d33a4e9e4c219a6e83cf906bf7d93f373f4f0e +"@types/node-gcm@npm:^1.0.3": + version: 1.0.3 + resolution: "@types/node-gcm@npm:1.0.3" + checksum: 232e3d401f381fe9312343efb920892a7aa2f63457e00608ff2c3f0d1bff4a3707affe9a9e484ffead39272cfba0d1791901b7e937420233455dd047d63a4587 languageName: node linkType: hard -"@types/node-rsa@npm:^1.1.1": - version: 1.1.1 - resolution: "@types/node-rsa@npm:1.1.1" +"@types/node-rsa@npm:^1.1.3": + version: 1.1.3 + resolution: "@types/node-rsa@npm:1.1.3" dependencies: "@types/node": "*" - checksum: dee0c318618991f115b6e757c54980324c3b2f7dfec8137dcb31e8e88955e7c048d5e89e1e3a572148697783f323dbf9af5738ac5bbe9069666663ad3737284d + checksum: 03606729a96722623e316b1728d45ba452e008e01e886127d1d964221119dd4196be724ec062fc81be5beb28ce8e5fcc9c55109275cdae60545ddc293b89e77d languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=12.0.0, @types/node@npm:>=8.9.0": - version: 17.0.40 - resolution: "@types/node@npm:17.0.40" - checksum: e3b2fe876672fbe4be84ce17773944eb2f5eaba50e2c6c0536bdf6d4972ed6488581580581f154183fdc8f2d56fa42a42e3d6e83b9b71ee25adea16a84765e92 - languageName: node - linkType: hard - -"@types/node@npm:>=12, @types/node@npm:>=18.0.0": +"@types/node@npm:*, @types/node@npm:>=12, @types/node@npm:>=12.0.0, @types/node@npm:>=18.0.0, @types/node@npm:>=8.9.0": version: 20.8.4 resolution: "@types/node@npm:20.8.4" dependencies: @@ -12922,26 +12821,26 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:^14.0.10 || ^16.0.0, @types/node@npm:^14.14.20 || ^16.0.0, @types/node@npm:^16.18.36": - version: 16.18.36 - resolution: "@types/node@npm:16.18.36" - checksum: a9d138fa1269079c60daad6984713dc0b713983f8b34a83edbc6d7957b2e38beab9b2598c9fe99f19d073e20bc212a18aaf82eabdc23ef64dce7d2089a9aab2a +"@types/node@npm:^14.0.10 || ^16.0.0, @types/node@npm:^14.14.20 || ^16.0.0, @types/node@npm:^16.18.60": + version: 16.18.60 + resolution: "@types/node@npm:16.18.60" + checksum: aa0c81c3f20e663584bf17a5968e54c419277af7982ef41f9d83edd1b7ab4c8af2583a3c8a9e1cf659c6307e6f787e1be20522855121371f5a46d1d54f8a70e3 languageName: node linkType: hard -"@types/node@npm:^14.0.26, @types/node@npm:^14.14.37, @types/node@npm:^14.18.51": - version: 14.18.51 - resolution: "@types/node@npm:14.18.51" - checksum: 0960a31d2ac605763fe79c8edcee3cb48257d345ce417c019d84ff5d8cd92dd0937674814ab3f169346b4259c29f640556006bcb2c54cfb3e63fa0cf728d320e +"@types/node@npm:^14.0.26, @types/node@npm:^14.14.37, @types/node@npm:^14.18.63": + version: 14.18.63 + resolution: "@types/node@npm:14.18.63" + checksum: be909061a54931778c71c49dc562586c32f909c4b6197e3d71e6dac726d8bd9fccb9f599c0df99f52742b68153712b5097c0f00cac4e279fa894b0ea6719a8fd languageName: node linkType: hard -"@types/nodemailer@npm:*, @types/nodemailer@npm:^6.4.8": - version: 6.4.8 - resolution: "@types/nodemailer@npm:6.4.8" +"@types/nodemailer@npm:*, @types/nodemailer@npm:^6.4.13": + version: 6.4.13 + resolution: "@types/nodemailer@npm:6.4.13" dependencies: "@types/node": "*" - checksum: 3cc9b6a0e54f25a1b36124df413964ff5a69e8dc4558c5dfc06818917313a50f4dbfe31fc9190e4270d07a0f8678474da24a2eae42f907933ea81d983b4772d4 + checksum: fd27d57d5801aaa7594d3bab748aedb1addc0c3a8ff9a21ea7675eec0e7e99cc477d05264b757b97691612fcfab37e52ded6c0725a700a90ad24fc7829dcc641 languageName: node linkType: hard @@ -12959,19 +12858,19 @@ __metadata: languageName: node linkType: hard -"@types/oauth2-server@npm:^3.0.13": - version: 3.0.13 - resolution: "@types/oauth2-server@npm:3.0.13" +"@types/oauth2-server@npm:^3.0.15": + version: 3.0.15 + resolution: "@types/oauth2-server@npm:3.0.15" dependencies: "@types/express": "*" - checksum: 126ce8a99a50b515801891212c20a928bd447ea634956aef0073ff704ac19b79ed8800567f3aa433f234bf2ee54b498211e3e23e864c34d211c76ea0662fa3e0 + checksum: b6c73ec0ba3a83e7a9cc1bf0e75fd640a76bcf57742642775abf950d851478a686e3f54ad8e24a09772e1dd89ed953742418c76ebb7df12b97b68f1cb94dae80 languageName: node linkType: hard -"@types/object-path@npm:^0.11.1": - version: 0.11.1 - resolution: "@types/object-path@npm:0.11.1" - checksum: 007e819d1d9dc830491b60023b1502ef1e421416d9953d6fefcda7d06eb91548eef8ee30073a9cfb6a834ac977042f6e1a761cde2d6a7973b06ddca753be91e3 +"@types/object-path@npm:^0.11.3": + version: 0.11.3 + resolution: "@types/object-path@npm:0.11.3" + checksum: 9c2f1ec11d9d15df1682ab1483c0f51cac3ff8c3a951662a50d15fd48824fc43a052041503d0761790a29a4100e33989eb519889948c3592d0bf6bde59d3ec79 languageName: node linkType: hard @@ -13003,35 +12902,35 @@ __metadata: languageName: node linkType: hard -"@types/parseurl@npm:^1.3.1": - version: 1.3.1 - resolution: "@types/parseurl@npm:1.3.1" +"@types/parseurl@npm:^1.3.2": + version: 1.3.2 + resolution: "@types/parseurl@npm:1.3.2" dependencies: "@types/node": "*" - checksum: e2d6fd6ad3259a70239cee48de496bc5e5d074a2c52199227e7414d889b8df05c039d2cbde8198e05493f8d64fffb7de1fa98e7228ed3e3d149f6f51d31c8e9e + checksum: bfe0ad3222a957a1d8d21a5378a61a3ce21f0ce45ddfdd98fc727207b4bd3caf590d2a448c39d08774949e485a5f5f08429f6025a6b0123456a8a7fb9270ddb2 languageName: node linkType: hard -"@types/photoswipe@npm:^4.1.2": - version: 4.1.2 - resolution: "@types/photoswipe@npm:4.1.2" - checksum: 58f9b85171b5d24a70dea8b7cd68eaaef29159f05130f2284320ef438874c538f00e81763d4025d79fb03366180cff12e01c4a40d04a0c823ca4df656ee8b912 +"@types/photoswipe@npm:^4.1.5": + version: 4.1.5 + resolution: "@types/photoswipe@npm:4.1.5" + checksum: a6b5fd6b029b8e84bc43f680549abf33dbc02e551e8dd176e29ca82e80edf66d0b62777fd42fe415d9e52b7a570718cac684aaea544f8dc084d1cb8bcc422f0f languageName: node linkType: hard -"@types/polka@npm:^0.5.4": - version: 0.5.4 - resolution: "@types/polka@npm:0.5.4" +"@types/polka@npm:^0.5.6": + version: 0.5.6 + resolution: "@types/polka@npm:0.5.6" dependencies: "@types/express": "*" "@types/express-serve-static-core": "*" "@types/node": "*" "@types/trouter": "*" - checksum: 8027a6cf6989d63ad01346c031698885586f3b800746bc35c84ab66f981e452cc58f8770fec703509cacf615f450c7010eb5221cef47a75e9494cdc42df8f8b3 + checksum: e956629526782b722fe134a93e159774d13d58a66796f5b6f763b04cd5c426439a8556962e1da8e8a61574ed1ad6239ffbef28cd8c03b4f8828a9a4b03189dde languageName: node linkType: hard -"@types/prettier@npm:^2.1.5, @types/prettier@npm:^2.6.3": +"@types/prettier@npm:^2.6.3": version: 2.6.3 resolution: "@types/prettier@npm:2.6.3" checksum: e1836699ca189fff6d2a73dc22e028b6a6f693ed1180d5998ac29fa197caf8f85aa92cb38db642e4a370e616b451cb5722ad2395dab11c78e025a1455f37d1f0 @@ -13045,10 +12944,10 @@ __metadata: languageName: node linkType: hard -"@types/prometheus-gc-stats@npm:^0.6.2": - version: 0.6.2 - resolution: "@types/prometheus-gc-stats@npm:0.6.2" - checksum: 403b3dbd792b83e592376e2002260cf57fb18f98c8b8528a24dc65e545cb8d0e9bf9941dc28edfa397b670b9a7336913da991005ef0278611209dde9b51406db +"@types/prometheus-gc-stats@npm:^0.6.3": + version: 0.6.3 + resolution: "@types/prometheus-gc-stats@npm:0.6.3" + checksum: b8ad00f21c2d7f19819b0d82b778f4919847e44f1f74a570fb52386fa7c5250af3a5e2eef5b8aa69cbf7fd8cc68f31f91bd7a002ce5b3722bb971da31af543a0 languageName: node linkType: hard @@ -13066,26 +12965,26 @@ __metadata: languageName: node linkType: hard -"@types/proxy-from-env@npm:^1.0.1": - version: 1.0.1 - resolution: "@types/proxy-from-env@npm:1.0.1" +"@types/proxy-from-env@npm:^1.0.3": + version: 1.0.3 + resolution: "@types/proxy-from-env@npm:1.0.3" dependencies: "@types/node": "*" - checksum: 72d04675fc7107d4a1d4a2ca56773d0caf23bdd48fa45b96b72b199f33f54854164b994c45f549214c51227f8bb9ae4e189e48d74a4a46b668fd4210bf97f8c0 + checksum: 3661687ae4bd90b9c41e504d3e3124b1ccd7d39d5877a7930fc3630989e37bde4e6b9055ea719d4b85c400a872bee02336ee5e187380f075cec021a4aebced44 languageName: node linkType: hard -"@types/proxyquire@npm:^1.3.28": - version: 1.3.28 - resolution: "@types/proxyquire@npm:1.3.28" - checksum: 9f0267b4516c2686a2e99a6d4dbd2ed660133180aad775a4000f3e103d8b2fe6b1bfe5b36003edf7adfb02542aed6c2fa6049fc217daea73ebced2942a762f27 +"@types/proxyquire@npm:^1.3.30": + version: 1.3.30 + resolution: "@types/proxyquire@npm:1.3.30" + checksum: e247d0afdb59aae942313112ca6429b0cbe410b0a858796c63e16ea945b3a7686f0660a03c685d79f10ed807051f645a763e13aa72d3725aeea74fd40901fdad languageName: node linkType: hard -"@types/psl@npm:^1.1.0": - version: 1.1.0 - resolution: "@types/psl@npm:1.1.0" - checksum: 648a4a40827fb101a05616b9c448b04d40c467db9f09e08099274759fd5e032e7d276013296679765c7d7359f43f0479094c1d8b6a56a8f9445b84b5a9af1263 +"@types/psl@npm:^1.1.2": + version: 1.1.2 + resolution: "@types/psl@npm:1.1.2" + checksum: fc0a7ae56ca53157035226d964f5a37749187804c07787d25a3f8e0235130c277b52d027139d1a7058d7826014a8019d68d46e2719b0404ac8545d39d41fc43a languageName: node linkType: hard @@ -13110,21 +13009,21 @@ __metadata: languageName: node linkType: hard -"@types/react-beautiful-dnd@npm:^13.1.4": - version: 13.1.4 - resolution: "@types/react-beautiful-dnd@npm:13.1.4" +"@types/react-beautiful-dnd@npm:^13.1.6": + version: 13.1.6 + resolution: "@types/react-beautiful-dnd@npm:13.1.6" dependencies: "@types/react": "*" - checksum: 76220f1031721e73f712cf0021de6a3cf4049260ec29996cd587876ebd6ed01b9c31d8efb5cf230eb4d2b6259525ffe0f3054667732d30c79df37e49f9398c5e + checksum: 437c315cac4455fd0085150d5d163330e523e965193f642f45edf34eb56098e68a6f956d90ecb11abfcb03ce34177e5445c1489da46353ee5a6a6306414fb936 languageName: node linkType: hard -"@types/react-dom@npm:<18.0.0, @types/react-dom@npm:~17.0.20": - version: 17.0.20 - resolution: "@types/react-dom@npm:17.0.20" +"@types/react-dom@npm:<18.0.0, @types/react-dom@npm:~17.0.22": + version: 17.0.22 + resolution: "@types/react-dom@npm:17.0.22" dependencies: "@types/react": ^17 - checksum: 525439fb14a033fc5dbe74711ecc50ec82273a528df9656594066a6219401e975101dafffd15d9a1a57a9442d52ea0c92eaacae09554dde27cd792e773f67467 + checksum: 3c24331c0a2211370968befaad107598ee4f796c08e9b0de0b0126ee598a7c51f7bf4e0e7d9a76522a3b60d91f091d46131d136bcbe49aeb6ec3b8480dff03f9 languageName: node linkType: hard @@ -13149,14 +13048,14 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^17, @types/react@npm:~17.0.62": - version: 17.0.62 - resolution: "@types/react@npm:17.0.62" +"@types/react@npm:*, @types/react@npm:^17, @types/react@npm:~17.0.69": + version: 17.0.69 + resolution: "@types/react@npm:17.0.69" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 428a5aff44824ef504e9a9259b5894fe44a5db1c344b536990f07e132900ff5b34cbef0be77a84f30f37be1f88fc8b56dce328f568de8d65de3bfe414c05b2e1 + checksum: b83d4ec968b712b2b1a444c614b1ef3e59879c6911bc4001158de5de49b80b6a20fc4859353244f0171b94845d4c85a6379071445242ff23bbbc9b0ff24577d7 languageName: node linkType: hard @@ -13185,19 +13084,19 @@ __metadata: languageName: node linkType: hard -"@types/rewire@npm:^2.5.28": - version: 2.5.28 - resolution: "@types/rewire@npm:2.5.28" - checksum: c416a0f30b68c3d7aa7d67fa1297506d7ae890f831363f5e7a2ca704e0d3e2ec564efe1ce1f20a31f4f6408b3dc76a0f6ed79048ef4b7cc38905db31aeaf55df +"@types/rewire@npm:^2.5.29": + version: 2.5.29 + resolution: "@types/rewire@npm:2.5.29" + checksum: 2ad2f1134fe7c350fc88f0a9cc17eb49377f1a61776cde10b62bae0f5956dedd97adbb8da0e3ca8ddfb7034699a89fe2f9dc31af35f11727c4b38c8a089877c3 languageName: node linkType: hard -"@types/sanitize-html@npm:^2.9.0": - version: 2.9.0 - resolution: "@types/sanitize-html@npm:2.9.0" +"@types/sanitize-html@npm:^2.9.3": + version: 2.9.3 + resolution: "@types/sanitize-html@npm:2.9.3" dependencies: htmlparser2: ^8.0.0 - checksum: b60f42b740bbfb1b1434ce8b43925a38ecc608b60aa654fd009d2e22e33f324b61d370768c55bd2fd98e03de08518ffa8911d61606c483526fb931bb8b59d1b0 + checksum: 882a39ec767e0c5fd4402108db4b8e4f85ff555cf490ad8c7340d9c58c57c3ffefa33c0d248d5e67047df6f744ca60e125da5485efc18ac450783f3900178373 languageName: node linkType: hard @@ -13208,17 +13107,10 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^6.0.0": - version: 6.2.3 - resolution: "@types/semver@npm:6.2.3" - checksum: 83c86d7005b229df9c4c0d6d13825b839a01932895504596140aea19e2b88f63ac27ab1575347451b50eedb63f72309e845ce1a0ca78360c4f719bbb38371594 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.10, @types/semver@npm:^7.3.12": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 +"@types/semver@npm:^7.3.10, @types/semver@npm:^7.3.12, @types/semver@npm:^7.5.0": + version: 7.5.4 + resolution: "@types/semver@npm:7.5.4" + checksum: 120c0189f6fec5f2d12d0d71ac8a4cfa952dc17fa3d842e8afddb82bba8828a4052f8799c1653e2b47ae1977435f38e8985658fde971905ce5afb8e23ee97ecf languageName: node linkType: hard @@ -13260,12 +13152,12 @@ __metadata: languageName: node linkType: hard -"@types/sinon@npm:^10.0.15": - version: 10.0.15 - resolution: "@types/sinon@npm:10.0.15" +"@types/sinon@npm:^10.0.20": + version: 10.0.20 + resolution: "@types/sinon@npm:10.0.20" dependencies: "@types/sinonjs__fake-timers": "*" - checksum: cec6d7d9d5582ca3ac851b029d5d90451bfe6d376164253792a6eb6ddcd609a0411a7fac9ed92e1879e7d3ec091d2ea2e8dbb4f6140a1065439b81dc20cafa7c + checksum: 7322771345c202b90057f8112e0d34b7339e5ae1827fb1bfe385fc9e38ed6a2f18b4c66e88d27d98c775f7f74fb1167c0c14f61ca64155786534541e6c6eb05f languageName: node linkType: hard @@ -13299,12 +13191,12 @@ __metadata: languageName: node linkType: hard -"@types/speakeasy@npm:^2.0.7": - version: 2.0.7 - resolution: "@types/speakeasy@npm:2.0.7" +"@types/speakeasy@npm:^2.0.9": + version: 2.0.9 + resolution: "@types/speakeasy@npm:2.0.9" dependencies: "@types/node": "*" - checksum: 30152d950ea23654060ef596ea459935a9ea80ba4d9803b13fc9b02c7a27a7b5c96742f2cb00db51b19ba0e13ef9a16c1fd977042f61c9019b10c4191e2f1b97 + checksum: 4f3d2217f96625c481f9220a5d16a776c7003d9025fafe728f91f07ba815ac2233db4df85cf4a721b5e042a478f793eee6e4e54c397288f3a39e3f04aa8375ac languageName: node linkType: hard @@ -13324,10 +13216,10 @@ __metadata: languageName: node linkType: hard -"@types/strict-uri-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "@types/strict-uri-encode@npm:2.0.0" - checksum: e37b6e39fc1440d30bb5f114b3c56a4ecc5db1b7bb1f705bcf607d0eb9e8798953ccaa3792b35c97e74fe61fcc0ff80982d963c22bba056a0745098d4a5c6699 +"@types/strict-uri-encode@npm:^2.0.1": + version: 2.0.1 + resolution: "@types/strict-uri-encode@npm:2.0.1" + checksum: 63d62f43d20583428d112f6a9de5a444f31f8e314a8c57b9a59523f99ae3152e41e2e39ff0fb0404171135402d2226aba21a5db64de0d0d385ec8c11d5a0f4ce languageName: node linkType: hard @@ -13350,12 +13242,12 @@ __metadata: languageName: node linkType: hard -"@types/supertest@npm:^2.0.12": - version: 2.0.12 - resolution: "@types/supertest@npm:2.0.12" +"@types/supertest@npm:^2.0.15": + version: 2.0.15 + resolution: "@types/supertest@npm:2.0.15" dependencies: "@types/superagent": "*" - checksum: f0e2b44f86bec2f708d6a3d0cb209055b487922040773049b0f8c6b557af52d4b5fa904e17dfaa4ce6e610172206bbec7b62420d158fa57b6ffc2de37b1730d3 + checksum: 89c1983662f0ab20969b3a6c44344397fd222d0f78b282619aabbe817f7c88a64210fd2b8b8f075ea22a27084e30ebc287bc5105619cbbf9af7f008e77f6eb93 languageName: node linkType: hard @@ -13375,19 +13267,19 @@ __metadata: languageName: node linkType: hard -"@types/testing-library__jest-dom@npm:^5.9.1, @types/testing-library__jest-dom@npm:~5.14.6": - version: 5.14.6 - resolution: "@types/testing-library__jest-dom@npm:5.14.6" +"@types/testing-library__jest-dom@npm:^5.9.1, @types/testing-library__jest-dom@npm:~5.14.9": + version: 5.14.9 + resolution: "@types/testing-library__jest-dom@npm:5.14.9" dependencies: "@types/jest": "*" - checksum: 92f81cefeacba3b5c06d4b3fbea0341fe2bcaa6e425c026ae262de39f1148c2588cf3003112aa4ac0880c3972ffb77641a863f3be71518d1d8080402c944e326 + checksum: d364494fc2545316292e88861146146af1e3818792ca63b62a63758b2f737669b687f4aaddfcfbcb7d0e1ed7890a9bd05de23ff97f277d5e68de574497a9ee72 languageName: node linkType: hard -"@types/textarea-caret@npm:^3.0.1": - version: 3.0.1 - resolution: "@types/textarea-caret@npm:3.0.1" - checksum: 18ff4275f0411187aebf4f475e318f5c62a87c056d3ff280b86e18fca6bf2c9bfab9ea885135f210131df230fc761b9f560b66dd8d3d2ebb161610f4ffbf3541 +"@types/textarea-caret@npm:^3.0.2": + version: 3.0.2 + resolution: "@types/textarea-caret@npm:3.0.2" + checksum: 6989477fa7be544cb84ffbb3302d5c4c2632e7900e0fcc12adf9bd78f4d0ebbf38db9392cb39c8fa791aba935013e1b14aeb1c222f328a67de6202f945331e73 languageName: node linkType: hard @@ -13419,10 +13311,10 @@ __metadata: languageName: node linkType: hard -"@types/ua-parser-js@npm:^0.7.36": - version: 0.7.36 - resolution: "@types/ua-parser-js@npm:0.7.36" - checksum: 8c24d4dc12ed1b8b98195838093391c358c81bf75e9cae0ecec8f7824b441e069daaa17b974a3e257172caddb671439f0c0b44bf43bfcf409b7a574a25aab948 +"@types/ua-parser-js@npm:^0.7.38": + version: 0.7.38 + resolution: "@types/ua-parser-js@npm:0.7.38" + checksum: 8a44887f7c782ed4c59c4d9cb254674f2ff41d8f653da0c2bd6d4ace79cc3de1ce5648b77f906e337fb97328e1114583e54c3b8882d194e1b8cb281f407a1ef7 languageName: node linkType: hard @@ -13449,17 +13341,17 @@ __metadata: languageName: node linkType: hard -"@types/use-subscription@npm:^1.0.0": - version: 1.0.0 - resolution: "@types/use-subscription@npm:1.0.0" - checksum: 47fff868682692ecda7110bd04ba4c5b1324854c0bcccc765606a42d4bd9be475207413c8829a883b98e7edd801100df53876da0ff89ac21a8f964e440636ef2 +"@types/use-subscription@npm:^1.0.1": + version: 1.0.1 + resolution: "@types/use-subscription@npm:1.0.1" + checksum: f9e3535d40dbcd606e7ef306120c52a78b9da7a94ebe0b56af8f8326984588b2db12fbc841e2b2d719728810816afa9c7d64b40a849048186a4308e2f3ff0339 languageName: node linkType: hard -"@types/use-sync-external-store@npm:^0.0.3": - version: 0.0.3 - resolution: "@types/use-sync-external-store@npm:0.0.3" - checksum: 161ddb8eec5dbe7279ac971531217e9af6b99f7783213566d2b502e2e2378ea19cf5e5ea4595039d730aa79d3d35c6567d48599f69773a02ffcff1776ec2a44e +"@types/use-sync-external-store@npm:^0.0.5": + version: 0.0.5 + resolution: "@types/use-sync-external-store@npm:0.0.5" + checksum: 96a22fa059d8a6d0fe0b03e5157eb22f599ab1cc58b9441617dec4be6d8586260fcf9041912ab90e92d9c6ea6dfec5c758bae6418552aa687fc7e0bb904e68bc languageName: node linkType: hard @@ -13477,14 +13369,14 @@ __metadata: languageName: node linkType: hard -"@types/webpack-bundle-analyzer@npm:^4": - version: 4.6.0 - resolution: "@types/webpack-bundle-analyzer@npm:4.6.0" +"@types/webpack-bundle-analyzer@npm:^4.6.2": + version: 4.6.2 + resolution: "@types/webpack-bundle-analyzer@npm:4.6.2" dependencies: "@types/node": "*" tapable: ^2.2.0 webpack: ^5 - checksum: 1cd5baa621a1dbe820bacf981d6e48f3423b733fb5e33c1356347e73d5e3e880ae6ebacf8f43d9e47e135d3ed2653ec5e40e12c6ce187f2eb3f548d9c949f6aa + checksum: 2f798e0c6a4aac9da84f56c4600c8fafbac7cc2316b0a0b3e35cab46f5b0d045c29b8c9803c64f03756faa941ff7344920e16b45fe46a322ae3be52f4c8dee76 languageName: node linkType: hard @@ -13575,31 +13467,31 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.1, @types/ws@npm:^8.5.5": - version: 8.5.5 - resolution: "@types/ws@npm:8.5.5" +"@types/ws@npm:^8.5.1, @types/ws@npm:^8.5.5, @types/ws@npm:^8.5.8": + version: 8.5.8 + resolution: "@types/ws@npm:8.5.8" dependencies: "@types/node": "*" - checksum: d00bf8070e6938e3ccf933010921c6ce78ac3606696ce37a393b27a9a603f7bd93ea64f3c5fa295a2f743575ba9c9a9fdb904af0f5fe2229bf2adf0630386e4a + checksum: 4ad30de842834d4dd8e6e1476470752709d4165352a3a36780f23f4fdb686d4ac8ca5e16a0e0622940ddace910b856ff8a0baa2e24e41d204fb7a6a02ab2172b languageName: node linkType: hard -"@types/xml-crypto@npm:~1.4.2": - version: 1.4.2 - resolution: "@types/xml-crypto@npm:1.4.2" +"@types/xml-crypto@npm:~1.4.4": + version: 1.4.4 + resolution: "@types/xml-crypto@npm:1.4.4" dependencies: "@types/node": "*" xpath: 0.0.27 - checksum: 8fe8fc709ba070c46249800105301a533eb95e1a7a696986e4ac753aed1d238a826bce2b1e0d2548559e03f4e57bee27e26df69417766814bc0dd6a9bf2a1763 + checksum: c19616b531b26d7f3fafee6165d7be42969bfa2ef7184f501c489c80515d483425fb97e55ae816d91cf2f92e765e81f0a7cfc97c5dedb46f829edb677b154a55 languageName: node linkType: hard -"@types/xml-encryption@npm:~1.2.1": - version: 1.2.1 - resolution: "@types/xml-encryption@npm:1.2.1" +"@types/xml-encryption@npm:~1.2.3": + version: 1.2.3 + resolution: "@types/xml-encryption@npm:1.2.3" dependencies: "@types/node": "*" - checksum: abfc6d779e1674c268258296e9c03b307cb80383c5d598c0cda1ad75dc901b8d4104b5818990086b08bac199dbe7374706913a29c58cf614a741847f912854f1 + checksum: 1f678c5cb7378702dd1bfbbe1ec3b4dd62d7b8350c225866df109d60c8c7c4e39b20d32193ead175b1c68944ce22ffcae470685371e6257bf0bfe45f7f366aec languageName: node linkType: hard @@ -14169,10 +14061,10 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.8.5, @xmldom/xmldom@npm:^0.8.8": - version: 0.8.8 - resolution: "@xmldom/xmldom@npm:0.8.8" - checksum: 5f5fc0482fcc599f62e3009516932a265e00f1bb2093fe2c76f3f8d9bfebdd13246f48d4132c9b301c7a573f0fa8712e56aa747dce75b179c2b73f1dde7b5f42 +"@xmldom/xmldom@npm:^0.8.10, @xmldom/xmldom@npm:^0.8.5": + version: 0.8.10 + resolution: "@xmldom/xmldom@npm:0.8.10" + checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 languageName: node linkType: hard @@ -14886,7 +14778,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:5.1.3": +"aria-query@npm:5.1.3, aria-query@npm:^5.0.0": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -14895,13 +14787,6 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0": - version: 5.0.0 - resolution: "aria-query@npm:5.0.0" - checksum: c41f98866c5a304561ee8cae55856711cddad6f3f85d8cb43cc5f79667078d9b8979ce32d244c1ff364e6463a4d0b6865804a33ccc717fed701b281cf7dc6296 - languageName: node - linkType: hard - "arr-diff@npm:^4.0.0": version: 4.0.0 resolution: "arr-diff@npm:4.0.0" @@ -15028,19 +14913,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.map@npm:^1.0.4": - version: 1.0.4 - resolution: "array.prototype.map@npm:1.0.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - es-array-method-boxes-properly: ^1.0.0 - is-string: ^1.0.7 - checksum: 08c8065ae9e60585c1262e54556da2340cd140dc799d790843c1f4ad3a3f458e9866d147c8ff0308741e8316904313f682803ca15c179f65cb2f5b993fa71a82 - languageName: node - linkType: hard - "array.prototype.map@npm:^1.0.5": version: 1.0.6 resolution: "array.prototype.map@npm:1.0.6" @@ -15432,20 +15304,27 @@ __metadata: languageName: node linkType: hard -"babel-jest@npm:^29.0.3, babel-jest@npm:^29.5.0, babel-jest@npm:^29.6.1": - version: 29.6.1 - resolution: "babel-jest@npm:29.6.1" +"b4a@npm:^1.6.4": + version: 1.6.4 + resolution: "b4a@npm:1.6.4" + checksum: 81b086f9af1f8845fbef4476307236bda3d660c158c201db976f19cdce05f41f93110ab6b12fd7a2696602a490cc43d5410ee36a56d6eef93afb0d6ca69ac3b2 + languageName: node + linkType: hard + +"babel-jest@npm:^29.0.3, babel-jest@npm:^29.5.0, babel-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "babel-jest@npm:29.7.0" dependencies: - "@jest/transform": ^29.6.1 + "@jest/transform": ^29.7.0 "@types/babel__core": ^7.1.14 babel-plugin-istanbul: ^6.1.1 - babel-preset-jest: ^29.5.0 + babel-preset-jest: ^29.6.3 chalk: ^4.0.0 graceful-fs: ^4.2.9 slash: ^3.0.0 peerDependencies: "@babel/core": ^7.8.0 - checksum: bc46cfba468edde91f34a8292501d4448a39fab72d80d7d95f4349feb114fa21becb01def007d6166de7933ab9633bf5b5e1b72ba6ffeaa991f7abf014a2f61d + checksum: ee6f8e0495afee07cac5e4ee167be705c711a8cc8a737e05a587a131fdae2b3c8f9aa55dfd4d9c03009ac2d27f2de63d8ba96d3e8460da4d00e8af19ef9a83f7 languageName: node linkType: hard @@ -15527,15 +15406,15 @@ __metadata: languageName: node linkType: hard -"babel-plugin-jest-hoist@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-plugin-jest-hoist@npm:29.5.0" +"babel-plugin-jest-hoist@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-plugin-jest-hoist@npm:29.6.3" dependencies: "@babel/template": ^7.3.3 "@babel/types": ^7.3.3 "@types/babel__core": ^7.1.14 "@types/babel__traverse": ^7.0.6 - checksum: 099b5254073b6bc985b6d2d045ad26fb8ed30ff8ae6404c4fe8ee7cd0e98a820f69e3dfb871c7c65aae0f4b65af77046244c07bb92d49ef9005c90eedf681539 + checksum: 51250f22815a7318f17214a9d44650ba89551e6d4f47a2dc259128428324b52f5a73979d010cefd921fd5a720d8c1d55ad74ff601cd94c7bd44d5f6292fde2d1 languageName: node linkType: hard @@ -15649,15 +15528,15 @@ __metadata: languageName: node linkType: hard -"babel-preset-jest@npm:^29.5.0": - version: 29.5.0 - resolution: "babel-preset-jest@npm:29.5.0" +"babel-preset-jest@npm:^29.6.3": + version: 29.6.3 + resolution: "babel-preset-jest@npm:29.6.3" dependencies: - babel-plugin-jest-hoist: ^29.5.0 + babel-plugin-jest-hoist: ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 peerDependencies: "@babel/core": ^7.0.0 - checksum: 5566ca2762766c9319b4973d018d2fa08c0fcf6415c72cc54f4c8e7199e851ea8f5e6c6730f03ed7ed44fc8beefa959dd15911f2647dee47c615ff4faeddb1ad + checksum: aa4ff2a8a728d9d698ed521e3461a109a1e66202b13d3494e41eea30729a5e7cc03b3a2d56c594423a135429c37bf63a9fa8b0b9ce275298be3095a88c69f6fb languageName: node linkType: hard @@ -16035,24 +15914,6 @@ __metadata: languageName: node linkType: hard -"body-parser@npm:1.19.2": - version: 1.19.2 - resolution: "body-parser@npm:1.19.2" - dependencies: - bytes: 3.1.2 - content-type: ~1.0.4 - debug: 2.6.9 - depd: ~1.1.2 - http-errors: 1.8.1 - iconv-lite: 0.4.24 - on-finished: ~2.3.0 - qs: 6.9.7 - raw-body: 2.4.3 - type-is: ~1.6.18 - checksum: 7f777ea65670e2622ca4a785b5dcb2a68451b3bb8d4d0f41091d307d56b640dba588a9ae04d85dda2cdd5e42788266a783528d5417e5643720fd611fd52522e7 - languageName: node - linkType: hard - "body-parser@npm:1.20.1": version: 1.20.1 resolution: "body-parser@npm:1.20.1" @@ -16953,18 +16814,18 @@ __metadata: languageName: node linkType: hard -"chai@npm:>1.9.0, chai@npm:^4.3.7": - version: 4.3.7 - resolution: "chai@npm:4.3.7" +"chai@npm:>1.9.0, chai@npm:^4.3.10": + version: 4.3.10 + resolution: "chai@npm:4.3.10" dependencies: assertion-error: ^1.1.0 - check-error: ^1.0.2 - deep-eql: ^4.1.2 - get-func-name: ^2.0.0 - loupe: ^2.3.1 + check-error: ^1.0.3 + deep-eql: ^4.1.3 + get-func-name: ^2.0.2 + loupe: ^2.3.6 pathval: ^1.1.1 - type-detect: ^4.0.5 - checksum: 0bba7d267848015246a66995f044ce3f0ebc35e530da3cbdf171db744e14cbe301ab913a8d07caf7952b430257ccbb1a4a983c570a7c5748dc537897e5131f7c + type-detect: ^4.0.8 + checksum: 536668c60a0d985a0fbd94418028e388d243a925d7c5e858c7443e334753511614a3b6a124bac9ca077dfc4c37acc367d62f8c294960f440749536dc181dfc6d languageName: node linkType: hard @@ -17125,10 +16986,12 @@ __metadata: languageName: node linkType: hard -"check-error@npm:^1.0.2": - version: 1.0.2 - resolution: "check-error@npm:1.0.2" - checksum: d9d106504404b8addd1ee3f63f8c0eaa7cd962a1a28eb9c519b1c4a1dc7098be38007fc0060f045ee00f075fbb7a2a4f42abcf61d68323677e11ab98dc16042e +"check-error@npm:^1.0.2, check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: ^2.0.2 + checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 languageName: node linkType: hard @@ -17524,10 +17387,10 @@ __metadata: languageName: node linkType: hard -"codemirror@npm:^5.65.13": - version: 5.65.13 - resolution: "codemirror@npm:5.65.13" - checksum: 47060461edaebecd03b3fba4e73a30cdccc0c51ce3a3a05bafae3c9cafd682101383e94d77d54081eaf1ae18da5b74343e98343c637c52cea409956469039098 +"codemirror@npm:^5.65.15": + version: 5.65.15 + resolution: "codemirror@npm:5.65.15" + checksum: 30e0cff9bfb2265b94fa6766e13975cb71db228e114d6d8cdcc160b495e32b0ff921ac09959715e3fef30a48c5a9d0655ffd0ff6c5fe7024656add438bb2b058 languageName: node linkType: hard @@ -17997,13 +17860,6 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.4.2": - version: 0.4.2 - resolution: "cookie@npm:0.4.2" - checksum: a00833c998bedf8e787b4c342defe5fa419abd96b32f4464f718b91022586b8f1bafbddd499288e75c037642493c83083da426c6a9080d309e3bd90fd11baa9b - languageName: node - linkType: hard - "cookie@npm:0.5.0, cookie@npm:^0.5.0": version: 0.5.0 resolution: "cookie@npm:0.5.0" @@ -18234,6 +18090,23 @@ __metadata: languageName: node linkType: hard +"create-jest@npm:^29.7.0": + version: 29.7.0 + resolution: "create-jest@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + chalk: ^4.0.0 + exit: ^0.1.2 + graceful-fs: ^4.2.9 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + prompts: ^2.0.1 + bin: + create-jest: bin/create-jest.js + checksum: 1427d49458adcd88547ef6fa39041e1fe9033a661293aa8d2c3aa1b4967cb5bf4f0c00436c7a61816558f28ba2ba81a94d5c962e8022ea9a883978fc8e1f2945 + languageName: node + linkType: hard + "create-require@npm:^1.1.0": version: 1.1.1 resolution: "create-require@npm:1.1.1" @@ -19174,7 +19047,19 @@ __metadata: languageName: node linkType: hard -"deep-eql@npm:^4.1.2": +"dedent@npm:^1.0.0": + version: 1.5.1 + resolution: "dedent@npm:1.5.1" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: c3c300a14edf1bdf5a873f9e4b22e839d62490bc5c8d6169c1f15858a1a76733d06a9a56930e963d677a2ceeca4b6b0894cc5ea2f501aa382ca5b92af3413c2a + languageName: node + linkType: hard + +"deep-eql@npm:^4.1.3": version: 4.1.3 resolution: "deep-eql@npm:4.1.3" dependencies: @@ -19411,13 +19296,6 @@ __metadata: languageName: node linkType: hard -"destroy@npm:~1.0.4": - version: 1.0.4 - resolution: "destroy@npm:1.0.4" - checksum: da9ab4961dc61677c709da0c25ef01733042614453924d65636a7db37308fef8a24cd1e07172e61173d471ca175371295fbc984b0af5b2b4ff47cd57bd784c03 - languageName: node - linkType: hard - "desvg-loader@npm:^0.1.0": version: 0.1.0 resolution: "desvg-loader@npm:0.1.0" @@ -19452,13 +19330,20 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^2.0.0, detect-libc@npm:^2.0.1": +"detect-libc@npm:^2.0.0": version: 2.0.1 resolution: "detect-libc@npm:2.0.1" checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 languageName: node linkType: hard +"detect-libc@npm:^2.0.2": + version: 2.0.2 + resolution: "detect-libc@npm:2.0.2" + checksum: 2b2cd3649b83d576f4be7cc37eb3b1815c79969c8b1a03a40a4d55d83bc74d010753485753448eacb98784abf22f7dbd3911fd3b60e29fda28fed2d1a997944d + languageName: node + linkType: hard + "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -19526,10 +19411,10 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.4.3": - version: 29.4.3 - resolution: "diff-sequences@npm:29.4.3" - checksum: 28b265e04fdddcf7f9f814effe102cc95a9dec0564a579b5aed140edb24fc345c611ca52d76d725a3cab55d3888b915b5e8a4702e0f6058968a90fa5f41fcde7 +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa languageName: node linkType: hard @@ -20292,39 +20177,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.2, es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.5, es-abstract@npm:^1.20.4": - version: 1.20.4 - resolution: "es-abstract@npm:1.20.4" - dependencies: - call-bind: ^1.0.2 - es-to-primitive: ^1.2.1 - function-bind: ^1.1.1 - function.prototype.name: ^1.1.5 - get-intrinsic: ^1.1.3 - get-symbol-description: ^1.0.0 - has: ^1.0.3 - has-property-descriptors: ^1.0.0 - has-symbols: ^1.0.3 - internal-slot: ^1.0.3 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-weakref: ^1.0.2 - object-inspect: ^1.12.2 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - safe-regex-test: ^1.0.0 - string.prototype.trimend: ^1.0.5 - string.prototype.trimstart: ^1.0.5 - unbox-primitive: ^1.0.2 - checksum: 89297cc785c31aedf961a603d5a07ed16471e435d3a1b6d070b54f157cf48454b95cda2ac55e4b86ff4fe3276e835fcffd2771578e6fa634337da49b26826141 - languageName: node - linkType: hard - -"es-abstract@npm:^1.22.1": +"es-abstract@npm:^1.17.2, es-abstract@npm:^1.19.1, es-abstract@npm:^1.20.4, es-abstract@npm:^1.22.1": version: 1.22.2 resolution: "es-abstract@npm:1.22.2" dependencies: @@ -20684,13 +20537,13 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:~27.2.2": - version: 27.2.2 - resolution: "eslint-plugin-jest@npm:27.2.2" +"eslint-plugin-jest@npm:~27.2.3": + version: 27.2.3 + resolution: "eslint-plugin-jest@npm:27.2.3" dependencies: "@typescript-eslint/utils": ^5.10.0 peerDependencies: - "@typescript-eslint/eslint-plugin": ^5.0.0 + "@typescript-eslint/eslint-plugin": ^5.0.0 || ^6.0.0 eslint: ^7.0.0 || ^8.0.0 jest: "*" peerDependenciesMeta: @@ -20698,7 +20551,7 @@ __metadata: optional: true jest: optional: true - checksum: 98b63252d985f5dedf36ce9587dd4a0d24daf71ca8a997258343402c0d33ddd5070502378dafd9ac7fc0ef2e0d557b5c77f18e09ad73c71a52de8061db88293f + checksum: 4c7e07f52f17749ac6fd0ff5fcd5ce30b88983ba31eeee322e4d48859f55eaa112f06172e586ad2031c00ff28bb2dfdc3d35c83895251b9c0e860fa47dfc5ff4 languageName: node linkType: hard @@ -20711,16 +20564,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-playwright@npm:~0.15.0": - version: 0.15.0 - resolution: "eslint-plugin-playwright@npm:0.15.0" +"eslint-plugin-playwright@npm:~0.15.3": + version: 0.15.3 + resolution: "eslint-plugin-playwright@npm:0.15.3" peerDependencies: eslint: ">=7" eslint-plugin-jest: ">=25" peerDependenciesMeta: eslint-plugin-jest: optional: true - checksum: fe772ee1f611802f70310cd02d2048f64b244644fcb00b47e935aac8cfab800612b122fe50deb3e1ea6bde1d1d635a745f3574cc316fcccbeaaa278be9c2e20f + checksum: 5dff7f1d8346dac41980197ce24f2629f09acc44b612c38a6859cb31d5dc29caa4d9a09fec0b10443bae7ebc4b79d4c926dca284707bae729469016ce9f1dbfc languageName: node linkType: hard @@ -20748,12 +20601,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-refresh@npm:^0.4.1": - version: 0.4.1 - resolution: "eslint-plugin-react-refresh@npm:0.4.1" +"eslint-plugin-react-refresh@npm:^0.4.4": + version: 0.4.4 + resolution: "eslint-plugin-react-refresh@npm:0.4.4" peerDependencies: eslint: ">=7" - checksum: 932f982797ef54a87e20039c32739c1a6df8355165d17ba851620b4690632432f511605e20c30e6abdb4c58d2bd926e96347f9253db724dcf3dae92bd1258d1d + checksum: 6b93f43cef5f69c18751db3267ce6cc7cb88f07061df28fc12401be56d93f37134f2a794c760f51cd5f84c5e81d81b003ef761ca76e7674646808b82884aa356 languageName: node linkType: hard @@ -20782,9 +20635,9 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-storybook@npm:~0.6.12": - version: 0.6.12 - resolution: "eslint-plugin-storybook@npm:0.6.12" +"eslint-plugin-storybook@npm:~0.6.15": + version: 0.6.15 + resolution: "eslint-plugin-storybook@npm:0.6.15" dependencies: "@storybook/csf": ^0.0.1 "@typescript-eslint/utils": ^5.45.0 @@ -20792,18 +20645,18 @@ __metadata: ts-dedent: ^2.2.0 peerDependencies: eslint: ">=6" - checksum: 8e0e160c71216019c291a5a03b797b5359076067d16ea03b3dec63594093d45398f028d15c47eb89f2ddb6e8db18cc7e376b02d921dacc4fb31bbc8da46363c8 + checksum: e2c4d7be3e695c88d7194c363fba8ac644b36583bf9d608aa59dcd53cc5e422f7828611ee49c7934639ce827c0206d33fa94b3ea452ffbd2c8e7254ed90bc412 languageName: node linkType: hard -"eslint-plugin-testing-library@npm:^5.11.0, eslint-plugin-testing-library@npm:~5.11.0": - version: 5.11.0 - resolution: "eslint-plugin-testing-library@npm:5.11.0" +"eslint-plugin-testing-library@npm:^5.11.1, eslint-plugin-testing-library@npm:~5.11.1": + version: 5.11.1 + resolution: "eslint-plugin-testing-library@npm:5.11.1" dependencies: "@typescript-eslint/utils": ^5.58.0 peerDependencies: eslint: ^7.5.0 || ^8.0.0 - checksum: 7f19d3dedd7788b411ca3d9045de682feb26025b9c26d97d4e2f0bf62f5eaa276147d946bd5d0cd967b822e546a954330fdb7ef80485301264f646143f011a02 + checksum: 9f3fc68ef9f13016a4381b33ab5dbffcc189e5de3eaeba184bcf7d2771faa7f54e59c04b652162fb1c0f83fb52428dd909db5450a25508b94be59eba69fcc990 languageName: node linkType: hard @@ -21318,17 +21171,16 @@ __metadata: languageName: node linkType: hard -"expect@npm:^29.0.0, expect@npm:^29.6.1": - version: 29.6.1 - resolution: "expect@npm:29.6.1" +"expect@npm:^29.0.0, expect@npm:^29.7.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" dependencies: - "@jest/expect-utils": ^29.6.1 - "@types/node": "*" - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 - checksum: 4e712e52c90f6c54e748fd2876be33c43ada6a59088ddf6a1acb08b18b3b97b3a672124684abe32599986d2f2a438d5afad148837ee06ea386d2a4bf0348de78 + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c languageName: node linkType: hard @@ -21355,7 +21207,7 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.16.4": +"express@npm:^4.16.4, express@npm:^4.17.1, express@npm:^4.17.2, express@npm:^4.17.3": version: 4.18.2 resolution: "express@npm:4.18.2" dependencies: @@ -21394,44 +21246,6 @@ __metadata: languageName: node linkType: hard -"express@npm:^4.17.1, express@npm:^4.17.2, express@npm:^4.17.3": - version: 4.17.3 - resolution: "express@npm:4.17.3" - dependencies: - accepts: ~1.3.8 - array-flatten: 1.1.1 - body-parser: 1.19.2 - content-disposition: 0.5.4 - content-type: ~1.0.4 - cookie: 0.4.2 - cookie-signature: 1.0.6 - debug: 2.6.9 - depd: ~1.1.2 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - finalhandler: ~1.1.2 - fresh: 0.5.2 - merge-descriptors: 1.0.1 - methods: ~1.1.2 - on-finished: ~2.3.0 - parseurl: ~1.3.3 - path-to-regexp: 0.1.7 - proxy-addr: ~2.0.7 - qs: 6.9.7 - range-parser: ~1.2.1 - safe-buffer: 5.2.1 - send: 0.17.2 - serve-static: 1.14.2 - setprototypeof: 1.2.0 - statuses: ~1.5.0 - type-is: ~1.6.18 - utils-merge: 1.0.1 - vary: ~1.1.2 - checksum: 967e53b74a37eafdf9789b9938c8df86102928b4985b1ad5e385c709deeab405a364de95ca744bc2cc5d05b5d9cc1efc69ae2ae17688a462038648d5a924bfad - languageName: node - linkType: hard - "ext-list@npm:^2.0.0": version: 2.2.2 resolution: "ext-list@npm:2.2.2" @@ -21546,6 +21360,13 @@ __metadata: languageName: node linkType: hard +"fast-fifo@npm:^1.1.0, fast-fifo@npm:^1.2.0": + version: 1.3.2 + resolution: "fast-fifo@npm:1.3.2" + checksum: 6bfcba3e4df5af7be3332703b69a7898a8ed7020837ec4395bb341bd96cc3a6d86c3f6071dd98da289618cf2234c70d84b2a6f09a33dd6f988b1ff60d8e54275 + languageName: node + linkType: hard + "fast-glob@npm:^2.2.6": version: 2.2.7 resolution: "fast-glob@npm:2.2.7" @@ -21653,6 +21474,17 @@ __metadata: languageName: node linkType: hard +"fast-xml-parser@npm:^4.2.4": + version: 4.3.2 + resolution: "fast-xml-parser@npm:4.3.2" + dependencies: + strnum: ^1.0.5 + bin: + fxparser: src/cli/cli.js + checksum: d507ce2efa5fd13d0a5ba28bd76dd68f2fc30ad8748357c37b70f360d19417866d79e35a688af067d5bceaaa796033fa985206aef9692f7a421e1326b6e73309 + languageName: node + linkType: hard + "fastest-levenshtein@npm:^1.0.12": version: 1.0.12 resolution: "fastest-levenshtein@npm:1.0.12" @@ -21660,7 +21492,7 @@ __metadata: languageName: node linkType: hard -"fastest-validator@npm:^1.16.0": +"fastest-validator@npm:^1.17.0": version: 1.17.0 resolution: "fastest-validator@npm:1.17.0" checksum: 0a6240f6dc7b544b3aadf9367410ecd64590dbfe505e6a24c339df954dd216f3a714d64a224abeef531d0a40dc348efe6cdbf59372d28954ac450cc0b212e0ec @@ -21962,7 +21794,7 @@ __metadata: languageName: node linkType: hard -"finalhandler@npm:1.1.2, finalhandler@npm:~1.1.2": +"finalhandler@npm:1.1.2": version: 1.1.2 resolution: "finalhandler@npm:1.1.2" dependencies: @@ -22529,19 +22361,7 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.5": - version: 1.1.5 - resolution: "function.prototype.name@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.0 - functions-have-names: ^1.2.2 - checksum: acd21d733a9b649c2c442f067567743214af5fa248dbeee69d8278ce7df3329ea5abac572be9f7470b4ec1cd4d8f1040e3c5caccf98ebf2bf861a0deab735c27 - languageName: node - linkType: hard - -"function.prototype.name@npm:^1.1.6": +"function.prototype.name@npm:^1.1.0, function.prototype.name@npm:^1.1.6": version: 1.1.6 resolution: "function.prototype.name@npm:1.1.6" dependencies: @@ -22560,7 +22380,7 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": +"functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 @@ -22679,10 +22499,10 @@ __metadata: languageName: node linkType: hard -"generate-password@npm:^1.7.0": - version: 1.7.0 - resolution: "generate-password@npm:1.7.0" - checksum: c0d13e9a9c72d84adc4365a0c0dbd28463f2da1975b4ec83f34a126b95122551274755db641418e5aa11c8d94c1d216c8da8314f38e56e05378e1a43792f4614 +"generate-password@npm:^1.7.1": + version: 1.7.1 + resolution: "generate-password@npm:1.7.1" + checksum: 76ab72dcf13ae174e4e069b32b94d7c2613c6e83db1c00ffad17a480a80875b28c4ed8f0767b143f7103b0742afb45a10549e6ef2f72c0a994979e77b8e95b86 languageName: node linkType: hard @@ -22714,10 +22534,10 @@ __metadata: languageName: node linkType: hard -"get-func-name@npm:^2.0.0": - version: 2.0.0 - resolution: "get-func-name@npm:2.0.0" - checksum: 8d82e69f3e7fab9e27c547945dfe5cc0c57fc0adf08ce135dddb01081d75684a03e7a0487466f478872b341d52ac763ae49e660d01ab83741f74932085f693c3 +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b languageName: node linkType: hard @@ -23087,16 +22907,7 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.0": - version: 1.0.2 - resolution: "globalthis@npm:1.0.2" - dependencies: - define-properties: ^1.1.3 - checksum: 5a5f3c7ab94708260a98106b35946b74bb57f6b2013e39668dc9e8770b80a3418103b63a2b4aa01c31af15fdf6a2940398ffc0a408573c34c2304f928895adff - languageName: node - linkType: hard - -"globalthis@npm:^1.0.3": +"globalthis@npm:^1.0.0, globalthis@npm:^1.0.3": version: 1.0.3 resolution: "globalthis@npm:1.0.3" dependencies: @@ -23211,10 +23022,10 @@ __metadata: languageName: node linkType: hard -"google-libphonenumber@npm:^3.2.32": - version: 3.2.32 - resolution: "google-libphonenumber@npm:3.2.32" - checksum: 6f6e033df053759758c37a3ca76e83d2026933d900ffb24349040767561f81e4c2faa88a01b023019528f4f560d4a878c2c635b6e604c9d3111f801eb514c959 +"google-libphonenumber@npm:^3.2.33": + version: 3.2.33 + resolution: "google-libphonenumber@npm:3.2.33" + checksum: d029c19c7278ac9acb446028c2e304df16341732905a0cf8a105ab595cb19c01456fd57d76e48a3220038044d8ce361edc539eea2bfd924ea36fb28178cf7dbe languageName: node linkType: hard @@ -24089,19 +23900,6 @@ __metadata: languageName: node linkType: hard -"http-errors@npm:1.8.1": - version: 1.8.1 - resolution: "http-errors@npm:1.8.1" - dependencies: - depd: ~1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: ">= 1.5.0 < 2" - toidentifier: 1.0.1 - checksum: d3c7e7e776fd51c0a812baff570bdf06fe49a5dc448b700ab6171b1250e4cf7db8b8f4c0b133e4bfe2451022a5790c1ca6c2cae4094dedd6ac8304a1267f91d2 - languageName: node - linkType: hard - "http-errors@npm:2.0.0": version: 2.0.0 resolution: "http-errors@npm:2.0.0" @@ -24322,12 +24120,12 @@ __metadata: languageName: node linkType: hard -"i18next@npm:>=17.0.11, i18next@npm:~23.4.5": - version: 23.4.5 - resolution: "i18next@npm:23.4.5" +"i18next@npm:>=17.0.11, i18next@npm:~23.4.9": + version: 23.4.9 + resolution: "i18next@npm:23.4.9" dependencies: "@babel/runtime": ^7.22.5 - checksum: b39a1edc19fc6fb34df4fd95581e2b86dd5d8c8345e3409a3366df606a72b62f25ee31a82fb9b0e22161cd856408989c91b74ee737b0cce00d547e6d371a14f5 + checksum: 46ac2415dc817c0e25e1c5e64332249825cd63b5fb9a5d42e3a2329d4ecd098c0f15a243f56b53e03db02e2e9931ca9bb4447370b2436f9ad6556de40ce981cf languageName: node linkType: hard @@ -24905,10 +24703,10 @@ __metadata: languageName: node linkType: hard -"ipaddr.js@npm:^2.0.1": - version: 2.0.1 - resolution: "ipaddr.js@npm:2.0.1" - checksum: dd194a394a843d470f88d17191b0948f383ed1c8e320813f850c336a0fcb5e9215d97ec26ca35ab4fbbd31392c8b3467f3e8344628029ed3710b2ff6b5d1034e +"ipaddr.js@npm:^2.0.1, ipaddr.js@npm:^2.1.0": + version: 2.1.0 + resolution: "ipaddr.js@npm:2.1.0" + checksum: 807a054f2bd720c4d97ee479d6c9e865c233bea21f139fb8dabd5a35c4226d2621c42e07b4ad94ff3f82add926a607d8d9d37c625ad0319f0e08f9f2bd1968e2 languageName: node linkType: hard @@ -25871,7 +25669,7 @@ __metadata: languageName: node linkType: hard -"istanbul-lib-instrument@npm:^5.0.4, istanbul-lib-instrument@npm:^5.1.0": +"istanbul-lib-instrument@npm:^5.0.4": version: 5.1.0 resolution: "istanbul-lib-instrument@npm:5.1.0" dependencies: @@ -25884,6 +25682,19 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-instrument@npm:^6.0.0": + version: 6.0.1 + resolution: "istanbul-lib-instrument@npm:6.0.1" + dependencies: + "@babel/core": ^7.12.3 + "@babel/parser": ^7.14.7 + "@istanbuljs/schema": ^0.1.2 + istanbul-lib-coverage: ^3.2.0 + semver: ^7.5.4 + checksum: fb23472e739cfc9b027cefcd7d551d5e7ca7ff2817ae5150fab99fe42786a7f7b56a29a2aa8309c37092e18297b8003f9c274f50ca4360949094d17fbac81472 + languageName: node + linkType: hard + "istanbul-lib-processinfo@npm:^2.0.2": version: 2.0.3 resolution: "istanbul-lib-processinfo@npm:2.0.3" @@ -25970,59 +25781,59 @@ __metadata: languageName: node linkType: hard -"jest-changed-files@npm:^29.5.0": - version: 29.5.0 - resolution: "jest-changed-files@npm:29.5.0" +"jest-changed-files@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-changed-files@npm:29.7.0" dependencies: execa: ^5.0.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - checksum: a67a7cb3c11f8f92bd1b7c79e84f724cbd11a9ad51f3cdadafe3ce7ee3c79ee50dbea128f920f5fddc807e9e4e83f5462143094391feedd959a77dd20ab96cf3 + checksum: 963e203893c396c5dfc75e00a49426688efea7361b0f0e040035809cecd2d46b3c01c02be2d9e8d38b1138357d2de7719ea5b5be21f66c10f2e9685a5a73bb99 languageName: node linkType: hard -"jest-circus@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-circus@npm:29.6.1" +"jest-circus@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-circus@npm:29.7.0" dependencies: - "@jest/environment": ^29.6.1 - "@jest/expect": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.7.0 + "@jest/expect": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 co: ^4.6.0 - dedent: ^0.7.0 + dedent: ^1.0.0 is-generator-fn: ^2.0.0 - jest-each: ^29.6.1 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-runtime: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 + jest-each: ^29.7.0 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-runtime: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 p-limit: ^3.1.0 - pretty-format: ^29.6.1 + pretty-format: ^29.7.0 pure-rand: ^6.0.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: f3e39a74b601929448df92037f0599978d4d7a4b8f636f64e8020533d2d2b2f669d6729c80c6efed69341ca26753e5061e9787a0acd6c70af2127a94375ebb76 + checksum: 349437148924a5a109c9b8aad6d393a9591b4dac1918fc97d81b7fc515bc905af9918495055071404af1fab4e48e4b04ac3593477b1d5dcf48c4e71b527c70a7 languageName: node linkType: hard -"jest-cli@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-cli@npm:29.6.1" +"jest-cli@npm:^29.6.4": + version: 29.7.0 + resolution: "jest-cli@npm:29.7.0" dependencies: - "@jest/core": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/core": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 chalk: ^4.0.0 + create-jest: ^29.7.0 exit: ^0.1.2 - graceful-fs: ^4.2.9 import-local: ^3.0.2 - jest-config: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 - prompts: ^2.0.1 + jest-config: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 yargs: ^17.3.1 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 @@ -26031,34 +25842,34 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: f5854ffea977b9a12520ea71f8d0cc8a626cbb93d7e1e6eea18a2a1f2b25f70f1b6b08a89f11b4dc7dd36a1776a9ac2cf8ec5c7998086f913ee690c06c07c949 + checksum: 664901277a3f5007ea4870632ed6e7889db9da35b2434e7cb488443e6bf5513889b344b7fddf15112135495b9875892b156faeb2d7391ddb9e2a849dcb7b6c36 languageName: node linkType: hard -"jest-config@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-config@npm:29.6.1" +"jest-config@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-config@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 - "@jest/test-sequencer": ^29.6.1 - "@jest/types": ^29.6.1 - babel-jest: ^29.6.1 + "@jest/test-sequencer": ^29.7.0 + "@jest/types": ^29.6.3 + babel-jest: ^29.7.0 chalk: ^4.0.0 ci-info: ^3.2.0 deepmerge: ^4.2.2 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-circus: ^29.6.1 - jest-environment-node: ^29.6.1 - jest-get-type: ^29.4.3 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-runner: ^29.6.1 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-circus: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-get-type: ^29.6.3 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-runner: ^29.7.0 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 micromatch: ^4.0.4 parse-json: ^5.2.0 - pretty-format: ^29.6.1 + pretty-format: ^29.7.0 slash: ^3.0.0 strip-json-comments: ^3.1.1 peerDependencies: @@ -26069,7 +25880,7 @@ __metadata: optional: true ts-node: optional: true - checksum: 3a30afeb28cc5658ef9cd95f2551ab8a29641bb6d377eb239cba8e7522eb4611c9a98cdcf173d87f5ad7b5e1ad242c3cd5434a260107bd3c7e8305d05023e05c + checksum: 4cabf8f894c180cac80b7df1038912a3fc88f96f2622de33832f4b3314f83e22b08fb751da570c0ab2b7988f21604bdabade95e3c0c041068ac578c085cf7dff languageName: node linkType: hard @@ -26085,72 +25896,72 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^29.6.1": - version: 29.6.2 - resolution: "jest-diff@npm:29.6.2" +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" dependencies: chalk: ^4.0.0 - diff-sequences: ^29.4.3 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.2 - checksum: 0effd66a0c23f8c139ebf7ca99ed30b479b86fff66f19ad4869f130aaf7ae6a24ca1533f697b7e4930cbe2ddffc85387723fcca673501c653fb77a38f538e959 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 languageName: node linkType: hard -"jest-docblock@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-docblock@npm:29.4.3" +"jest-docblock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-docblock@npm:29.7.0" dependencies: detect-newline: ^3.0.0 - checksum: e0e9df1485bb8926e5b33478cdf84b3387d9caf3658e7dc1eaa6dc34cb93dea0d2d74797f6e940f0233a88f3dadd60957f2288eb8f95506361f85b84bf8661df + checksum: 66390c3e9451f8d96c5da62f577a1dad701180cfa9b071c5025acab2f94d7a3efc2515cfa1654ebe707213241541ce9c5530232cdc8017c91ed64eea1bd3b192 languageName: node linkType: hard -"jest-each@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-each@npm:29.6.1" +"jest-each@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-each@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 chalk: ^4.0.0 - jest-get-type: ^29.4.3 - jest-util: ^29.6.1 - pretty-format: ^29.6.1 - checksum: 9d2ea7ed5326ee8c22523b22c66c85fe73754ea39f9b389881956508ee441392c61072a5fbf673e39beddd31d011bb94acae3edc77053ba4f9aa5c060114a5c8 + jest-get-type: ^29.6.3 + jest-util: ^29.7.0 + pretty-format: ^29.7.0 + checksum: e88f99f0184000fc8813f2a0aa79e29deeb63700a3b9b7928b8a418d7d93cd24933608591dbbdea732b473eb2021c72991b5cc51a17966842841c6e28e6f691c languageName: node linkType: hard -"jest-environment-jsdom@npm:~29.6.1": - version: 29.6.1 - resolution: "jest-environment-jsdom@npm:29.6.1" +"jest-environment-jsdom@npm:~29.6.4": + version: 29.6.4 + resolution: "jest-environment-jsdom@npm:29.6.4" dependencies: - "@jest/environment": ^29.6.1 - "@jest/fake-timers": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.6.4 + "@jest/fake-timers": ^29.6.4 + "@jest/types": ^29.6.3 "@types/jsdom": ^20.0.0 "@types/node": "*" - jest-mock: ^29.6.1 - jest-util: ^29.6.1 + jest-mock: ^29.6.3 + jest-util: ^29.6.3 jsdom: ^20.0.0 peerDependencies: canvas: ^2.5.0 peerDependenciesMeta: canvas: optional: true - checksum: e8a9bff00a011235b004699f34bc85b18fdac82049513410cbf2dc1c2dd332bc1b4f108976412df1d29f2fa8bf0360aaf84eb0f5b4db1db2fb7fc7155dc14be7 + checksum: 2afe105f12d7d93ca56e2e6f67ab07ada3dd3da0516d1198f254930683ab9feb2b8c14417baaca53544eed88fd7fb5744f0dbce2e100269746187317ce0347df languageName: node linkType: hard -"jest-environment-node@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-environment-node@npm:29.6.1" +"jest-environment-node@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-environment-node@npm:29.7.0" dependencies: - "@jest/environment": ^29.6.1 - "@jest/fake-timers": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-mock: ^29.6.1 - jest-util: ^29.6.1 - checksum: a50287e1ff29d131646bd09acc3222ac6ea0ad61e86bf73851d318ef2be0633a421b8558c4a15ddc67e0ffcfc32da7f6a0d8a2ddbfa85453837899dec88d256c + jest-mock: ^29.7.0 + jest-util: ^29.7.0 + checksum: 501a9966292cbe0ca3f40057a37587cb6def25e1e0c5e39ac6c650fe78d3c70a2428304341d084ac0cced5041483acef41c477abac47e9a290d5545fd2f15646 languageName: node linkType: hard @@ -26171,10 +25982,10 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-get-type@npm:29.4.3" - checksum: 6ac7f2dde1c65e292e4355b6c63b3a4897d7e92cb4c8afcf6d397f2682f8080e094c8b0b68205a74d269882ec06bf696a9de6cd3e1b7333531e5ed7b112605ce +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 languageName: node linkType: hard @@ -26203,65 +26014,65 @@ __metadata: languageName: node linkType: hard -"jest-haste-map@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-haste-map@npm:29.6.1" +"jest-haste-map@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-haste-map@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/graceful-fs": ^4.1.3 "@types/node": "*" anymatch: ^3.0.3 fb-watchman: ^2.0.0 fsevents: ^2.3.2 graceful-fs: ^4.2.9 - jest-regex-util: ^29.4.3 - jest-util: ^29.6.1 - jest-worker: ^29.6.1 + jest-regex-util: ^29.6.3 + jest-util: ^29.7.0 + jest-worker: ^29.7.0 micromatch: ^4.0.4 walker: ^1.0.8 dependenciesMeta: fsevents: optional: true - checksum: 7c74d5a0f6aafa9f4e60fae7949d4774770c0243fb529c24f2f4c81229db479fa318dc8b81e8d226865aef1d600af10bd8404dd208e802318434b46f75d5d869 + checksum: c2c8f2d3e792a963940fbdfa563ce14ef9e14d4d86da645b96d3cd346b8d35c5ce0b992ee08593939b5f718cf0a1f5a90011a056548a1dbf58397d4356786f01 languageName: node linkType: hard -"jest-leak-detector@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-leak-detector@npm:29.6.1" +"jest-leak-detector@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-leak-detector@npm:29.7.0" dependencies: - jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: 5122d40c248effaede4c9ee3a99046a3f30088fef7bfc4af534678b432455161399357af46deb6423de7e05c6597920d6ee8cd570e26048886a90d541334f8c8 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: e3950e3ddd71e1d0c22924c51a300a1c2db6cf69ec1e51f95ccf424bcc070f78664813bef7aed4b16b96dfbdeea53fe358f8aeaaea84346ae15c3735758f1605 languageName: node linkType: hard -"jest-matcher-utils@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-matcher-utils@npm:29.6.1" +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" dependencies: chalk: ^4.0.0 - jest-diff: ^29.6.1 - jest-get-type: ^29.4.3 - pretty-format: ^29.6.1 - checksum: d2efa6aed6e4820758b732b9fefd315c7fa4508ee690da656e1c5ac4c1a0f4cee5b04c9719ee1fda9aeb883b4209186c145089ced521e715b9fa70afdfa4a9c6 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd languageName: node linkType: hard -"jest-message-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-message-util@npm:29.6.1" +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" dependencies: "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/stack-utils": ^2.0.0 chalk: ^4.0.0 graceful-fs: ^4.2.9 micromatch: ^4.0.4 - pretty-format: ^29.6.1 + pretty-format: ^29.7.0 slash: ^3.0.0 stack-utils: ^2.0.3 - checksum: 3e7cb2ff087fe72255292e151d24e4fbb4cd6134885c0a67a4b302f233fe4110bf7580b176f427f05ad7550eb878ed94237209785d09d659a7d171ffa59c068f + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 languageName: node linkType: hard @@ -26275,14 +26086,14 @@ __metadata: languageName: node linkType: hard -"jest-mock@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-mock@npm:29.6.1" +"jest-mock@npm:^29.6.3, jest-mock@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-mock@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" - jest-util: ^29.6.1 - checksum: 5e902f1a7eba1eb1a64eb6c19947fe1316834359d9869d0e2644d8979b9cad0465885dc4c9909c471888cddeea835c938cec6263d386d3d1aad720fc74e52ea1 + jest-util: ^29.7.0 + checksum: 81ba9b68689a60be1482212878973700347cb72833c5e5af09895882b9eb5c4e02843a1bbdf23f94c52d42708bab53a30c45a3482952c9eec173d1eaac5b86c5 languageName: node linkType: hard @@ -26305,96 +26116,96 @@ __metadata: languageName: node linkType: hard -"jest-regex-util@npm:^29.4.3": - version: 29.4.3 - resolution: "jest-regex-util@npm:29.4.3" - checksum: 96fc7fc28cd4dd73a63c13a526202c4bd8b351d4e5b68b1a2a2c88da3308c2a16e26feaa593083eb0bac38cca1aa9dd05025412e7de013ba963fb8e66af22b8a +"jest-regex-util@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-regex-util@npm:29.6.3" + checksum: 0518beeb9bf1228261695e54f0feaad3606df26a19764bc19541e0fc6e2a3737191904607fb72f3f2ce85d9c16b28df79b7b1ec9443aa08c3ef0e9efda6f8f2a languageName: node linkType: hard -"jest-resolve-dependencies@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-resolve-dependencies@npm:29.6.1" +"jest-resolve-dependencies@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve-dependencies@npm:29.7.0" dependencies: - jest-regex-util: ^29.4.3 - jest-snapshot: ^29.6.1 - checksum: cee0a0fe53fd4531492a526b6ccd32377baad1eff6e6c124f04e9dc920219fd23fd39be88bb9551ee68d5fe92a3af627b423c9bc65a2aa0ac8a223c0e74dbbbb + jest-regex-util: ^29.6.3 + jest-snapshot: ^29.7.0 + checksum: aeb75d8150aaae60ca2bb345a0d198f23496494677cd6aefa26fc005faf354061f073982175daaf32b4b9d86b26ca928586344516e3e6969aa614cb13b883984 languageName: node linkType: hard -"jest-resolve@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-resolve@npm:29.6.1" +"jest-resolve@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-resolve@npm:29.7.0" dependencies: chalk: ^4.0.0 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 + jest-haste-map: ^29.7.0 jest-pnp-resolver: ^1.2.2 - jest-util: ^29.6.1 - jest-validate: ^29.6.1 + jest-util: ^29.7.0 + jest-validate: ^29.7.0 resolve: ^1.20.0 resolve.exports: ^2.0.0 slash: ^3.0.0 - checksum: 9ce979a0f4a751bea58caea76415112df2a3f4d58e294019872244728aadd001f0ec20c873a3c805dd8f7c762143b3c14d00f87d124ed87c9981fbf8723090ef + checksum: 0ca218e10731aa17920526ec39deaec59ab9b966237905ffc4545444481112cd422f01581230eceb7e82d86f44a543d520a71391ec66e1b4ef1a578bd5c73487 languageName: node linkType: hard -"jest-runner@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-runner@npm:29.6.1" +"jest-runner@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runner@npm:29.7.0" dependencies: - "@jest/console": ^29.6.1 - "@jest/environment": ^29.6.1 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/console": ^29.7.0 + "@jest/environment": ^29.7.0 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 emittery: ^0.13.1 graceful-fs: ^4.2.9 - jest-docblock: ^29.4.3 - jest-environment-node: ^29.6.1 - jest-haste-map: ^29.6.1 - jest-leak-detector: ^29.6.1 - jest-message-util: ^29.6.1 - jest-resolve: ^29.6.1 - jest-runtime: ^29.6.1 - jest-util: ^29.6.1 - jest-watcher: ^29.6.1 - jest-worker: ^29.6.1 + jest-docblock: ^29.7.0 + jest-environment-node: ^29.7.0 + jest-haste-map: ^29.7.0 + jest-leak-detector: ^29.7.0 + jest-message-util: ^29.7.0 + jest-resolve: ^29.7.0 + jest-runtime: ^29.7.0 + jest-util: ^29.7.0 + jest-watcher: ^29.7.0 + jest-worker: ^29.7.0 p-limit: ^3.1.0 source-map-support: 0.5.13 - checksum: 0e4dbda26669ae31fee32f8a62b3119bba510f2d17a098d6157b48a73ed2fc9842405bf893f3045c12b3632c7c0e3399fb22684b18ab5566aff4905b26c79a9a + checksum: f0405778ea64812bf9b5c50b598850d94ccf95d7ba21f090c64827b41decd680ee19fcbb494007cdd7f5d0d8906bfc9eceddd8fa583e753e736ecd462d4682fb languageName: node linkType: hard -"jest-runtime@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-runtime@npm:29.6.1" +"jest-runtime@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-runtime@npm:29.7.0" dependencies: - "@jest/environment": ^29.6.1 - "@jest/fake-timers": ^29.6.1 - "@jest/globals": ^29.6.1 - "@jest/source-map": ^29.6.0 - "@jest/test-result": ^29.6.1 - "@jest/transform": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/environment": ^29.7.0 + "@jest/fake-timers": ^29.7.0 + "@jest/globals": ^29.7.0 + "@jest/source-map": ^29.6.3 + "@jest/test-result": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 cjs-module-lexer: ^1.0.0 collect-v8-coverage: ^1.0.0 glob: ^7.1.3 graceful-fs: ^4.2.9 - jest-haste-map: ^29.6.1 - jest-message-util: ^29.6.1 - jest-mock: ^29.6.1 - jest-regex-util: ^29.4.3 - jest-resolve: ^29.6.1 - jest-snapshot: ^29.6.1 - jest-util: ^29.6.1 + jest-haste-map: ^29.7.0 + jest-message-util: ^29.7.0 + jest-mock: ^29.7.0 + jest-regex-util: ^29.6.3 + jest-resolve: ^29.7.0 + jest-snapshot: ^29.7.0 + jest-util: ^29.7.0 slash: ^3.0.0 strip-bom: ^4.0.0 - checksum: 7c360c9694467d996f3d6d914fefa0e7bda554adda8c2b9fba31546dba663d71a64eda103ff68120a2422f3c16db8f0bc2c445923fe8fb934f37e53ef74fb429 + checksum: d19f113d013e80691e07047f68e1e3448ef024ff2c6b586ce4f90cd7d4c62a2cd1d460110491019719f3c59bfebe16f0e201ed005ef9f80e2cf798c374eed54e languageName: node linkType: hard @@ -26408,32 +26219,31 @@ __metadata: languageName: node linkType: hard -"jest-snapshot@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-snapshot@npm:29.6.1" +"jest-snapshot@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-snapshot@npm:29.7.0" dependencies: "@babel/core": ^7.11.6 "@babel/generator": ^7.7.2 "@babel/plugin-syntax-jsx": ^7.7.2 "@babel/plugin-syntax-typescript": ^7.7.2 "@babel/types": ^7.3.3 - "@jest/expect-utils": ^29.6.1 - "@jest/transform": ^29.6.1 - "@jest/types": ^29.6.1 - "@types/prettier": ^2.1.5 + "@jest/expect-utils": ^29.7.0 + "@jest/transform": ^29.7.0 + "@jest/types": ^29.6.3 babel-preset-current-node-syntax: ^1.0.0 chalk: ^4.0.0 - expect: ^29.6.1 + expect: ^29.7.0 graceful-fs: ^4.2.9 - jest-diff: ^29.6.1 - jest-get-type: ^29.4.3 - jest-matcher-utils: ^29.6.1 - jest-message-util: ^29.6.1 - jest-util: ^29.6.1 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 natural-compare: ^1.4.0 - pretty-format: ^29.6.1 + pretty-format: ^29.7.0 semver: ^7.5.3 - checksum: e8f69d1fd4a29d354d4dca9eb2a22674b300f8ef509e4f1e75337c880414a00d2bdc9d3849a6855dbb5a76bfbe74603f33435378a3877e69f0838e4cc2244350 + checksum: 86821c3ad0b6899521ce75ee1ae7b01b17e6dfeff9166f2cf17f012e0c5d8c798f30f9e4f8f7f5bed01ea7b55a6bc159f5eda778311162cbfa48785447c237ad languageName: node linkType: hard @@ -26451,47 +26261,47 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^29.0.0, jest-util@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-util@npm:29.6.1" +"jest-util@npm:^29.0.0, jest-util@npm:^29.6.3, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 "@types/node": "*" chalk: ^4.0.0 ci-info: ^3.2.0 graceful-fs: ^4.2.9 picomatch: ^2.2.3 - checksum: fc553556c1350c443449cadaba5fb9d604628e8b5ceb6ceaf4e7e08975b24277d0a14bf2e0f956024e03c23e556fcb074659423422a06fbedf2ab52978697ac7 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca languageName: node linkType: hard -"jest-validate@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-validate@npm:29.6.1" +"jest-validate@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-validate@npm:29.7.0" dependencies: - "@jest/types": ^29.6.1 + "@jest/types": ^29.6.3 camelcase: ^6.2.0 chalk: ^4.0.0 - jest-get-type: ^29.4.3 + jest-get-type: ^29.6.3 leven: ^3.1.0 - pretty-format: ^29.6.1 - checksum: d2491f3f33d9bbc2dcaaa6acbff26f257b59c5eeceb65a52a9c1cec2f679b836ec2a4658b7004c0ef9d90cd0d9bd664e41d5ed6900f932bea742dd8e6b85e7f1 + pretty-format: ^29.7.0 + checksum: 191fcdc980f8a0de4dbdd879fa276435d00eb157a48683af7b3b1b98b0f7d9de7ffe12689b617779097ff1ed77601b9f7126b0871bba4f776e222c40f62e9dae languageName: node linkType: hard -"jest-watcher@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-watcher@npm:29.6.1" +"jest-watcher@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-watcher@npm:29.7.0" dependencies: - "@jest/test-result": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/test-result": ^29.7.0 + "@jest/types": ^29.6.3 "@types/node": "*" ansi-escapes: ^4.2.1 chalk: ^4.0.0 emittery: ^0.13.1 - jest-util: ^29.6.1 + jest-util: ^29.7.0 string-length: ^4.0.1 - checksum: 69bd5a602284fdce6eba5486c5c57aca6b511d91cb0907c34c104d6dd931e18ce67baa7f8e280fa473e5d81ea3e7b9e7d94f712c37ab0b3b8cc2aec30676955d + checksum: 67e6e7fe695416deff96b93a14a561a6db69389a0667e9489f24485bb85e5b54e12f3b2ba511ec0b777eca1e727235b073e3ebcdd473d68888650489f88df92f languageName: node linkType: hard @@ -26527,26 +26337,26 @@ __metadata: languageName: node linkType: hard -"jest-worker@npm:^29.6.1": - version: 29.6.1 - resolution: "jest-worker@npm:29.6.1" +"jest-worker@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-worker@npm:29.7.0" dependencies: "@types/node": "*" - jest-util: ^29.6.1 + jest-util: ^29.7.0 merge-stream: ^2.0.0 supports-color: ^8.0.0 - checksum: 0af309ea4db17c4c47e84a9246f907960a15577683c005fdeafc8f3c06bc455136f95a6f28fa2a3e924b767eb4dacd9b40915a7707305f88586f099af3ac27a8 + checksum: 30fff60af49675273644d408b650fc2eb4b5dcafc5a0a455f238322a8f9d8a98d847baca9d51ff197b6747f54c7901daa2287799230b856a0f48287d131f8c13 languageName: node linkType: hard -"jest@npm:~29.6.1": - version: 29.6.1 - resolution: "jest@npm:29.6.1" +"jest@npm:~29.6.4": + version: 29.6.4 + resolution: "jest@npm:29.6.4" dependencies: - "@jest/core": ^29.6.1 - "@jest/types": ^29.6.1 + "@jest/core": ^29.6.4 + "@jest/types": ^29.6.3 import-local: ^3.0.2 - jest-cli: ^29.6.1 + jest-cli: ^29.6.4 peerDependencies: node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: @@ -26554,7 +26364,7 @@ __metadata: optional: true bin: jest: bin/jest.js - checksum: 7b8c0ca72f483e00ec19dcf9549f9a9af8ae468ab62925b148d714b58eb52d5fea9a082625193bc833d2d9b64cf65a11f3d37857636c5551af05c10aec4ce71b + checksum: ba28ca7a86d029bcd742bb254c0c8d0119c1e002ddae128ff6409ebabc0b29c36f69dbf3fdd326aff16e7b2500c9a918bbc6a9a5db4d966e035127242239439f languageName: node linkType: hard @@ -26864,7 +26674,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:^2.1.2, json5@npm:^2.2.2, json5@npm:^2.2.3": +"json5@npm:^2.1.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -27076,14 +26886,14 @@ __metadata: languageName: node linkType: hard -"katex@npm:^0.16.7, katex@npm:~0.16.7": - version: 0.16.7 - resolution: "katex@npm:0.16.7" +"katex@npm:~0.16.9": + version: 0.16.9 + resolution: "katex@npm:0.16.9" dependencies: commander: ^8.3.0 bin: katex: cli.js - checksum: 6c3f61e28820ecba074a149d17be6d731d8a950cdd7826851e16f2b0f3627c4119acd8c6e4fb86950063c4e99a6e478720ea6cca3dc82e59bbca81001ee00b70 + checksum: 861194dfd4d86505e657f688fb73048d46ac498edafce71199502a35b03c0ecc35ba930c631be79c4a09d90a0d23476673cd52f6bc367c7a161854d64005fa95 languageName: node linkType: hard @@ -27561,6 +27371,13 @@ __metadata: languageName: node linkType: hard +"lodash.escape@npm:^4.0.1": + version: 4.0.1 + resolution: "lodash.escape@npm:4.0.1" + checksum: fcb54f457497256964d619d5cccbd80a961916fca60df3fe0fa3e7f052715c2944c0ed5aefb4f9e047d127d44aa2d55555f3350cb42c6549e9e293fb30b41e7f + languageName: node + linkType: hard + "lodash.flatten@npm:^4.4.0": version: 4.4.0 resolution: "lodash.flatten@npm:4.4.0" @@ -27589,6 +27406,13 @@ __metadata: languageName: node linkType: hard +"lodash.invokemap@npm:^4.6.0": + version: 4.6.0 + resolution: "lodash.invokemap@npm:4.6.0" + checksum: 646ceebbefbcb6da301f8c2868254680fd0bcdc6ada470495d9ae49c9c32938829c1b38a38c95d0258409a9655f85db404b16e648381c7450b7ed3d9c52d8808 + languageName: node + linkType: hard + "lodash.isboolean@npm:^3.0.3": version: 3.0.3 resolution: "lodash.isboolean@npm:3.0.3" @@ -27652,6 +27476,13 @@ __metadata: languageName: node linkType: hard +"lodash.pullall@npm:^4.2.0": + version: 4.2.0 + resolution: "lodash.pullall@npm:4.2.0" + checksum: 7a5fbaedf186ec197ce1e0b9ba1d88a89773ebaf6a8291c7d273838cac59cb3b339cf36ef00e94172862ee84d2304c38face161846f08f5581d0553dcbdcd090 + languageName: node + linkType: hard + "lodash.sortby@npm:^4.7.0": version: 4.7.0 resolution: "lodash.sortby@npm:4.7.0" @@ -27694,6 +27525,13 @@ __metadata: languageName: node linkType: hard +"lodash.uniqby@npm:^4.7.0": + version: 4.7.0 + resolution: "lodash.uniqby@npm:4.7.0" + checksum: 659264545a95726d1493123345aad8cbf56e17810fa9a0b029852c6d42bc80517696af09d99b23bef1845d10d95e01b8b4a1da578f22aeba7a30d3e0022a4938 + languageName: node + linkType: hard + "lodash.without@npm:^4.4.0": version: 4.4.0 resolution: "lodash.without@npm:4.4.0" @@ -27805,12 +27643,12 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^2.3.1": - version: 2.3.4 - resolution: "loupe@npm:2.3.4" +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" dependencies: - get-func-name: ^2.0.0 - checksum: 5af91db61aa18530f1749a64735ee194ac263e65e9f4d1562bf3036c591f1baa948289c193e0e34c7b5e2c1b75d3c1dc4fce87f5edb3cee10b0c0df46bc9ffb3 + get-func-name: ^2.0.1 + checksum: 96c058ec7167598e238bb7fb9def2f9339215e97d6685d9c1e3e4bdb33d14600e11fe7a812cf0c003dfb73ca2df374f146280b2287cae9e8d989e9d7a69a203b languageName: node linkType: hard @@ -29041,15 +28879,15 @@ __metadata: languageName: node linkType: hard -"moleculer@npm:^0.14.29": - version: 0.14.29 - resolution: "moleculer@npm:0.14.29" +"moleculer@npm:^0.14.31": + version: 0.14.31 + resolution: "moleculer@npm:0.14.31" dependencies: args: ^5.0.3 eventemitter2: ^6.4.9 - fastest-validator: ^1.16.0 + fastest-validator: ^1.17.0 glob: ^7.2.0 - ipaddr.js: ^2.0.1 + ipaddr.js: ^2.1.0 kleur: ^4.1.5 lodash: ^4.17.21 lru-cache: ^6.0.0 @@ -29126,7 +28964,7 @@ __metadata: bin: moleculer-runner: bin/moleculer-runner.js moleculer-runner-esm: bin/moleculer-runner.mjs - checksum: b04d1012dcf86136e1bfc1930a0acfde028295cc5220ae0ed8f4d23236cf63fa3417f01f1f82cd11d1661aebd32d4834bffe052dbe6d89d514acde1d9a107eff + checksum: 4d6d05f98e2174b708de8c946901a4a3a1de411505f43909216a9d2ff93820e6eec7edd44b45c99ab04c6c312304a63a346288e181fead48558763fb4ec69c24 languageName: node linkType: hard @@ -29567,12 +29405,12 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^5.0.0": - version: 5.0.0 - resolution: "node-addon-api@npm:5.0.0" +"node-addon-api@npm:^6.1.0": + version: 6.1.0 + resolution: "node-addon-api@npm:6.1.0" dependencies: node-gyp: latest - checksum: 7c5e2043ac37f6108784d94ed73a44ae6d3e68eb968de60680922fc6bc3d17fa69448c0feb4e0c9d3f4c74a0324822e566a8340a56916d9d6f23cb3e85620334 + checksum: 3a539510e677cfa3a833aca5397300e36141aca064cdc487554f2017110709a03a95da937e98c2a14ec3c626af7b2d1b6dabe629a481f9883143d0d5bff07bf2 languageName: node linkType: hard @@ -30182,14 +30020,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": - version: 1.12.2 - resolution: "object-inspect@npm:1.12.2" - checksum: a534fc1b8534284ed71f25ce3a496013b7ea030f3d1b77118f6b7b1713829262be9e6243acbcb3ef8c626e2b64186112cb7f6db74e37b2789b9c789ca23048b2 - languageName: node - linkType: hard - -"object-inspect@npm:^1.12.3": +"object-inspect@npm:^1.12.3, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db @@ -31485,13 +31316,14 @@ __metadata: languageName: node linkType: hard -"playwright-qase-reporter@npm:^1.2.0-alpha.3": - version: 1.2.0-alpha.3 - resolution: "playwright-qase-reporter@npm:1.2.0-alpha.3" +"playwright-qase-reporter@npm:^1.2.1": + version: 1.2.1 + resolution: "playwright-qase-reporter@npm:1.2.1" dependencies: + chalk: ^4.1.0 form-data: ^3.0.0 - qaseio: ^2.0.1 - checksum: 6c1960dbb49928c9d5b77eeb955c2a674cf28d97141d7406354b908688f0983c8da0c7d0b2d620bb39411a99663803055a5359812726982ad4e53c7c54fd8c84 + qaseio: ^2.0.2 + checksum: 8b4d2f5902a8d655b781e9dd6898d5d2f25739033f1fda2b600b07ac3fc7680f9a1ee917a969b7315f4f05211e36f1a6699155f9ead05a435afa695932bde9fa languageName: node linkType: hard @@ -32218,12 +32050,12 @@ __metadata: languageName: node linkType: hard -"postcss-scss@npm:^4.0.6": - version: 4.0.6 - resolution: "postcss-scss@npm:4.0.6" +"postcss-scss@npm:^4.0.9": + version: 4.0.9 + resolution: "postcss-scss@npm:4.0.9" peerDependencies: - postcss: ^8.4.19 - checksum: 133a1cba31e2e167f4e841e66ec6a798eaf44c7911f9182ade0b5b1e71a8198814aa390b8c9d5db6b01358115232e5b15b1a4f8c5198acfccfb1f3fdbd328cdf + postcss: ^8.4.29 + checksum: dc358bafc23d52ed3a9a29333808825deba213042be74ece6eae7a61c692f67d0e6691fa7005367b013c01c79562fbb9ef2fe4c0485075233931bd90715f5132 languageName: node linkType: hard @@ -32360,14 +32192,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.2.15, postcss@npm:^8.3.11, postcss@npm:^8.4.14, postcss@npm:^8.4.23, postcss@npm:~8.4.24": - version: 8.4.24 - resolution: "postcss@npm:8.4.24" +"postcss@npm:^8.2.15, postcss@npm:^8.3.11, postcss@npm:^8.4.14, postcss@npm:^8.4.23, postcss@npm:~8.4.31": + version: 8.4.31 + resolution: "postcss@npm:8.4.31" dependencies: nanoid: ^3.3.6 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 814e2126dacfea313588eda09cc99a9b4c26ec55c059188aa7a916d20d26d483483106dc5ff9e560731b59f45c5bb91b945dfadc670aed875cc90ddbbf4e787d + checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea languageName: node linkType: hard @@ -32547,14 +32379,14 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.6.1, pretty-format@npm:^29.6.2": - version: 29.6.2 - resolution: "pretty-format@npm:29.6.2" +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" dependencies: - "@jest/schemas": ^29.6.0 + "@jest/schemas": ^29.6.3 ansi-styles: ^5.0.0 react-is: ^18.0.0 - checksum: a0f972a44f959023c0df9cdfe9eed7540264d7f7ddf74667db8a5294444d5aa153fd47d20327df10ae86964e2ceec10e46ea06b1a5c9c12e02348b78c952c9fc + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 languageName: node linkType: hard @@ -32635,18 +32467,18 @@ __metadata: languageName: node linkType: hard -"prometheus-gc-stats@npm:^0.6.4": - version: 0.6.4 - resolution: "prometheus-gc-stats@npm:0.6.4" +"prometheus-gc-stats@npm:^0.6.5": + version: 0.6.5 + resolution: "prometheus-gc-stats@npm:0.6.5" dependencies: gc-stats: ^1.4.0 optional: ^0.1.3 peerDependencies: - prom-client: ">= 10 <= 12" + prom-client: ">= 10 <= 14" dependenciesMeta: gc-stats: optional: true - checksum: 1e632cd0b9ad893b5ee1c3df0b5a3af27a69f2b0c821714d793dcf30de04489c9e207ad5e2ee062b61fc76681a1dbeab268cf31388fc55575501052115d0c410 + checksum: a0a83745937b581e6c5afbe95e6aaef6ca004cf25d35d05f7300e6db26bf37486802b14f972e02f7b332fcf3bcfe4c792d05383d004985d480b8b9450e04f8b8 languageName: node linkType: hard @@ -32674,21 +32506,7 @@ __metadata: languageName: node linkType: hard -"promise.allsettled@npm:^1.0.0": - version: 1.0.5 - resolution: "promise.allsettled@npm:1.0.5" - dependencies: - array.prototype.map: ^1.0.4 - call-bind: ^1.0.2 - define-properties: ^1.1.3 - es-abstract: ^1.19.1 - get-intrinsic: ^1.1.1 - iterate-value: ^1.0.2 - checksum: 92775552d3a3487ed924852e5de00a217a202cefc833e8cc169283fe4f7dbe09953505b0c7471b2681e09aa7d064bdbd07b978d44ff536f712e4dcd7c9faba35 - languageName: node - linkType: hard - -"promise.allsettled@npm:^1.0.2": +"promise.allsettled@npm:^1.0.0, promise.allsettled@npm:^1.0.2": version: 1.0.7 resolution: "promise.allsettled@npm:1.0.7" dependencies: @@ -32937,13 +32755,13 @@ __metadata: languageName: node linkType: hard -"qaseio@npm:^2.0.1": - version: 2.0.1 - resolution: "qaseio@npm:2.0.1" +"qaseio@npm:^2.0.2": + version: 2.0.2 + resolution: "qaseio@npm:2.0.2" dependencies: axios: ^0.25.0 form-data: ^3.0.0 - checksum: 3542f968c05294615a42bc1f57c92a4d7073055466bc2588876de09d6bcd7f7af8b4180db2c04ef01cc4e9c3326c7405c78500e6c83de9d3bb23b12f95246d79 + checksum: 33a0307f2daaf614d719c7c049e50b3aabf1cb783c93355e42ece5a254fac3e68741b4decf9dca0553a48decf8967610cabe058ea135ea8d7bf93f160a6e3902 languageName: node linkType: hard @@ -32963,13 +32781,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:6.9.7": - version: 6.9.7 - resolution: "qs@npm:6.9.7" - checksum: 5bbd263332ccf320a1f36d04a2019a5834dc20bcb736431eaccde2a39dcba03fb26d2fd00174f5d7bc26aaad1cad86124b18440883ac042ea2a0fca6170c1bf1 - languageName: node - linkType: hard - "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" @@ -33044,6 +32855,13 @@ __metadata: languageName: node linkType: hard +"queue-tick@npm:^1.0.1": + version: 1.0.1 + resolution: "queue-tick@npm:1.0.1" + checksum: 57c3292814b297f87f792fbeb99ce982813e4e54d7a8bdff65cf53d5c084113913289d4a48ec8bbc964927a74b847554f9f4579df43c969a6c8e0f026457ad01 + languageName: node + linkType: hard + "queue@npm:6.0.2, queue@npm:^6.0.1": version: 6.0.2 resolution: "queue@npm:6.0.2" @@ -33227,18 +33045,6 @@ __metadata: languageName: node linkType: hard -"raw-body@npm:2.4.3": - version: 2.4.3 - resolution: "raw-body@npm:2.4.3" - dependencies: - bytes: 3.1.2 - http-errors: 1.8.1 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - checksum: d2961fa3c71c9c22dc2c3fd60ff377bf36dfed7d7a748f2b25d585934a3e9df565bb9aa5bc2e3a716ea941f4bc2a6ddc795c8b0cf7219fb071029b59b1985394 - languageName: node - linkType: hard - "raw-body@npm:2.5.1": version: 2.5.1 resolution: "raw-body@npm:2.5.1" @@ -33275,7 +33081,7 @@ __metadata: languageName: node linkType: hard -"rc-scrollbars@npm:^1.1.5, rc-scrollbars@npm:^1.1.6": +"rc-scrollbars@npm:^1.1.6": version: 1.1.6 resolution: "rc-scrollbars@npm:1.1.6" dependencies: @@ -33494,9 +33300,9 @@ __metadata: languageName: node linkType: hard -"react-i18next@npm:~13.2.1": - version: 13.2.1 - resolution: "react-i18next@npm:13.2.1" +"react-i18next@npm:~13.2.2": + version: 13.2.2 + resolution: "react-i18next@npm:13.2.2" dependencies: "@babel/runtime": ^7.22.5 html-parse-stringify: ^3.0.1 @@ -33508,7 +33314,7 @@ __metadata: optional: true react-native: optional: true - checksum: aa3bd7b0f9f3d794e756a7fe087471c20c13dc2fbf5e53400403a356973d87a1b76f0204720081914bd06cb94d92bf987ebbf33c3de3c67a0cc9b32dde8972f1 + checksum: 2b85bfb347af1a00add1c02901025706f7d2037fade4e8aa08159287ddf012e8cf35626eb9f5c578b9d1c24c065c69f2ad4b5a3087fb5cdbea540f8bc18c0f59 languageName: node linkType: hard @@ -34163,18 +33969,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": - version: 1.5.0 - resolution: "regexp.prototype.flags@npm:1.5.0" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - functions-have-names: ^1.2.3 - checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.1": +"regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0, regexp.prototype.flags@npm:^1.5.1": version: 1.5.1 resolution: "regexp.prototype.flags@npm:1.5.1" dependencies: @@ -34769,9 +34564,9 @@ __metadata: version: 0.0.0-use.local resolution: "rocket.chat@workspace:." dependencies: - "@changesets/cli": ^2.26.1 - "@types/chart.js": ^2.9.37 - "@types/js-yaml": ^4.0.5 + "@changesets/cli": ^2.26.2 + "@types/chart.js": ^2.9.39 + "@types/js-yaml": ^4.0.8 husky: ^7.0.4 node-gyp: ^9.4.1 turbo: ~1.10.16 @@ -34793,13 +34588,13 @@ __metadata: "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/string-helpers": next "@rocket.chat/ui-kit": ^0.32.1 - "@types/cookie": ^0.5.1 - "@types/cookie-parser": ^1.4.3 - "@types/ejson": ^2.2.0 - "@types/express": ^4.17.17 - "@types/fibers": ^3.1.1 - "@types/node": ^14.18.51 - "@types/ws": ^8.5.5 + "@types/cookie": ^0.5.3 + "@types/cookie-parser": ^1.4.5 + "@types/ejson": ^2.2.1 + "@types/express": ^4.17.20 + "@types/fibers": ^3.1.3 + "@types/node": ^14.18.63 + "@types/ws": ^8.5.8 ajv: ^8.11.0 bcrypt: ^5.0.1 body-parser: ^1.20.2 @@ -34812,7 +34607,7 @@ __metadata: fibers: ^5.0.3 jaeger-client: ^3.19.0 mem: ^8.1.1 - moleculer: ^0.14.29 + moleculer: ^0.14.31 mongodb: ^4.17.1 nats: ^2.6.1 npm-run-all: ^4.1.5 @@ -35277,14 +35072,14 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.2, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3": - version: 7.5.3 - resolution: "semver@npm:7.5.3" +"semver@npm:7.x, semver@npm:^7.2, semver@npm:^7.2.1, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.5.2, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.5.4 + resolution: "semver@npm:7.5.4" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7 + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 languageName: node linkType: hard @@ -35297,17 +35092,6 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.5.4": - version: 7.5.4 - resolution: "semver@npm:7.5.4" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 - languageName: node - linkType: hard - "semver@npm:~5.3.0": version: 5.3.0 resolution: "semver@npm:5.3.0" @@ -35326,27 +35110,6 @@ __metadata: languageName: node linkType: hard -"send@npm:0.17.2": - version: 0.17.2 - resolution: "send@npm:0.17.2" - dependencies: - debug: 2.6.9 - depd: ~1.1.2 - destroy: ~1.0.4 - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - etag: ~1.8.1 - fresh: 0.5.2 - http-errors: 1.8.1 - mime: 1.6.0 - ms: 2.1.3 - on-finished: ~2.3.0 - range-parser: ~1.2.1 - statuses: ~1.5.0 - checksum: c28f36deb4ccba9b8d6e6a1e472b8e7c40a1f51575bdf8f67303568cc9e71131faa3adc36fdb72611616ccad1584358bbe4c3ebf419e663ecc5de868ad3d3f03 - languageName: node - linkType: hard - "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -35459,18 +35222,6 @@ __metadata: languageName: node linkType: hard -"serve-static@npm:1.14.2": - version: 1.14.2 - resolution: "serve-static@npm:1.14.2" - dependencies: - encodeurl: ~1.0.2 - escape-html: ~1.0.3 - parseurl: ~1.3.3 - send: 0.17.2 - checksum: d97f3183b1dfcd8ce9c0e37e18e87fd31147ed6c8ee0b2c3a089d795e44ee851ca5061db01574f806d54f4e4b70bc694d9ca64578653514e04a28cbc97a1de05 - languageName: node - linkType: hard - "serve-static@npm:1.15.0": version: 1.15.0 resolution: "serve-static@npm:1.15.0" @@ -35581,20 +35332,20 @@ __metadata: languageName: node linkType: hard -"sharp@npm:^0.30.7": - version: 0.30.7 - resolution: "sharp@npm:0.30.7" +"sharp@npm:^0.32.6": + version: 0.32.6 + resolution: "sharp@npm:0.32.6" dependencies: color: ^4.2.3 - detect-libc: ^2.0.1 - node-addon-api: ^5.0.0 + detect-libc: ^2.0.2 + node-addon-api: ^6.1.0 node-gyp: latest prebuild-install: ^7.1.1 - semver: ^7.3.7 + semver: ^7.5.4 simple-get: ^4.0.1 - tar-fs: ^2.1.1 + tar-fs: ^3.0.4 tunnel-agent: ^0.6.0 - checksum: bbc63ca3c7ea8a5bff32cd77022cfea30e25a03f5bd031e935924bf6cf0e11e3388e8b0e22b3137bf8816aa73407f1e4fbeb190f3a35605c27ffca9f32b91601 + checksum: 0cca1d16b1920800c0e22d27bc6305f4c67c9ebe44f67daceb30bf645ae39e7fb7dfbd7f5d6cd9f9eebfddd87ac3f7e2695f4eb906d19b7a775286238e6a29fc languageName: node linkType: hard @@ -35732,14 +35483,14 @@ __metadata: languageName: node linkType: hard -"sirv@npm:^1.0.7": - version: 1.0.19 - resolution: "sirv@npm:1.0.19" +"sirv@npm:^2.0.3": + version: 2.0.3 + resolution: "sirv@npm:2.0.3" dependencies: "@polka/url": ^1.0.0-next.20 mrmime: ^1.0.0 - totalist: ^1.0.0 - checksum: c943cfc61baf85f05f125451796212ec35d4377af4da90ae8ec1fa23e6d7b0b4d9c74a8fbf65af83c94e669e88a09dc6451ba99154235eead4393c10dda5b07c + totalist: ^3.0.0 + checksum: e2dfd4c97735a6ad6d842d0eec2cd9e3919ff0e46f0d228248c5753ad4b70b832711e77e1259c031c439cdb08303cc54d923685c92b0e890145cc733af7c5568 languageName: node linkType: hard @@ -36346,7 +36097,7 @@ __metadata: languageName: node linkType: hard -"statuses@npm:1.5.0, statuses@npm:>= 1.4.0 < 2, statuses@npm:>= 1.5.0 < 2, statuses@npm:~1.5.0": +"statuses@npm:1.5.0, statuses@npm:>= 1.4.0 < 2, statuses@npm:~1.5.0": version: 1.5.0 resolution: "statuses@npm:1.5.0" checksum: c469b9519de16a4bb19600205cffb39ee471a5f17b82589757ca7bd40a8d92ebb6ed9f98b5a540c5d302ccbc78f15dc03cc0280dd6e00df1335568a5d5758a5c @@ -36519,6 +36270,16 @@ __metadata: languageName: node linkType: hard +"streamx@npm:^2.15.0": + version: 2.15.5 + resolution: "streamx@npm:2.15.5" + dependencies: + fast-fifo: ^1.1.0 + queue-tick: ^1.0.1 + checksum: 52e0ec94026d67c9e2e2e1090f05e5b138c2f2822462d9a8ef4a4805625a31d103e55ea5267fcd9bfe041374926424e42aec2dda28a85cb9de42c2a16d416d94 + languageName: node + linkType: hard + "strict-uri-encode@npm:^1.0.0": version: 1.1.0 resolution: "strict-uri-encode@npm:1.1.0" @@ -36709,17 +36470,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimend@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: d44f543833112f57224e79182debadc9f4f3bf9d48a0414d6f0cbd2a86f2b3e8c0ca1f95c3f8e5b32ae83e91554d79d932fc746b411895f03f93d89ed3dfb6bc - languageName: node - linkType: hard - "string.prototype.trimend@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimend@npm:1.0.7" @@ -36731,17 +36481,6 @@ __metadata: languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.5": - version: 1.0.5 - resolution: "string.prototype.trimstart@npm:1.0.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - es-abstract: ^1.19.5 - checksum: a4857c5399ad709d159a77371eeaa8f9cc284469a0b5e1bfe405de16f1fd4166a8ea6f4180e55032f348d1b679b1599fd4301fbc7a8b72bdb3e795e43f7b1048 - languageName: node - linkType: hard - "string.prototype.trimstart@npm:^1.0.7": version: 1.0.7 resolution: "string.prototype.trimstart@npm:1.0.7" @@ -37316,6 +37055,17 @@ __metadata: languageName: node linkType: hard +"tar-fs@npm:^3.0.4": + version: 3.0.4 + resolution: "tar-fs@npm:3.0.4" + dependencies: + mkdirp-classic: ^0.5.2 + pump: ^3.0.0 + tar-stream: ^3.1.5 + checksum: dcf4054f9e92ca0efe61c2b3f612914fb259a47900aa908a63106513a6d006c899b426ada53eb88d9dbbf089b5724c8e90b96a2c4ca6171845fa14203d734e30 + languageName: node + linkType: hard + "tar-stream@npm:^1.5.2, tar-stream@npm:^1.6.2": version: 1.6.2 resolution: "tar-stream@npm:1.6.2" @@ -37344,6 +37094,17 @@ __metadata: languageName: node linkType: hard +"tar-stream@npm:^3.1.5": + version: 3.1.6 + resolution: "tar-stream@npm:3.1.6" + dependencies: + b4a: ^1.6.4 + fast-fifo: ^1.2.0 + streamx: ^2.15.0 + checksum: f3627f918581976e954ff03cb8d370551053796b82564f8c7ca8fac84c48e4d042026d0854fc222171a34ff9c682b72fae91be9c9b0a112d4c54f9e4f443e9c5 + languageName: node + linkType: hard + "tar@npm:^4": version: 4.4.19 resolution: "tar@npm:4.4.19" @@ -37881,10 +37642,10 @@ __metadata: languageName: node linkType: hard -"totalist@npm:^1.0.0": - version: 1.1.0 - resolution: "totalist@npm:1.1.0" - checksum: dfab80c7104a1d170adc8c18782d6c04b7df08352dec452191208c66395f7ef2af7537ddfa2cf1decbdcfab1a47afbbf0dec6543ea191da98c1c6e1599f86adc +"totalist@npm:^3.0.0": + version: 3.0.1 + resolution: "totalist@npm:3.0.1" + checksum: 5132d562cf88ff93fd710770a92f31dbe67cc19b5c6ccae2efc0da327f0954d211bbfd9456389655d726c624f284b4a23112f56d1da931ca7cfabbe1f45e778a languageName: node linkType: hard @@ -38454,7 +38215,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5, type-detect@npm:^4.0.8": +"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15 @@ -38637,10 +38398,10 @@ __metadata: languageName: node linkType: hard -"ua-parser-js@npm:^1.0.35": - version: 1.0.35 - resolution: "ua-parser-js@npm:1.0.35" - checksum: 02370d38a0c8b586f2503d1c3bbba5cbc0b97d407282f9023201a99e4c03eae4357a2800fdf50cf80d73ec25c0b0cc5bfbaa03975b0add4043d6e4c86712c9c1 +"ua-parser-js@npm:^1.0.37": + version: 1.0.37 + resolution: "ua-parser-js@npm:1.0.37" + checksum: 4d481c720d523366d7762dc8a46a1b58967d979aacf786f9ceceb1cd767de069f64a4bdffb63956294f1c0696eb465ddb950f28ba90571709e33521b4bd75e07 languageName: node linkType: hard @@ -39451,12 +39212,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^9.0.0": - version: 9.0.0 - resolution: "uuid@npm:9.0.0" +"uuid@npm:^9.0.0, uuid@npm:^9.0.1": + version: 9.0.1 + resolution: "uuid@npm:9.0.1" bin: uuid: dist/bin/uuid - checksum: 8dd2c83c43ddc7e1c71e36b60aea40030a6505139af6bee0f382ebcd1a56f6cd3028f7f06ffb07f8cf6ced320b76aea275284b224b002b289f89fe89c389b028 + checksum: 39931f6da74e307f51c0fb463dc2462807531dc80760a9bff1e35af4316131b4fc3203d16da60ae33f07fdca5b56f3f1dd662da0c99fea9aaeab2004780cc5f4 languageName: node linkType: hard @@ -39805,14 +39566,14 @@ __metadata: languageName: node linkType: hard -"webdav@npm:^4.11.2": - version: 4.11.2 - resolution: "webdav@npm:4.11.2" +"webdav@npm:^4.11.3": + version: 4.11.3 + resolution: "webdav@npm:4.11.3" dependencies: axios: ^0.27.2 base-64: ^1.0.0 byte-length: ^1.0.2 - fast-xml-parser: ^3.19.0 + fast-xml-parser: ^4.2.4 he: ^1.2.0 hot-patcher: ^1.0.0 layerr: ^0.1.2 @@ -39822,7 +39583,7 @@ __metadata: path-posix: ^1.0.0 url-join: ^4.0.1 url-parse: ^1.5.10 - checksum: 6fe040b43e350cb15febf688d8eabe45dbe3c74922c94a3730d63911139def435de7f410439e4e1eac6b46d545b6a3631808cc773647b04e6e41731f8ad5f011 + checksum: e5bfc66149088cd857c23a3a549650d7483dd5615cf1c4b6251a5b290a4ad8fef4975bfd99fca2d5842a0eaadc056bc0044e37893e0ad5447e6ce2e2dbd81da5 languageName: node linkType: hard @@ -39861,23 +39622,30 @@ __metadata: languageName: node linkType: hard -"webpack-bundle-analyzer@npm:^4.9.0": - version: 4.9.0 - resolution: "webpack-bundle-analyzer@npm:4.9.0" +"webpack-bundle-analyzer@npm:^4.9.1": + version: 4.9.1 + resolution: "webpack-bundle-analyzer@npm:4.9.1" dependencies: "@discoveryjs/json-ext": 0.5.7 acorn: ^8.0.4 acorn-walk: ^8.0.0 - chalk: ^4.1.0 commander: ^7.2.0 + escape-string-regexp: ^4.0.0 gzip-size: ^6.0.0 - lodash: ^4.17.20 + is-plain-object: ^5.0.0 + lodash.debounce: ^4.0.8 + lodash.escape: ^4.0.1 + lodash.flatten: ^4.4.0 + lodash.invokemap: ^4.6.0 + lodash.pullall: ^4.2.0 + lodash.uniqby: ^4.7.0 opener: ^1.5.2 - sirv: ^1.0.7 + picocolors: ^1.0.0 + sirv: ^2.0.3 ws: ^7.3.1 bin: webpack-bundle-analyzer: lib/bin/analyzer.js - checksum: e439aea4e88e18bfdc16eb69782c1bb17b2e581905a5cfa8d34058dc6677f6e202f896189268e58b49fa14ae12f5ef4c25cdca9f98f3de7e6699ac62def2f0af + checksum: 7e891c28d5a903242893e55ecc714fa01d7ad6bedade143235c07091b235915349812fa048968462781d59187507962f38b6c61ed7d25fb836ba0ac0ee919a39 languageName: node linkType: hard @@ -40165,44 +39933,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:>=4.0.0 <6.0.0, webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5, webpack@npm:^5.9.0": - version: 5.88.2 - resolution: "webpack@npm:5.88.2" - dependencies: - "@types/eslint-scope": ^3.7.3 - "@types/estree": ^1.0.0 - "@webassemblyjs/ast": ^1.11.5 - "@webassemblyjs/wasm-edit": ^1.11.5 - "@webassemblyjs/wasm-parser": ^1.11.5 - acorn: ^8.7.1 - acorn-import-assertions: ^1.9.0 - browserslist: ^4.14.5 - chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.15.0 - es-module-lexer: ^1.2.1 - eslint-scope: 5.1.1 - events: ^3.2.0 - glob-to-regexp: ^0.4.1 - graceful-fs: ^4.2.9 - json-parse-even-better-errors: ^2.3.1 - loader-runner: ^4.2.0 - mime-types: ^2.1.27 - neo-async: ^2.6.2 - schema-utils: ^3.2.0 - tapable: ^2.1.1 - terser-webpack-plugin: ^5.3.7 - watchpack: ^2.4.0 - webpack-sources: ^3.2.3 - peerDependenciesMeta: - webpack-cli: - optional: true - bin: - webpack: bin/webpack.js - checksum: 79476a782da31a21f6dd38fbbd06b68da93baf6a62f0d08ca99222367f3b8668f5a1f2086b7bb78e23172e31fa6df6fa7ab09b25e827866c4fc4dc2b30443ce2 - languageName: node - linkType: hard - -"webpack@npm:^5.89.0": +"webpack@npm:>=4.0.0 <6.0.0, webpack@npm:>=4.43.0 <6.0.0, webpack@npm:^5, webpack@npm:^5.89.0, webpack@npm:^5.9.0": version: 5.89.0 resolution: "webpack@npm:5.89.0" dependencies: @@ -40275,10 +40006,10 @@ __metadata: languageName: node linkType: hard -"whatwg-fetch@npm:^3.6.2": - version: 3.6.2 - resolution: "whatwg-fetch@npm:3.6.2" - checksum: ee976b7249e7791edb0d0a62cd806b29006ad7ec3a3d89145921ad8c00a3a67e4be8f3fb3ec6bc7b58498724fd568d11aeeeea1f7827e7e1e5eae6c8a275afed +"whatwg-fetch@npm:^3.6.19": + version: 3.6.19 + resolution: "whatwg-fetch@npm:3.6.19" + checksum: 2896bc9ca867ea514392c73e2a272f65d5c4916248fe0837a9df5b1b92f247047bc76cf7c29c28a01ac6c5fb4314021d2718958c8a08292a96d56f72b2f56806 languageName: node linkType: hard