From ee667a67b6810330dea1f3fdf69c04c133b81794 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Sun, 3 May 2026 12:04:31 +0000 Subject: [PATCH 01/69] Bump 8.4.1 --- .changeset/bump-patch-1777809871566.md | 5 +++++ yarn.lock | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/bump-patch-1777809871566.md diff --git a/.changeset/bump-patch-1777809871566.md b/.changeset/bump-patch-1777809871566.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1777809871566.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/yarn.lock b/yarn.lock index d0b0b61dab867..8a1c3289d3eaf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9429,7 +9429,7 @@ __metadata: "@rocket.chat/css-in-js": "*" "@rocket.chat/fuselage": "*" "@rocket.chat/fuselage-tokens": "*" - "@rocket.chat/message-parser": 0.31.36-rc.0 + "@rocket.chat/message-parser": 0.31.36 "@rocket.chat/styled": "*" "@rocket.chat/ui-client": "workspace:^" "@rocket.chat/ui-contexts": "workspace:^" @@ -10926,7 +10926,7 @@ __metadata: "@react-aria/toolbar": "*" "@rocket.chat/fuselage": "*" "@rocket.chat/icons": "*" - "@rocket.chat/ui-client": 30.0.0-rc.2 + "@rocket.chat/ui-client": 30.0.0 react: "*" react-dom: "*" languageName: unknown @@ -11198,8 +11198,8 @@ __metadata: typescript: "npm:~5.9.3" peerDependencies: "@rocket.chat/layout": "*" - "@rocket.chat/tools": 0.3.0-rc.0 - "@rocket.chat/ui-contexts": 30.0.0-rc.2 + "@rocket.chat/tools": 0.3.0 + "@rocket.chat/ui-contexts": 30.0.0 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From 699ca3f0fe640d67ed865b860433f9c845d52bbc Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 16:46:06 +0200 Subject: [PATCH 02/69] chore(deps): bump 50 patch-level deps across monorepo (#40366) Co-authored-by: Guilherme Gazzo --- .../__snapshots__/UserInfo.spec.tsx.snap | 64 +- .../AppLogsFilterContextualBar.spec.tsx.snap | 16 +- .../CannedResponseList.spec.tsx.snap | 20 +- .../__snapshots__/BannedUsers.spec.tsx.snap | 88 +- .../DiscussionsList.spec.tsx.snap | 52 +- .../__snapshots__/RoomFiles.spec.tsx.snap | 52 +- .../__snapshots__/InviteUsers.spec.tsx.snap | 64 +- .../__snapshots__/RoomMembers.spec.tsx.snap | 98 +- apps/meteor/package.json | 44 +- apps/uikit-playground/package.json | 12 +- ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/package.json | 4 +- ee/apps/omnichannel-transcript/package.json | 4 +- ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/package.json | 2 +- ee/packages/abac/package.json | 2 +- ee/packages/federation-matrix/package.json | 6 +- ee/packages/license/package.json | 4 +- ee/packages/media-calls/package.json | 2 +- ee/packages/network-broker/package.json | 2 +- ee/packages/omni-core-ee/package.json | 2 +- ee/packages/omnichannel-services/package.json | 2 +- ee/packages/pdf-worker/package.json | 4 +- ee/packages/presence/package.json | 2 +- package.json | 9 +- packages/account-utils/package.json | 2 +- packages/agenda/package.json | 4 +- packages/api-client/package.json | 2 +- packages/apps-engine/package.json | 14 +- packages/apps/package.json | 2 +- packages/cas-validate/package.json | 2 +- packages/core-services/package.json | 2 +- packages/core-typings/package.json | 2 +- packages/cron/package.json | 2 +- packages/ddp-client/package.json | 2 +- packages/desktop-api/package.json | 2 +- packages/eslint-config/package.json | 10 +- packages/favicon/package.json | 2 +- packages/fuselage-ui-kit/package.json | 8 +- packages/gazzodown/package.json | 10 +- packages/http-router/package.json | 8 +- packages/i18n/package.json | 2 +- packages/instance-status/package.json | 2 +- packages/jest-presets/package.json | 4 +- packages/jwt/package.json | 2 +- packages/livechat/package.json | 8 +- packages/log-format/package.json | 2 +- packages/logger/package.json | 2 +- packages/media-signaling/package.json | 2 +- packages/message-parser/package.json | 8 +- packages/message-types/package.json | 2 +- packages/mock-providers/package.json | 4 +- packages/model-typings/package.json | 2 +- packages/models/package.json | 2 +- packages/mongo-adapter/package.json | 2 +- packages/omni-core/package.json | 2 +- packages/password-policies/package.json | 2 +- packages/patch-injection/package.json | 2 +- packages/peggy-loader/package.json | 4 +- packages/random/package.json | 2 +- packages/release-action/package.json | 4 +- packages/release-action/src/setupOctokit.ts | 4 +- packages/release-changelog/package.json | 2 +- packages/rest-typings/package.json | 2 +- .../server-cloud-communication/package.json | 2 +- packages/server-fetch/package.json | 4 +- packages/sha256/package.json | 2 +- packages/storybook-config/package.json | 6 +- packages/tools/package.json | 2 +- packages/tracing/package.json | 6 +- packages/ui-avatar/package.json | 6 +- packages/ui-client/package.json | 10 +- packages/ui-composer/package.json | 8 +- packages/ui-contexts/package.json | 6 +- packages/ui-kit/package.json | 4 +- packages/ui-video-conf/package.json | 8 +- packages/ui-voip/package.json | 6 +- .../CallHistoryContextualbar.spec.tsx.snap | 32 +- packages/web-ui-registration/package.json | 6 +- yarn.lock | 1694 ++++++++++------- 81 files changed, 1307 insertions(+), 1198 deletions(-) diff --git a/apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap b/apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap index 07e5652512bc2..5f905db5259be 100644 --- a/apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap +++ b/apps/meteor/client/components/UserInfo/__snapshots__/UserInfo.spec.tsx.snap @@ -259,19 +259,15 @@ exports[`renders Default without crashing 1`] = `
@@ -577,19 +569,15 @@ exports[`renders InvitedUser without crashing 1`] = `
@@ -941,19 +925,15 @@ exports[`renders WithABACAttributes without crashing 1`] = `
@@ -1259,19 +1235,15 @@ exports[`renders WithVoiceCallExtension without crashing 1`] = `
diff --git a/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterContextualBar.spec.tsx.snap b/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterContextualBar.spec.tsx.snap index acb09f873de0c..a58f80ae99208 100644 --- a/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterContextualBar.spec.tsx.snap +++ b/apps/meteor/client/views/marketplace/AppDetailsPage/tabs/AppLogs/Filters/__snapshots__/AppLogsFilterContextualBar.spec.tsx.snap @@ -408,19 +408,15 @@ exports[`renders AppLogsItem without crashing 1`] = `
diff --git a/apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/__snapshots__/CannedResponseList.spec.tsx.snap b/apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/__snapshots__/CannedResponseList.spec.tsx.snap index 8aa5179e1a90b..d72850cbeb754 100644 --- a/apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/__snapshots__/CannedResponseList.spec.tsx.snap +++ b/apps/meteor/client/views/omnichannel/cannedResponses/contextualBar/CannedResponse/__snapshots__/CannedResponseList.spec.tsx.snap @@ -145,11 +145,11 @@ exports[`CannedResponseList Storybook Stories renders Default without crashing 1 >
@@ -159,19 +159,15 @@ exports[`CannedResponseList Storybook Stories renders Default without crashing 1
diff --git a/apps/meteor/client/views/room/contextualBar/BannedUsers/__snapshots__/BannedUsers.spec.tsx.snap b/apps/meteor/client/views/room/contextualBar/BannedUsers/__snapshots__/BannedUsers.spec.tsx.snap index 38cb3fcaf73fe..2402b992717b8 100644 --- a/apps/meteor/client/views/room/contextualBar/BannedUsers/__snapshots__/BannedUsers.spec.tsx.snap +++ b/apps/meteor/client/views/room/contextualBar/BannedUsers/__snapshots__/BannedUsers.spec.tsx.snap @@ -69,11 +69,11 @@ exports[`renders Default without crashing 1`] = ` >
@@ -447,19 +439,15 @@ exports[`renders Empty without crashing 1`] = `
@@ -569,19 +553,15 @@ exports[`renders Loading without crashing 1`] = `
@@ -698,19 +674,15 @@ exports[`renders WithError without crashing 1`] = `
@@ -813,11 +781,11 @@ exports[`renders WithRealNames without crashing 1`] = ` >
diff --git a/apps/meteor/client/views/room/contextualBar/Discussions/__snapshots__/DiscussionsList.spec.tsx.snap b/apps/meteor/client/views/room/contextualBar/Discussions/__snapshots__/DiscussionsList.spec.tsx.snap index a8381c4465d03..9171767c3c0c3 100644 --- a/apps/meteor/client/views/room/contextualBar/Discussions/__snapshots__/DiscussionsList.spec.tsx.snap +++ b/apps/meteor/client/views/room/contextualBar/Discussions/__snapshots__/DiscussionsList.spec.tsx.snap @@ -103,11 +103,11 @@ exports[`renders Default without crashing 1`] = ` >
@@ -117,19 +117,15 @@ exports[`renders Default without crashing 1`] = `
@@ -279,19 +271,15 @@ exports[`renders Empty without crashing 1`] = `
@@ -431,19 +415,15 @@ exports[`renders Loading without crashing 1`] = `
diff --git a/apps/meteor/client/views/room/contextualBar/RoomFiles/__snapshots__/RoomFiles.spec.tsx.snap b/apps/meteor/client/views/room/contextualBar/RoomFiles/__snapshots__/RoomFiles.spec.tsx.snap index 6587b1ab9de66..e6b458b6dd15a 100644 --- a/apps/meteor/client/views/room/contextualBar/RoomFiles/__snapshots__/RoomFiles.spec.tsx.snap +++ b/apps/meteor/client/views/room/contextualBar/RoomFiles/__snapshots__/RoomFiles.spec.tsx.snap @@ -160,13 +160,13 @@ exports[`renders Default without crashing 1`] = ` >
@@ -176,19 +176,15 @@ exports[`renders Default without crashing 1`] = `
@@ -395,19 +387,15 @@ exports[`renders Empty without crashing 1`] = `
@@ -604,19 +588,15 @@ exports[`renders Loading without crashing 1`] = `
diff --git a/apps/meteor/client/views/room/contextualBar/RoomMembers/InviteUsers/__snapshots__/InviteUsers.spec.tsx.snap b/apps/meteor/client/views/room/contextualBar/RoomMembers/InviteUsers/__snapshots__/InviteUsers.spec.tsx.snap index 6f67d3a27b48a..9dd80d843ef7a 100644 --- a/apps/meteor/client/views/room/contextualBar/RoomMembers/InviteUsers/__snapshots__/InviteUsers.spec.tsx.snap +++ b/apps/meteor/client/views/room/contextualBar/RoomMembers/InviteUsers/__snapshots__/InviteUsers.spec.tsx.snap @@ -152,19 +152,15 @@ exports[`renders Default without crashing 1`] = `
@@ -482,19 +474,15 @@ exports[`renders InviteEdit without crashing 1`] = `
@@ -663,19 +647,15 @@ exports[`renders InviteError without crashing 1`] = `
@@ -824,19 +800,15 @@ exports[`renders InviteLoading without crashing 1`] = `
diff --git a/apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap b/apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap index 3040ae602973c..3a421c87e94cb 100644 --- a/apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap +++ b/apps/meteor/client/views/room/contextualBar/RoomMembers/__snapshots__/RoomMembers.spec.tsx.snap @@ -147,7 +147,7 @@ exports[`renders Default without crashing 1`] = ` tabindex="-1" >
@@ -372,19 +364,15 @@ exports[`renders Empty without crashing 1`] = `
@@ -560,19 +544,15 @@ exports[`renders Loading without crashing 1`] = `
@@ -753,7 +729,7 @@ exports[`renders WithABACRoom without crashing 1`] = ` tabindex="-1" >
@@ -973,7 +941,7 @@ exports[`renders WithInvitedMember without crashing 1`] = ` tabindex="-1" >
diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 45d1b7529b621..156cfc30e3e90 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -84,7 +84,7 @@ "@nivo/pie": "0.88.0", "@noble/ed25519": "^3.0.0", "@node-oauth/oauth2-server": "~5.2.1", - "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api": "^1.9.1", "@opentelemetry/exporter-trace-otlp-grpc": "^0.54.2", "@opentelemetry/sdk-node": "^0.54.2", "@parse/node-apn": "^7.0.1", @@ -162,9 +162,9 @@ "@slack/bolt": "^3.22.0", "@slack/rtm-api": "~7.0.4", "@tanstack/react-query": "~5.65.1", - "@types/meteor": "^2.9.10", - "@xmldom/xmldom": "~0.8.11", - "adm-zip": "0.5.16", + "@types/meteor": "^2.9.11", + "@xmldom/xmldom": "~0.8.12", + "adm-zip": "0.5.17", "ajv": "^8.17.1", "ajv-formats": "~3.0.1", "archiver": "^7.0.1", @@ -173,12 +173,12 @@ "bad-words": "^3.0.4", "bcrypt": "^5.1.1", "body-parser": "1.20.4", - "bson": "^6.7.0", + "bson": "^6.7.1", "busboy": "^1.6.0", "chalk": "^4.1.2", "change-case": "^4.1.2", "chart.js": "^3.9.1", - "codemirror": "~5.65.20", + "codemirror": "~5.65.21", "colorette": "^2.0.20", "colors": "^1.4.0", "connect": "^3.7.0", @@ -215,7 +215,7 @@ "gravatar": "^1.8.2", "he": "^1.2.0", "highlight.js": "11.8.0", - "hono": "^4.12.5", + "hono": "4.12.5", "http-proxy-agent": "^7.0.2", "human-interval": "^2.0.1", "i18next-http-backend": "^1.4.5", @@ -229,9 +229,9 @@ "jschardet": "^3.1.4", "jsdom": "^26.1.0", "json-2-csv": "^5.5.10", - "jsrsasign": "^11.1.1", + "jsrsasign": "^11.1.2", "juice": "^8.1.0", - "katex": "~0.16.28", + "katex": "~0.16.45", "ldap-escape": "^2.0.6", "ldapjs": "^2.3.3", "limax": "^3.0.0", @@ -243,7 +243,7 @@ "mailparser": "~3.7.5", "marked": "^4.3.0", "mem": "^8.1.1", - "meteor-node-stubs": "~1.2.25", + "meteor-node-stubs": "~1.2.27", "mime-db": "^1.52.0", "mime-type": "^4.0.0", "mkdirp": "^1.0.4", @@ -258,7 +258,7 @@ "node-rsa": "^1.1.1", "nodemailer": "^8.0.5", "object-path": "^0.11.8", - "overlayscrollbars": "^2.11.4", + "overlayscrollbars": "~2.11.5", "overlayscrollbars-react": "^0.5.6", "path": "^0.12.7", "path-to-regexp": "^6.3.0", @@ -268,10 +268,10 @@ "prometheus-gc-stats": "^1.1.0", "proxy-from-env": "^1.1.0", "psl": "^1.10.0", - "qs": "^6.14.1", + "qs": "^6.14.2", "query-string": "^7.1.3", "queue-fifo": "^0.2.6", - "re-resizable": "^6.10.1", + "re-resizable": "^6.10.4", "react": "~18.3.1", "react-aria": "~3.37.0", "react-dom": "~18.3.1", @@ -280,7 +280,7 @@ "react-i18next": "~13.2.2", "react-keyed-flatten-children": "^3.0.2", "react-stately": "~3.17.0", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "reflect-metadata": "^0.2.2", "sanitize-html": "~2.16.0", "semver": "^7.6.3", @@ -298,7 +298,7 @@ "tinykeys": "^1.4.0", "tsyringe": "^4.10.0", "tweetnacl": "^1.0.3", - "twilio": "^5.4.2", + "twilio": "~5.4.5", "twit": "^2.2.11", "typia": "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch", "ua-parser-js": "~1.0.41", @@ -311,7 +311,7 @@ "yaqrcode": "^0.2.1", "yoga-layout": "patch:yoga-layout@npm%3A3.2.1#~/.yarn/patches/yoga-layout-npm-3.2.1-51ec934670.patch", "zod": "~4.3.6", - "zustand": "~5.0.10" + "zustand": "~5.0.12" }, "devDependencies": { "@axe-core/playwright": "^4.10.2", @@ -334,7 +334,7 @@ "@testing-library/dom": "~10.4.1", "@testing-library/react": "~16.3.2", "@testing-library/user-event": "~14.6.1", - "@types/adm-zip": "^0.5.7", + "@types/adm-zip": "^0.5.8", "@types/archiver": "~6.0.4", "@types/babel__preset-env": "^7.10.0", "@types/bad-words": "^3.0.3", @@ -368,7 +368,7 @@ "@types/later": "^1.2.9", "@types/ldapjs": "^2.2.5", "@types/less": "~3.0.8", - "@types/lodash": "~4.17.23", + "@types/lodash": "~4.17.24", "@types/lodash.clonedeep": "^4.5.9", "@types/lodash.debounce": "^4.0.9", "@types/lodash.escape": "^4.0.9", @@ -389,9 +389,9 @@ "@types/proxyquire": "^1.3.31", "@types/psl": "^1.1.3", "@types/qs": "^6.14.0", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "@types/sanitize-html": "~2.16.0", + "@types/sanitize-html": "~2.16.1", "@types/semver": "^7.5.8", "@types/sharp": "^0.32.0", "@types/sinon": "^10.0.20", @@ -417,7 +417,7 @@ "cross-env": "^7.0.3", "docker-compose": "^0.24.8", "emojione-assets": "^4.5.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "fast-glob": "^3.3.3", "i18next": "~23.4.9", "jest": "~30.2.0", @@ -453,7 +453,7 @@ "ts-node": "^10.9.2", "tsx": "~4.21.0", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "volta": { "extends": "../../package.json" diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json index 9f40022b5c990..b6a99cad6102b 100644 --- a/apps/uikit-playground/package.json +++ b/apps/uikit-playground/package.json @@ -12,7 +12,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@codemirror/lang-javascript": "^6.2.4", + "@codemirror/lang-javascript": "^6.2.5", "@codemirror/lang-json": "^6.0.2", "@hello-pangea/dnd": "^17.0.0", "@lezer/highlight": "^1.2.3", @@ -37,20 +37,20 @@ "react-dom": "~18.3.1", "react-router-dom": "^6.30.3", "react-split-pane": "^0.1.92", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "reactflow": "^11.11.4" }, "devDependencies": { "@rocket.chat/emitter": "^0.32.0", "@rocket.chat/tsconfig": "workspace:*", - "@types/lodash": "~4.17.23", - "@types/react": "~18.3.27", + "@types/lodash": "~4.17.24", + "@types/react": "~18.3.28", "@types/react-beautiful-dnd": "^13.1.8", "@types/react-dom": "~18.3.7", "@vitejs/plugin-react": "~6.0.1", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3", - "vite": "^8.0.0" + "vite": "^8.0.8" }, "volta": { "extends": "../../package.json" diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index 38cf70f3463fa..19472bf496bf2 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -48,7 +48,7 @@ "@types/bcrypt": "^5.0.2", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "ts-node": "^10.9.2", "typescript": "~5.9.3" }, diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index 99023e9aea3e1..7888df0cafd33 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -46,7 +46,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "ts-node": "^10.9.2", "typescript": "~5.9.3" }, diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 17aac6d0c46b8..b276bc6c5a2c4 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -45,7 +45,7 @@ "prometheus-gc-stats": "^1.1.0", "sharp": "^0.33.5", "underscore": "^1.13.8", - "uuid": "^11.0.3", + "uuid": "^11.0.5", "ws": "~8.19.0" }, "devDependencies": { @@ -60,7 +60,7 @@ "@types/underscore": "^1.13.0", "@types/uuid": "^10.0.0", "@types/ws": "^8.18.1", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "pino-pretty": "13.1.3", "ts-node": "^10.9.2", diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index 61207818e91ee..cc2eff1222df8 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -54,8 +54,8 @@ "@types/i18next-sprintf-postprocessor": "^0.2.3", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", - "@types/react": "~18.3.27", - "eslint": "~9.39.3", + "@types/react": "~18.3.28", + "eslint": "~9.39.4", "react": "~18.3.1", "ts-node": "^10.9.2", "typescript": "~5.9.3" diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index c3451b36b9294..5f74808539f66 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -45,7 +45,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "ts-node": "^10.9.2", "typescript": "~5.9.3" }, diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index 162a5df488d56..fd1c637fb6d5e 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -47,7 +47,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "ts-node": "^10.9.2", "typescript": "~5.9.3" }, diff --git a/ee/packages/abac/package.json b/ee/packages/abac/package.json index 398683c4b5045..b1394287390e4 100644 --- a/ee/packages/abac/package.json +++ b/ee/packages/abac/package.json @@ -41,7 +41,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "mongodb-memory-server": "^10.1.4", "typescript": "~5.9.3" diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index ae43f3d8465c8..d71bd4367dba4 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -35,7 +35,7 @@ "mongodb": "6.16.0", "pino": "10.3.1", "reflect-metadata": "^0.2.2", - "sanitize-html": "~2.17.0", + "sanitize-html": "~2.17.3", "tsyringe": "^4.10.0", "tweetnacl": "^1.0.3" }, @@ -44,8 +44,8 @@ "@types/emojione": "^2.2.9", "@types/lodash.debounce": "^4.0.9", "@types/node": "~22.16.5", - "@types/sanitize-html": "~2.16.0", - "eslint": "~9.39.3", + "@types/sanitize-html": "~2.16.1", + "eslint": "~9.39.4", "jest": "~30.2.0", "jest-qase-reporter": "^2.1.4", "matrix-js-sdk": "^38.4.0", diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index 8a43e72001b41..516fe53431021 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -27,8 +27,8 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/bcrypt": "^5.0.2", "@types/jest": "~30.0.0", - "@types/ws": "^8.5.13", - "eslint": "~9.39.3", + "@types/ws": "^8.5.14", + "eslint": "~9.39.4", "jest": "~30.2.0", "jest-websocket-mock": "~2.5.0", "typescript": "~5.9.3" diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json index a43534c5a06e3..3216f8e6f4a47 100644 --- a/ee/packages/media-calls/package.json +++ b/ee/packages/media-calls/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" } } diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json index 4d183fbb1b9c0..d89965748ddfe 100644 --- a/ee/packages/network-broker/package.json +++ b/ee/packages/network-broker/package.json @@ -28,7 +28,7 @@ "@types/node": "~22.16.5", "@types/sinon": "^10.0.20", "chai": "^4.5.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "sinon": "^19.0.5", "typescript": "~5.9.3" diff --git a/ee/packages/omni-core-ee/package.json b/ee/packages/omni-core-ee/package.json index 7e80372a2d455..82e25524f151c 100644 --- a/ee/packages/omni-core-ee/package.json +++ b/ee/packages/omni-core-ee/package.json @@ -27,7 +27,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index 5d8caa5092baf..b2da4d32a07ea 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -45,7 +45,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/ee/packages/pdf-worker/package.json b/ee/packages/pdf-worker/package.json index 2503c58b450b6..d3ea6ac804534 100644 --- a/ee/packages/pdf-worker/package.json +++ b/ee/packages/pdf-worker/package.json @@ -39,10 +39,10 @@ "@testing-library/react": "~16.3.2", "@types/emojione": "^2.2.9", "@types/jest": "~30.0.0", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", "buffer": "~6.0.3", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "react-dom": "~18.3.1", diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index 6b261fe79c7f0..b004ee26b1a72 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -25,7 +25,7 @@ "@rocket.chat/apps-engine": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/package.json b/package.json index 249b3f7870f26..8fd5d52caf3ad 100644 --- a/package.json +++ b/package.json @@ -74,22 +74,23 @@ "zod@npm:^3.25.0 || ^4.0.0": "patch:zod@npm%3A4.3.6#~/.yarn/patches/zod-npm-4.3.6-a096e305e6.patch", "zod@npm:~4.3.6": "patch:zod@npm%3A4.3.6#~/.yarn/patches/zod-npm-4.3.6-a096e305e6.patch", "@react-aria/i18n@npm:^3.0.0-nightly-fb28ab3b4-241024": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch", - "@react-aria/i18n@npm:^3.12.5": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch" + "@react-aria/i18n@npm:^3.12.5": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch", + "@react-aria/toolbar@npm:^3.0.0-nightly.5042": "3.0.0-nightly-fb28ab3b4-241024" }, "dependencies": { "@types/stream-buffers": "^3.0.8", "node-gyp": "^10.2.0" }, "devDependencies": { - "@changesets/cli": "^2.27.11", + "@changesets/cli": "^2.27.12", "@rocket.chat/eslint-config": "workspace:~", "@types/chart.js": "^2.9.41", "@types/js-yaml": "^4.0.9", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "eslint-plugin-you-dont-need-lodash-underscore": "~6.14.0", "ts-node": "^10.9.2", - "turbo": "2.8.12", + "turbo": "2.8.21", "typescript": "~5.9.3" }, "packageManager": "yarn@4.12.0", diff --git a/packages/account-utils/package.json b/packages/account-utils/package.json index 775de4bda8266..2678ca74b626b 100644 --- a/packages/account-utils/package.json +++ b/packages/account-utils/package.json @@ -14,7 +14,7 @@ "lint:fix": "eslint --fix ." }, "devDependencies": { - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/agenda/package.json b/packages/agenda/package.json index 773bac6339927..c6298107be765 100644 --- a/packages/agenda/package.json +++ b/packages/agenda/package.json @@ -22,8 +22,8 @@ "mongodb": "6.16.0" }, "devDependencies": { - "@types/debug": "^4.1.12", - "eslint": "~9.39.3", + "@types/debug": "^4.1.13", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/api-client/package.json b/packages/api-client/package.json index 9606d723492ef..e3a86cfdc8b48 100644 --- a/packages/api-client/package.json +++ b/packages/api-client/package.json @@ -27,7 +27,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", "@types/strict-uri-encode": "^2.0.2", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "jest-fetch-mock": "~3.0.3", "typescript": "~5.9.3" diff --git a/packages/apps-engine/package.json b/packages/apps-engine/package.json index 1e7f1df0b0d87..15a53cde7cfc8 100644 --- a/packages/apps-engine/package.json +++ b/packages/apps-engine/package.json @@ -77,10 +77,10 @@ ] }, "dependencies": { - "@msgpack/msgpack": "3.0.0-beta2", - "adm-zip": "^0.5.16", + "@msgpack/msgpack": "3.0.1", + "adm-zip": "^0.5.17", "debug": "^4.3.7", - "esbuild": "~0.27.3", + "esbuild": "~0.27.7", "jose": "^4.15.9", "jsonrpc-lite": "^2.2.0", "lodash.clonedeep": "^4.5.0", @@ -91,20 +91,20 @@ "devDependencies": { "@rocket.chat/ui-kit": "workspace:~", "@seald-io/nedb": "^4.1.2", - "@types/adm-zip": "^0.5.7", - "@types/debug": "^4.1.12", + "@types/adm-zip": "^0.5.8", + "@types/debug": "^4.1.13", "@types/lodash.clonedeep": "^4.5.9", "@types/node": "~22.16.5", "@types/semver": "^7.5.8", "@types/stack-trace": "0.0.33", "@types/uuid": "~10.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "npm-run-all": "^4.1.5", "nyc": "^17.1.0", "rimraf": "^6.0.1", "tap-bark": "^1.0.0", "ts-node": "^6.2.0", - "typedoc": "~0.28.16", + "typedoc": "~0.28.19", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/apps/package.json b/packages/apps/package.json index 93d63ea69d5b0..2ac4c89d94f7a 100644 --- a/packages/apps/package.json +++ b/packages/apps/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/cas-validate/package.json b/packages/cas-validate/package.json index 43c00e16ec4dc..56859ca6d626c 100644 --- a/packages/cas-validate/package.json +++ b/packages/cas-validate/package.json @@ -19,7 +19,7 @@ "cheerio": "1.0.0" }, "devDependencies": { - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 9fc33f8892c71..12423f388bde2 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -33,7 +33,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "mongodb": "6.16.0", "prettier": "~3.3.3", diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index d30eb9e26cb76..bba8d2756d9fa 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@types/express": "^4.17.25", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "mongodb": "6.16.0", "npm-run-all": "~4.1.5", "prettier": "~3.3.3", diff --git a/packages/cron/package.json b/packages/cron/package.json index 98f00c9cb4119..8e5d95f4d5042 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json index 1613ac557aab6..f8588c1547d7e 100644 --- a/packages/ddp-client/package.json +++ b/packages/ddp-client/package.json @@ -26,7 +26,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", "@types/ws": "^8.18.1", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "jest-websocket-mock": "~2.5.0", "typescript": "~5.9.3", diff --git a/packages/desktop-api/package.json b/packages/desktop-api/package.json index 9d929d279a18a..63515e73dd0dc 100644 --- a/packages/desktop-api/package.json +++ b/packages/desktop-api/package.json @@ -16,7 +16,7 @@ "typecheck": "tsc -p tsconfig.json --noEmit" }, "devDependencies": { - "eslint": "~9.39.3", + "eslint": "~9.39.4", "rimraf": "~6.0.1", "typescript": "~5.9.3" }, diff --git a/packages/eslint-config/package.json b/packages/eslint-config/package.json index 6c2827261393e..077e66f45472d 100644 --- a/packages/eslint-config/package.json +++ b/packages/eslint-config/package.json @@ -17,21 +17,21 @@ "dependencies": { "@babel/core": "~7.28.6", "@babel/eslint-parser": "~7.28.6", - "@eslint/js": "~9.39.3", + "@eslint/js": "~9.39.4", "@types/eslint": "~8.44.9", "@types/prettier": "^2.7.3", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "eslint-config-prettier": "~10.1.8", "eslint-import-resolver-typescript": "~4.4.4", "eslint-plugin-anti-trojan-source": "~1.1.2", "eslint-plugin-import": "~2.32.0", - "eslint-plugin-jest": "~29.15.0", + "eslint-plugin-jest": "~29.15.2", "eslint-plugin-jsx-a11y": "~6.10.2", "eslint-plugin-prettier": "~5.5.5", "eslint-plugin-react": "~7.37.5", "eslint-plugin-react-hooks": "~7.0.1", - "eslint-plugin-storybook": "~10.2.12", - "eslint-plugin-testing-library": "~7.16.0", + "eslint-plugin-storybook": "~10.2.19", + "eslint-plugin-testing-library": "~7.16.2", "globals": "~17.3.0", "prettier": "~3.3.3", "typescript-eslint": "~8.56.1" diff --git a/packages/favicon/package.json b/packages/favicon/package.json index 5248000151b77..59fc3b3aec676 100644 --- a/packages/favicon/package.json +++ b/packages/favicon/package.json @@ -14,7 +14,7 @@ "lint:fix": "eslint --fix ." }, "devDependencies": { - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index a5cbe03307fe5..761f1bf0eafe5 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -69,10 +69,10 @@ "@testing-library/dom": "~10.4.1", "@testing-library/react": "~16.3.2", "@testing-library/user-event": "~14.6.1", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", "cross-env": "^7.0.3", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "normalize.css": "^8.0.1", @@ -81,12 +81,12 @@ "react": "~18.3.1", "react-dom": "~18.3.1", "react-i18next": "~13.2.2", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "rimraf": "^6.0.1", "storybook": "^8.6.18", "storybook-dark-mode": "^4.0.2", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "peerDependencies": { "@rocket.chat/apps-engine": "workspace:^", diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index a8b62a04da7b6..5d7eda5ce0d5a 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -54,22 +54,22 @@ "@testing-library/react": "~16.3.2", "@types/jest": "~30.0.0", "@types/katex": "~0.16.8", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "identity-obj-proxy": "^3.0.0", "jest": "~30.2.0", - "katex": "~0.16.28", + "katex": "~0.16.45", "outdent": "^0.8.0", "react": "~18.3.1", "react-aria": "~3.37.0", "react-dom": "~18.3.1", "react-i18next": "~13.2.2", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "peerDependencies": { "@rocket.chat/core-typings": "workspace:^", diff --git a/packages/http-router/package.json b/packages/http-router/package.json index 2fe88f919f0d1..d7eae2aeab000 100644 --- a/packages/http-router/package.json +++ b/packages/http-router/package.json @@ -22,8 +22,8 @@ "@rocket.chat/rest-typings": "workspace:^", "ajv": "^8.17.1", "express": "^4.21.2", - "hono": "^4.12.5", - "qs": "^6.14.1" + "hono": "4.12.5", + "qs": "^6.14.2" }, "devDependencies": { "@rocket.chat/jest-presets": "workspace:^", @@ -31,10 +31,10 @@ "@types/express": "^4.17.25", "@types/jest": "~30.0.0", "@types/supertest": "~6.0.3", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "supertest": "~7.1.4", - "ts-jest": "~29.4.6", + "ts-jest": "~29.4.9", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/i18n/package.json b/packages/i18n/package.json index edac91b2c4aa4..05df78881856e 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -37,7 +37,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tools": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "typescript": "~5.9.3" diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 18a759a227b30..8449b3afe7d60 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "mongodb": "6.16.0", "prettier": "~3.3.3", "typescript": "~5.9.3" diff --git a/packages/jest-presets/package.json b/packages/jest-presets/package.json index ac7b52c84c660..74440be701afd 100644 --- a/packages/jest-presets/package.json +++ b/packages/jest-presets/package.json @@ -27,7 +27,7 @@ "lint": "eslint ." }, "dependencies": { - "@swc/core": "1.15.11", + "@swc/core": "1.15.26", "@swc/jest": "~0.2.39", "@testing-library/jest-dom": "~6.8.0", "@types/jest-axe": "~3.5.9", @@ -41,7 +41,7 @@ "@types/identity-obj-proxy": "^3.0.2", "@types/jest": "~30.0.0", "@types/uuid": "^10.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/jwt/package.json b/packages/jwt/package.json index 6e803c7162cb2..77b6d160b2c98 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -23,7 +23,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/livechat/package.json b/packages/livechat/package.json index c0ea06155f404..408844b50a871 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -70,7 +70,7 @@ "@storybook/theming": "^8.6.18", "@types/crypto-js": "~4.2.2", "@types/mini-css-extract-plugin": "~2.5.1", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/webpack-env": "~1.18.8", "@types/whatwg-fetch": "~0.0.33", "autoprefixer": "^9.8.8", @@ -79,7 +79,7 @@ "css-loader": "^4.3.0", "cssnano": "^7.0.7", "desvg-loader": "^0.1.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "file-loader": "^6.2.0", "html-webpack-plugin": "~5.6.6", "if-env": "^1.0.4", @@ -99,7 +99,7 @@ "resolve-url-loader": "~5.0.0", "rimraf": "^6.0.1", "sass": "~1.80.7", - "sass-loader": "~16.0.6", + "sass-loader": "~16.0.7", "storybook": "^8.6.18", "style-loader": "^1.3.0", "stylelint": "^16.10.0", @@ -108,7 +108,7 @@ "terser-webpack-plugin": "~5.3.17", "typescript": "~5.9.3", "url-loader": "^4.1.1", - "webpack": "~5.104.0", + "webpack": "~5.104.1", "webpack-cli": "~5.1.4", "webpack-dev-server": "~5.2.3" }, diff --git a/packages/log-format/package.json b/packages/log-format/package.json index dc10f047aced4..2794949c13a3c 100644 --- a/packages/log-format/package.json +++ b/packages/log-format/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@types/chalk": "^2.2.4", "@types/ejson": "^2.2.2", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/logger/package.json b/packages/logger/package.json index c5f7d0333779f..2d440aea73e09 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -18,7 +18,7 @@ "pino": "10.3.1" }, "devDependencies": { - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/media-signaling/package.json b/packages/media-signaling/package.json index eecd5395f411a..a317605d66856 100644 --- a/packages/media-signaling/package.json +++ b/packages/media-signaling/package.json @@ -36,7 +36,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" } diff --git a/packages/message-parser/package.json b/packages/message-parser/package.json index 71890d338d8be..c7425c5a77f54 100644 --- a/packages/message-parser/package.json +++ b/packages/message-parser/package.json @@ -51,7 +51,7 @@ "@rocket.chat/prettier-config": "~0.31.25", "@types/jest": "~30.0.0", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "fast-check": "^4.6.0", "jest": "~30.2.0", "npm-run-all": "^4.1.5", @@ -59,11 +59,11 @@ "prettier": "~3.3.3", "prettier-plugin-pegjs": "~0.5.4", "rimraf": "^6.0.1", - "tinybench": "^3.0.5", - "ts-loader": "~9.5.4", + "tinybench": "^3.0.7", + "ts-loader": "~9.5.7", "ts-node": "~10.9.2", "typescript": "~5.9.3", - "webpack": "~5.104.0", + "webpack": "~5.104.1", "webpack-cli": "~5.1.4" }, "engines": { diff --git a/packages/message-types/package.json b/packages/message-types/package.json index a08296c0a1d20..414f9ec690ce3 100644 --- a/packages/message-types/package.json +++ b/packages/message-types/package.json @@ -16,7 +16,7 @@ "devDependencies": { "@rocket.chat/core-typings": "workspace:~", "date-fns": "~4.1.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "moment": "^2.30.1", diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index a63ae7601e2ac..351fba9632187 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -31,9 +31,9 @@ "@testing-library/dom": "~10.4.1", "@testing-library/jest-dom": "~6.8.0", "@testing-library/react": "~16.3.2", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "react": "~18.3.1", "react-dom": "~18.3.1", diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 0e9d255d1246b..5b8b5d090a9e7 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/node-rsa": "^1.1.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "mongodb": "6.16.0", "typescript": "~5.9.3" }, diff --git a/packages/models/package.json b/packages/models/package.json index 33639f2eb4c54..0fc632cdcf821 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -33,7 +33,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", "@types/node-rsa": "^1.1.4", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/mongo-adapter/package.json b/packages/mongo-adapter/package.json index 21f46de72eae2..76acccfceef16 100644 --- a/packages/mongo-adapter/package.json +++ b/packages/mongo-adapter/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "mongodb": "6.16.0", "typescript": "~5.9.3" diff --git a/packages/omni-core/package.json b/packages/omni-core/package.json index 0e01e090f4072..8f86eb1eb6880 100644 --- a/packages/omni-core/package.json +++ b/packages/omni-core/package.json @@ -25,7 +25,7 @@ "@rocket.chat/tools": "workspace:*", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/password-policies/package.json b/packages/password-policies/package.json index b080e87a0bb29..f8ce431c6672d 100644 --- a/packages/password-policies/package.json +++ b/packages/password-policies/package.json @@ -20,7 +20,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/patch-injection/package.json b/packages/patch-injection/package.json index 58dac06fcc00f..b8a5dccec87af 100644 --- a/packages/patch-injection/package.json +++ b/packages/patch-injection/package.json @@ -20,7 +20,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/peggy-loader/package.json b/packages/peggy-loader/package.json index c0158f007662d..62a64d1784757 100644 --- a/packages/peggy-loader/package.json +++ b/packages/peggy-loader/package.json @@ -35,13 +35,13 @@ "devDependencies": { "@rocket.chat/prettier-config": "~0.31.25", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "npm-run-all": "^4.1.5", "peggy": "4.1.1", "prettier": "~3.3.3", "rimraf": "^6.0.1", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "peerDependencies": { "peggy": "*", diff --git a/packages/random/package.json b/packages/random/package.json index 96b77bb8d2508..52272d52f6543 100644 --- a/packages/random/package.json +++ b/packages/random/package.json @@ -18,7 +18,7 @@ "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/release-action/package.json b/packages/release-action/package.json index 6d50669bbe7d0..3bc9d67936853 100644 --- a/packages/release-action/package.json +++ b/packages/release-action/package.json @@ -12,7 +12,7 @@ "@actions/core": "^1.11.1", "@actions/exec": "^1.1.1", "@actions/github": "^6.0.1", - "@octokit/core": "^5.0.1", + "@octokit/core": "^5.0.2", "@octokit/plugin-throttling": "^6.1.0", "mdast-util-to-string": "2.0.0", "remark-parse": "9.0.0", @@ -22,7 +22,7 @@ }, "devDependencies": { "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "packageManager": "yarn@4.12.0", diff --git a/packages/release-action/src/setupOctokit.ts b/packages/release-action/src/setupOctokit.ts index 1701ae9029bf5..61a4ccf132888 100644 --- a/packages/release-action/src/setupOctokit.ts +++ b/packages/release-action/src/setupOctokit.ts @@ -6,7 +6,7 @@ export const setupOctokit = (githubToken: string) => { return new (GitHub.plugin(throttling))( getOctokitOptions(githubToken, { throttle: { - onRateLimit: (retryAfter, options, _octokit, retryCount) => { + onRateLimit: (retryAfter: number, options: object, _octokit: unknown, retryCount: number) => { core.warning(`Request quota exhausted for request ${(options as any).method} ${(options as any).url}`); if (retryCount <= 2) { @@ -14,7 +14,7 @@ export const setupOctokit = (githubToken: string) => { return true; } }, - onSecondaryRateLimit: (retryAfter, options, _octokit, retryCount) => { + onSecondaryRateLimit: (retryAfter: number, options: object, _octokit: unknown, retryCount: number) => { core.warning(`SecondaryRateLimit detected for request ${(options as any).method} ${(options as any).url}`); if (retryCount <= 2) { diff --git a/packages/release-changelog/package.json b/packages/release-changelog/package.json index 413c34e27f870..2966e1ccc34ff 100644 --- a/packages/release-changelog/package.json +++ b/packages/release-changelog/package.json @@ -14,7 +14,7 @@ "devDependencies": { "@changesets/types": "^6.0.0", "@types/node": "~22.16.5", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 22299b6019080..c09e6db1fd609 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "mongodb": "6.16.0", "typescript": "~5.9.3" }, diff --git a/packages/server-cloud-communication/package.json b/packages/server-cloud-communication/package.json index f8d5080e26757..068eb8757bea5 100644 --- a/packages/server-cloud-communication/package.json +++ b/packages/server-cloud-communication/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@rocket.chat/license": "workspace:^", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/server-fetch/package.json b/packages/server-fetch/package.json index e1049bba6dda0..f2501c22f7b8a 100644 --- a/packages/server-fetch/package.json +++ b/packages/server-fetch/package.json @@ -27,9 +27,9 @@ "proxy-from-env": "^1.1.0" }, "devDependencies": { - "@types/jest": "^29.5.5", + "@types/jest": "^29.5.14", "@types/node-fetch": "~2.6.13", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "^29.7.0", "typescript": "~5.9.3" }, diff --git a/packages/sha256/package.json b/packages/sha256/package.json index 5babb6fe05c02..4cdac69fa1ab3 100644 --- a/packages/sha256/package.json +++ b/packages/sha256/package.json @@ -17,7 +17,7 @@ "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/storybook-config/package.json b/packages/storybook-config/package.json index 2cc7abdd7f2b7..1f77b2654b688 100644 --- a/packages/storybook-config/package.json +++ b/packages/storybook-config/package.json @@ -30,17 +30,17 @@ "@storybook/preview-api": "^8.6.18", "@storybook/react-webpack5": "^8.6.18", "@storybook/theming": "^8.6.18", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "storybook-dark-mode": "^4.0.2", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "devDependencies": { "@rocket.chat/fuselage": "^0.76.0", "@rocket.chat/icons": "~0.47.0", "@rocket.chat/tsconfig": "workspace:*", "@storybook/react": "^8.6.18", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "react": "~18.3.1", "react-dom": "~18.3.1", "typescript": "~5.9.3" diff --git a/packages/tools/package.json b/packages/tools/package.json index f41ccf94f4922..b50a25cb7fd37 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -21,7 +21,7 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" }, diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 90f5dd9ec6151..6e8a0099cc3ee 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -15,15 +15,15 @@ "testunit": "jest --passWithNoTests" }, "dependencies": { - "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api": "^1.9.1", "@opentelemetry/exporter-trace-otlp-grpc": "^0.54.2", "@opentelemetry/sdk-node": "^0.54.2" }, "devDependencies": { "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", - "ts-jest": "~29.4.6", + "ts-jest": "~29.4.9", "typescript": "~5.9.3" }, "volta": { diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json index 8e8ccb4a2cc38..9caf2389171ba 100644 --- a/packages/ui-avatar/package.json +++ b/packages/ui-avatar/package.json @@ -22,12 +22,12 @@ "@rocket.chat/fuselage-tokens": "~0.33.2", "@rocket.chat/icons": "~0.47.0", "@rocket.chat/ui-contexts": "workspace:^", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "typescript": "~5.9.3" }, "peerDependencies": { diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 645c52cfbd5db..c057c9c1e6dcf 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -45,19 +45,19 @@ "@testing-library/dom": "~10.4.1", "@testing-library/react": "~16.3.2", "@types/jest": "~30.0.0", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", - "overlayscrollbars": "^2.11.4", + "overlayscrollbars": "~2.11.5", "overlayscrollbars-react": "^0.5.6", - "re-resizable": "^6.10.1", + "re-resizable": "^6.10.4", "react": "~18.3.1", "react-dom": "~18.3.1", "react-hook-form": "~7.45.4", "react-i18next": "~13.2.2", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "typescript": "~5.9.3" }, diff --git a/packages/ui-composer/package.json b/packages/ui-composer/package.json index 07479fd2f29b7..44300f7d1f1f0 100644 --- a/packages/ui-composer/package.json +++ b/packages/ui-composer/package.json @@ -38,16 +38,16 @@ "@storybook/react": "^8.6.18", "@storybook/react-webpack5": "^8.6.18", "@types/jest": "~30.0.0", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "peerDependencies": { "@react-aria/toolbar": "*", diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index fc08a3b97dcd4..7db6f780c1f2b 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -32,15 +32,15 @@ "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/tools": "workspace:~", "@types/jest": "~30.0.0", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "mongodb": "6.16.0", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "typescript": "~5.9.3" }, "peerDependencies": { diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index f3fcf667c9fda..102f8932d1984 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -38,12 +38,12 @@ "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "npm-run-all": "~4.1.5", "prettier": "~3.3.3", "rimraf": "~6.0.1", - "ts-jest": "~29.4.6", + "ts-jest": "~29.4.9", "ts-patch": "^3.3.0", "typescript": "~5.9.3" }, diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 4128f95734677..44808e76a827e 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -41,17 +41,17 @@ "@storybook/react-webpack5": "^8.6.18", "@types/jest": "~30.0.0", "@types/jest-axe": "~3.5.9", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "jest": "~30.2.0", "jest-axe": "~10.0.0", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "typescript": "~5.9.3", - "webpack": "~5.104.0" + "webpack": "~5.104.1" }, "peerDependencies": { "@rocket.chat/css-in-js": "*", diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json index fed07799b2ee9..9dca93da500a7 100644 --- a/packages/ui-voip/package.json +++ b/packages/ui-voip/package.json @@ -58,16 +58,16 @@ "@testing-library/user-event": "~14.6.1", "@types/jest": "~30.0.0", "@types/jest-axe": "~3.5.9", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", "date-fns": "~4.1.0", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "jest": "~30.2.0", "jest-axe": "~10.0.0", "react": "~18.3.1", "react-dom": "~18.3.1", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "typescript": "~5.9.3" }, diff --git a/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap b/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap index 8b255193f5e36..78b75301534d0 100644 --- a/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap +++ b/packages/ui-voip/src/views/CallHistoryContextualbar/__snapshots__/CallHistoryContextualbar.spec.tsx.snap @@ -321,19 +321,15 @@ exports[`renders Default without crashing 1`] = `
@@ -642,19 +634,15 @@ exports[`renders ExternalContact without crashing 1`] = `
diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 220f88fe77419..a9cf65a74aeb5 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -44,15 +44,15 @@ "@tanstack/react-query": "~5.65.1", "@testing-library/dom": "~10.4.1", "@testing-library/react": "~16.3.2", - "@types/react": "~18.3.27", + "@types/react": "~18.3.28", "@types/react-dom": "~18.3.7", - "eslint": "~9.39.3", + "eslint": "~9.39.4", "i18next": "~23.4.9", "react": "~18.3.1", "react-dom": "~18.3.1", "react-hook-form": "~7.45.4", "react-i18next": "~13.2.2", - "react-virtuoso": "^4.12.0", + "react-virtuoso": "~4.12.8", "storybook": "^8.6.18", "storybook-dark-mode": "^4.0.2", "typescript": "~5.9.3" diff --git a/yarn.lock b/yarn.lock index 8a1c3289d3eaf..3d463721bc850 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2927,15 +2927,15 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^7.0.7": - version: 7.0.7 - resolution: "@changesets/apply-release-plan@npm:7.0.7" +"@changesets/apply-release-plan@npm:^7.1.0": + version: 7.1.0 + resolution: "@changesets/apply-release-plan@npm:7.1.0" dependencies: - "@changesets/config": "npm:^3.0.5" + "@changesets/config": "npm:^3.1.3" "@changesets/get-version-range-type": "npm:^0.4.0" - "@changesets/git": "npm:^3.0.2" - "@changesets/should-skip-package": "npm:^0.1.1" - "@changesets/types": "npm:^6.0.0" + "@changesets/git": "npm:^3.0.4" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" detect-indent: "npm:^6.0.0" fs-extra: "npm:^7.0.1" @@ -2944,59 +2944,57 @@ __metadata: prettier: "npm:^2.7.1" resolve-from: "npm:^5.0.0" semver: "npm:^7.5.3" - checksum: 10/665490b0739075c50f037ae2bd4e8f7ea2c8815c120cafe91f56f15057f1e0a6f9088dc99e5e249e9c70502f072c8b93fca9f4f7173b9843c2e13a62b5931129 + checksum: 10/2ad86efb4b4218540e1ff17414436edcf7b801727dc4ec6cd1de42b5bf206e1fc0a29b14872e9635a9e991d6342ec9fb9a8b63c9b50679afd716f8bb3c1c847e languageName: node linkType: hard -"@changesets/assemble-release-plan@npm:^6.0.5": - version: 6.0.5 - resolution: "@changesets/assemble-release-plan@npm:6.0.5" +"@changesets/assemble-release-plan@npm:^6.0.9": + version: 6.0.9 + resolution: "@changesets/assemble-release-plan@npm:6.0.9" dependencies: "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.2" - "@changesets/should-skip-package": "npm:^0.1.1" - "@changesets/types": "npm:^6.0.0" + "@changesets/get-dependents-graph": "npm:^2.1.3" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" semver: "npm:^7.5.3" - checksum: 10/0de3edde14ec1b61d767be5186d4e24e2330291b1e5e8b8c6fd4bda0b8d5d967cefd2c7e7ea790e4bce12920ffb32c6ab9eb74e82bf5f762c20428b321050175 + checksum: 10/f84656eabb700ed77f97751b282e1701636ed45a44b443abd9af0291870495cc046fee301478010f39a1dc455799065ae007b9d7d2bb5ae8b793b65bbb8e052a languageName: node linkType: hard -"@changesets/changelog-git@npm:^0.2.0": - version: 0.2.0 - resolution: "@changesets/changelog-git@npm:0.2.0" +"@changesets/changelog-git@npm:^0.2.1": + version: 0.2.1 + resolution: "@changesets/changelog-git@npm:0.2.1" dependencies: - "@changesets/types": "npm:^6.0.0" - checksum: 10/631fcb73cab584fefad30f0e7cc8f7624b36be0f199e526c0d53538da16df2776bef8f8eb6511247b8040d011a2582bdb4840275d3f90a046bacbbd717da6c83 + "@changesets/types": "npm:^6.1.0" + checksum: 10/c22f3c0baf50c102a6890046351ee42f65ff6d58747ba4f75e5e40da1ed5fbcfd0dc2d11cdfb86acbb3262e58acb93f096c798827cac570c1e22e8f32f58a30f languageName: node linkType: hard -"@changesets/cli@npm:^2.27.11": - version: 2.27.11 - resolution: "@changesets/cli@npm:2.27.11" +"@changesets/cli@npm:^2.27.12": + version: 2.30.0 + resolution: "@changesets/cli@npm:2.30.0" dependencies: - "@changesets/apply-release-plan": "npm:^7.0.7" - "@changesets/assemble-release-plan": "npm:^6.0.5" - "@changesets/changelog-git": "npm:^0.2.0" - "@changesets/config": "npm:^3.0.5" + "@changesets/apply-release-plan": "npm:^7.1.0" + "@changesets/assemble-release-plan": "npm:^6.0.9" + "@changesets/changelog-git": "npm:^0.2.1" + "@changesets/config": "npm:^3.1.3" "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.2" - "@changesets/get-release-plan": "npm:^4.0.6" - "@changesets/git": "npm:^3.0.2" + "@changesets/get-dependents-graph": "npm:^2.1.3" + "@changesets/get-release-plan": "npm:^4.0.15" + "@changesets/git": "npm:^3.0.4" "@changesets/logger": "npm:^0.1.1" - "@changesets/pre": "npm:^2.0.1" - "@changesets/read": "npm:^0.6.2" - "@changesets/should-skip-package": "npm:^0.1.1" - "@changesets/types": "npm:^6.0.0" - "@changesets/write": "npm:^0.3.2" + "@changesets/pre": "npm:^2.0.2" + "@changesets/read": "npm:^0.6.7" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" + "@changesets/write": "npm:^0.4.0" + "@inquirer/external-editor": "npm:^1.0.2" "@manypkg/get-packages": "npm:^1.1.3" ansi-colors: "npm:^4.1.3" - ci-info: "npm:^3.7.0" enquirer: "npm:^2.4.1" - external-editor: "npm:^3.1.0" fs-extra: "npm:^7.0.1" mri: "npm:^1.2.0" - p-limit: "npm:^2.2.0" package-manager-detector: "npm:^0.2.0" picocolors: "npm:^1.1.0" resolve-from: "npm:^5.0.0" @@ -3005,22 +3003,23 @@ __metadata: term-size: "npm:^2.1.0" bin: changeset: bin.js - checksum: 10/9072efec5e23ce71095462c8b8cda5d44adbe04dca68d36d5fd3d8eedaf9de39bd386840f3a57dfef87d3e3ca065cabe2d0aaaf8cf47a9ed743340c723e451ac + checksum: 10/0ffd121b0349cfa3390de581905d3d7db9a650fcefe80e4cfbf9f4b55ddad53afc09ea2f2e78abd848db53479e2b54568d99e6d09d5d06f556adb45bb66aec53 languageName: node linkType: hard -"@changesets/config@npm:^3.0.5": - version: 3.0.5 - resolution: "@changesets/config@npm:3.0.5" +"@changesets/config@npm:^3.1.3": + version: 3.1.3 + resolution: "@changesets/config@npm:3.1.3" dependencies: "@changesets/errors": "npm:^0.2.0" - "@changesets/get-dependents-graph": "npm:^2.1.2" + "@changesets/get-dependents-graph": "npm:^2.1.3" "@changesets/logger": "npm:^0.1.1" - "@changesets/types": "npm:^6.0.0" + "@changesets/should-skip-package": "npm:^0.1.2" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" fs-extra: "npm:^7.0.1" micromatch: "npm:^4.0.8" - checksum: 10/ebb6e5660c26cfd9c499505fdf5c0289b238fa8f6a7ed68d9eae56283d9f661d302d759155bdaff273a8de870fb2cd2dbb9cef62a64c4b4a869745f0e12eae9d + checksum: 10/278699f2b1673e07b9744fcd83948149647f55f295dc9d4bd22e9a1e80309863a58513bb1429376959b66358156b77a50a8d60eb70bf0ba9a3fab5402ccd5980 languageName: node linkType: hard @@ -3033,29 +3032,29 @@ __metadata: languageName: node linkType: hard -"@changesets/get-dependents-graph@npm:^2.1.2": - version: 2.1.2 - resolution: "@changesets/get-dependents-graph@npm:2.1.2" +"@changesets/get-dependents-graph@npm:^2.1.3": + version: 2.1.3 + resolution: "@changesets/get-dependents-graph@npm:2.1.3" dependencies: - "@changesets/types": "npm:^6.0.0" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" picocolors: "npm:^1.1.0" semver: "npm:^7.5.3" - checksum: 10/36d9877b0b071183b253d894e0dbef56f764fe2ff592064489d4f122c419ab97f0d023c9e078849d0f48b4129f5018c7c81cb380b02d975db5e0768ab29226c1 + checksum: 10/33f2bb5dc88443b68fd796fd3b019a553fb3e21cb957a8a117db2a6770ad81f7c156ebdc3b12cfa75169de918f11271a71f61034aec48a53bf1a936d6d783e3d languageName: node linkType: hard -"@changesets/get-release-plan@npm:^4.0.6": - version: 4.0.6 - resolution: "@changesets/get-release-plan@npm:4.0.6" +"@changesets/get-release-plan@npm:^4.0.15": + version: 4.0.15 + resolution: "@changesets/get-release-plan@npm:4.0.15" dependencies: - "@changesets/assemble-release-plan": "npm:^6.0.5" - "@changesets/config": "npm:^3.0.5" - "@changesets/pre": "npm:^2.0.1" - "@changesets/read": "npm:^0.6.2" - "@changesets/types": "npm:^6.0.0" + "@changesets/assemble-release-plan": "npm:^6.0.9" + "@changesets/config": "npm:^3.1.3" + "@changesets/pre": "npm:^2.0.2" + "@changesets/read": "npm:^0.6.7" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10/85ac96876d34e4f7830f07753c64309e2e2d07d7d5843f502c25f6bc3bd3f9b4e1d355d82a979b68fabe37b6efe664de85cdce241bfa374ef3439bbbb9f840a0 + checksum: 10/eba3de04c03131604ab717af66c5d645e1fe4823034864e28eccf99fb64fbeb4cf2c4c11b8f0e7ef78a916f96eeaebdf4569df583cbfe0f3928bb0195baf27c7 languageName: node linkType: hard @@ -3066,16 +3065,16 @@ __metadata: languageName: node linkType: hard -"@changesets/git@npm:^3.0.2": - version: 3.0.2 - resolution: "@changesets/git@npm:3.0.2" +"@changesets/git@npm:^3.0.4": + version: 3.0.4 + resolution: "@changesets/git@npm:3.0.4" dependencies: "@changesets/errors": "npm:^0.2.0" "@manypkg/get-packages": "npm:^1.1.3" is-subdir: "npm:^1.1.1" micromatch: "npm:^4.0.8" spawndamnit: "npm:^3.0.1" - checksum: 10/de63573fecbd2ddcb8b5a7bfe18344a849810035e6fc55aa05e022d42e8cbefdfe23eebcfd34d31e84d78a616aa80ffb239b9e24abc4fc3ebaba10e619f72a24 + checksum: 10/4f5a1f3354ec39d530df78b198eaaf2a8ef6cca873dd18efb8706aae09cab04e0d985abd236288644fac5d10cc5cb6ba2538c3e0be023c4d80790ff841f39fa6 languageName: node linkType: hard @@ -3088,50 +3087,50 @@ __metadata: languageName: node linkType: hard -"@changesets/parse@npm:^0.4.0": - version: 0.4.0 - resolution: "@changesets/parse@npm:0.4.0" +"@changesets/parse@npm:^0.4.3": + version: 0.4.3 + resolution: "@changesets/parse@npm:0.4.3" dependencies: - "@changesets/types": "npm:^6.0.0" - js-yaml: "npm:^3.13.1" - checksum: 10/0a824582306b198cd775048876e62bd39193b921515608504777407d78f1dcc700ec15e1a6bccd8a3514c5acc6c3fb060238fbfeae94e698aa17dad1121c2d43 + "@changesets/types": "npm:^6.1.0" + js-yaml: "npm:^4.1.1" + checksum: 10/f5742266a4ecb90a8283868f2bec740ce7be94745dee7df0b2f47882775d700bdfa3b660c2ec8d06b64153cf9b02cb3d46064f391c62933c9c60a9570763f928 languageName: node linkType: hard -"@changesets/pre@npm:^2.0.1": - version: 2.0.1 - resolution: "@changesets/pre@npm:2.0.1" +"@changesets/pre@npm:^2.0.2": + version: 2.0.2 + resolution: "@changesets/pre@npm:2.0.2" dependencies: "@changesets/errors": "npm:^0.2.0" - "@changesets/types": "npm:^6.0.0" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" fs-extra: "npm:^7.0.1" - checksum: 10/e26ca45a1accc4c79890220acf4c85ff716bc09a8e534c91f08bf7d5272408bd76f54ddf6a01765a1aab2517b7447285ae0a9787a6f2135011ad37bcf3f70e48 + checksum: 10/daaedd2747492ced61f107d38f90e535607bcb073b10ffac3d9e3bcad1a4cc082370884224fc6785af2d92d37f6b0a3bf853f9759b8fda294878d00d24344415 languageName: node linkType: hard -"@changesets/read@npm:^0.6.2": - version: 0.6.2 - resolution: "@changesets/read@npm:0.6.2" +"@changesets/read@npm:^0.6.7": + version: 0.6.7 + resolution: "@changesets/read@npm:0.6.7" dependencies: - "@changesets/git": "npm:^3.0.2" + "@changesets/git": "npm:^3.0.4" "@changesets/logger": "npm:^0.1.1" - "@changesets/parse": "npm:^0.4.0" - "@changesets/types": "npm:^6.0.0" + "@changesets/parse": "npm:^0.4.3" + "@changesets/types": "npm:^6.1.0" fs-extra: "npm:^7.0.1" p-filter: "npm:^2.1.0" picocolors: "npm:^1.1.0" - checksum: 10/a9e322c9afb4039c769f71370da1879bb4d457417611d64b1782242b9d2fe9d330816c44f93aebee158fb3e3aee402da50b4e98ac7a779a19d8081478975ec02 + checksum: 10/6bf3fd4b0c743d2ef53cb39c4e52731622949a695f031412ff6ea9f30860620a1d9deb1cfd1af0c92d2e2d275b6d949c0cc1e83c192f2094e0071d690c48a42e languageName: node linkType: hard -"@changesets/should-skip-package@npm:^0.1.1": - version: 0.1.1 - resolution: "@changesets/should-skip-package@npm:0.1.1" +"@changesets/should-skip-package@npm:^0.1.2": + version: 0.1.2 + resolution: "@changesets/should-skip-package@npm:0.1.2" dependencies: - "@changesets/types": "npm:^6.0.0" + "@changesets/types": "npm:^6.1.0" "@manypkg/get-packages": "npm:^1.1.3" - checksum: 10/d187ef22495deb63e678d0ff65e8627701e2b52c25bd59dde10ce8646be8d605c0ed0a6af020dd825b137c2fc748fdc6cef52e7774bad4c7a4f404bf182a85cf + checksum: 10/d09fcf1200ee201f0dd5b8049d90e8b5e0cfd34cc94f5c661c4cdab182a8263628733f9bc5886550a92f6f7857339d79fc77f12ffd53559b029a2bf9a2fa7ace languageName: node linkType: hard @@ -3149,15 +3148,22 @@ __metadata: languageName: node linkType: hard -"@changesets/write@npm:^0.3.2": - version: 0.3.2 - resolution: "@changesets/write@npm:0.3.2" +"@changesets/types@npm:^6.1.0": + version: 6.1.0 + resolution: "@changesets/types@npm:6.1.0" + checksum: 10/2dcd00712cb85d0c53afdd8d0e856b4bf9c0ce8dc36c838c918d44799aacd9ba8659b9ff610ff92b94fc03c8fd2b52c5b05418fcf8a1bd138cd9182414ede373 + languageName: node + linkType: hard + +"@changesets/write@npm:^0.4.0": + version: 0.4.0 + resolution: "@changesets/write@npm:0.4.0" dependencies: - "@changesets/types": "npm:^6.0.0" + "@changesets/types": "npm:^6.1.0" fs-extra: "npm:^7.0.1" - human-id: "npm:^1.0.2" + human-id: "npm:^4.1.1" prettier: "npm:^2.7.1" - checksum: 10/c16b0a731fa43ae0028fd1f956c7b080030c42ff763f8dac74da8b178a4ea65632831c30550b784286277bdc75a3c44dda46aad8db97f43bb1eb4d61922152aa + checksum: 10/bcea8431a09e282bdf66adbd8411d5d3cc19b4a2df519a42586c912b23a7b3ef18d1d0765e2d1a27ff175e2dfc9ef4c2df95cfa920dd4dd2972aaaf662afc6b9 languageName: node linkType: hard @@ -3190,9 +3196,9 @@ __metadata: languageName: node linkType: hard -"@codemirror/lang-javascript@npm:^6.2.4": - version: 6.2.4 - resolution: "@codemirror/lang-javascript@npm:6.2.4" +"@codemirror/lang-javascript@npm:^6.2.5": + version: 6.2.5 + resolution: "@codemirror/lang-javascript@npm:6.2.5" dependencies: "@codemirror/autocomplete": "npm:^6.0.0" "@codemirror/language": "npm:^6.6.0" @@ -3201,7 +3207,7 @@ __metadata: "@codemirror/view": "npm:^6.17.0" "@lezer/common": "npm:^1.0.0" "@lezer/javascript": "npm:^1.0.0" - checksum: 10/7d0b7fdacc90f89d1a5f2b9c575c61b6ee7813005cde32c1f35aedb0da71ad298998e116126ba19ca0bb02cdb14064945c31e24c57ef60bcbd5c19dae955ccb6 + checksum: 10/382cb5112dc9f9676e2a5905350f73e98d00f135405b21cab524cf3e3f2176454a99452ffe53b13c3a96f6670a63f07681d4f1c3154798a04d0e6c093b8d61c4 languageName: node linkType: hard @@ -3399,6 +3405,16 @@ __metadata: languageName: node linkType: hard +"@emnapi/core@npm:1.9.2": + version: 1.9.2 + resolution: "@emnapi/core@npm:1.9.2" + dependencies: + "@emnapi/wasi-threads": "npm:1.2.1" + tslib: "npm:^2.4.0" + checksum: 10/32084861f306b405f10f3ae13d1a49fa75650bdaaa40704892c397856815fe5d3781670d2662806d39c2d8a19bb62826dd7b870a79858f7be77500d9d0d3d91a + languageName: node + linkType: hard + "@emnapi/core@npm:^1.4.3": version: 1.4.3 resolution: "@emnapi/core@npm:1.4.3" @@ -3409,13 +3425,12 @@ __metadata: languageName: node linkType: hard -"@emnapi/core@npm:^1.7.1": - version: 1.9.0 - resolution: "@emnapi/core@npm:1.9.0" +"@emnapi/runtime@npm:1.9.2": + version: 1.9.2 + resolution: "@emnapi/runtime@npm:1.9.2" dependencies: - "@emnapi/wasi-threads": "npm:1.2.0" tslib: "npm:^2.4.0" - checksum: 10/52d8dc5ba0d6814c5061686b8286d84cc5349c8fc09de3a9c4175bc2369c2890b335f7b03e55bc19ce3033158962cd817522fcb3bdeb1feb9ba7a060d61b69ab + checksum: 10/de123d6b7acdbe34bf997523be761e5ae6d8f9b3967b72e8e50ff7dd1791a2a0d2b9fb0d7d92230b0738502980ea6f947189b7c1f47814ff666515a55c6fff48 languageName: node linkType: hard @@ -3428,15 +3443,6 @@ __metadata: languageName: node linkType: hard -"@emnapi/runtime@npm:^1.7.1": - version: 1.9.0 - resolution: "@emnapi/runtime@npm:1.9.0" - dependencies: - tslib: "npm:^2.4.0" - checksum: 10/d04a7e67676c2560d5394a01d63532af943760cf19cc8f375390a345aeab2b19e9ee35485b06b5c211df18f947fb14ac50658fca5c4067946f1e50af3490b3b5 - languageName: node - linkType: hard - "@emnapi/wasi-threads@npm:1.0.2": version: 1.0.2 resolution: "@emnapi/wasi-threads@npm:1.0.2" @@ -3446,12 +3452,12 @@ __metadata: languageName: node linkType: hard -"@emnapi/wasi-threads@npm:1.2.0": - version: 1.2.0 - resolution: "@emnapi/wasi-threads@npm:1.2.0" +"@emnapi/wasi-threads@npm:1.2.1": + version: 1.2.1 + resolution: "@emnapi/wasi-threads@npm:1.2.1" dependencies: tslib: "npm:^2.4.0" - checksum: 10/c8e48c7200530744dc58170d2e25933b61433e4a0c50b4f192f5d8d4b065c7023dbfc48dac0afadbc29bd239013f2ae454c6e54e0ca6e8248402bf95c9e77e22 + checksum: 10/57cd4292be81c05d26aa886d68a9e4c449ff666e8503fed6463dfc6b64a4e4213f03c152d53296b7cda32840271e38cd33347332070658f01befeb9bf4e59f36 languageName: node linkType: hard @@ -3837,14 +3843,14 @@ __metadata: languageName: node linkType: hard -"@eslint/config-array@npm:^0.21.1": - version: 0.21.1 - resolution: "@eslint/config-array@npm:0.21.1" +"@eslint/config-array@npm:^0.21.2": + version: 0.21.2 + resolution: "@eslint/config-array@npm:0.21.2" dependencies: "@eslint/object-schema": "npm:^2.1.7" debug: "npm:^4.3.1" - minimatch: "npm:^3.1.2" - checksum: 10/6eaa0435972f735ce52d581f355a0b616e50a9b8a73304a7015398096e252798b9b3b968a67b524eefb0fdeacc57c4d960f0ec6432abe1c1e24be815b88c5d18 + minimatch: "npm:^3.1.5" + checksum: 10/148477ba995cf57fc725601916d5a7914aa249112d8bec2c3ac9122e2b2f540e6ef013ff4f6785346a4b565f09b20db127fa6f7322f5ffbdb3f1f8d2078a531c languageName: node linkType: hard @@ -3866,9 +3872,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.3.1": - version: 3.3.4 - resolution: "@eslint/eslintrc@npm:3.3.4" +"@eslint/eslintrc@npm:^3.3.5": + version: 3.3.5 + resolution: "@eslint/eslintrc@npm:3.3.5" dependencies: ajv: "npm:^6.14.0" debug: "npm:^4.3.2" @@ -3877,16 +3883,16 @@ __metadata: ignore: "npm:^5.2.0" import-fresh: "npm:^3.2.1" js-yaml: "npm:^4.1.1" - minimatch: "npm:^3.1.3" + minimatch: "npm:^3.1.5" strip-json-comments: "npm:^3.1.1" - checksum: 10/537e6bddb55d37a6b128910d54eaa2c1851992781f82dbf36294583de50386ca92bd669eadc99db9181ab4d735f7e6fa286cba10dab1327b1ea88599a2c5e6a7 + checksum: 10/edabb65693d82a88cac3b2cf932a0f825e986b5e0a21ef08782d07e3a61ad87d39db67cfd5aeb146fd5053e5e24e389dbe5649ab22936a71d633c7b32a7e6d86 languageName: node linkType: hard -"@eslint/js@npm:9.39.3, @eslint/js@npm:~9.39.3": - version: 9.39.3 - resolution: "@eslint/js@npm:9.39.3" - checksum: 10/91a1a1822cfeb2eb8a89aae86be5dfabad0b66b0915946516690a8485ddd80b91f43eee346789313fea1acbb7390a4958119ca7dc9a684a5c4014f12fcb3aaf3 +"@eslint/js@npm:9.39.4, @eslint/js@npm:~9.39.4": + version: 9.39.4 + resolution: "@eslint/js@npm:9.39.4" + checksum: 10/0a7ab4c4108cf2cadf66849ebd20f5957cc53052b88d8807d0b54e489dbf6ffcaf741e144e7f9b187c395499ce2e6ddc565dbfa4f60c6df455cf2b30bcbdc5a3 languageName: node linkType: hard @@ -3970,16 +3976,16 @@ __metadata: languageName: node linkType: hard -"@gerrit0/mini-shiki@npm:^3.17.0": - version: 3.21.0 - resolution: "@gerrit0/mini-shiki@npm:3.21.0" +"@gerrit0/mini-shiki@npm:^3.23.0": + version: 3.23.0 + resolution: "@gerrit0/mini-shiki@npm:3.23.0" dependencies: - "@shikijs/engine-oniguruma": "npm:^3.21.0" - "@shikijs/langs": "npm:^3.21.0" - "@shikijs/themes": "npm:^3.21.0" - "@shikijs/types": "npm:^3.21.0" + "@shikijs/engine-oniguruma": "npm:^3.23.0" + "@shikijs/langs": "npm:^3.23.0" + "@shikijs/themes": "npm:^3.23.0" + "@shikijs/types": "npm:^3.23.0" "@shikijs/vscode-textmate": "npm:^10.0.2" - checksum: 10/e3f997e18ff3e0654a951f3be2c8fa1deba02afa77865861fbedd62775ef06d38333c76b67ecab4cc38b07d4fe39720f8fe2170ac685323991b4ed7500079b11 + checksum: 10/d44dac7c3f58ba136285b3c15c8a89eba120f7a493dddcf6178601ab8c0a5286da6a19515100297934288c41ae225f21013a4c395fe2f656b58f812dd13ccc1e languageName: node linkType: hard @@ -4294,6 +4300,30 @@ __metadata: languageName: node linkType: hard +"@inquirer/external-editor@npm:^1.0.2": + version: 1.0.3 + resolution: "@inquirer/external-editor@npm:1.0.3" + dependencies: + chardet: "npm:^2.1.1" + iconv-lite: "npm:^0.7.0" + peerDependencies: + "@types/node": ">=18" + peerDependenciesMeta: + "@types/node": + optional: true + checksum: 10/c95d7237a885b32031715089f92820525731d4d3c2bd7afdb826307dc296cc2b39e7a644b0bb265441963348cca42e7785feb29c3aaf18fd2b63131769bf6587 + languageName: node + linkType: hard + +"@internationalized/date@npm:^3.12.1": + version: 3.12.1 + resolution: "@internationalized/date@npm:3.12.1" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/a8178a73e65cb86357008e39e589bf5899b47a4ebd6123d96b54e3b19aade31c136d8e5f9c48c4627110f26d857e15aa4be9e189e56386a4b26c616df4ea1795 + languageName: node + linkType: hard + "@internationalized/date@npm:^3.7.0": version: 3.7.0 resolution: "@internationalized/date@npm:3.7.0" @@ -4322,6 +4352,15 @@ __metadata: languageName: node linkType: hard +"@internationalized/number@npm:^3.6.6": + version: 3.6.6 + resolution: "@internationalized/number@npm:3.6.6" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/7a7c8290a91bae3c1b22ab006c036b50f041162a383446360d0dd8194aa491a370057df1b2aa2cdfbccefd335cf6f4679e14608f5c24031b6852375654fa59df + languageName: node + linkType: hard + "@internationalized/string@npm:^3.2.5": version: 3.2.5 resolution: "@internationalized/string@npm:3.2.5" @@ -4331,6 +4370,15 @@ __metadata: languageName: node linkType: hard +"@internationalized/string@npm:^3.2.8": + version: 3.2.8 + resolution: "@internationalized/string@npm:3.2.8" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10/2054baf8b2d5f32c7904b5a584e724d00ae781b3efb22c113c18d6a604f700569faf006be28929032831972272693d7dd863d324550a7385068715e3a67b8a56 + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -5249,10 +5297,10 @@ __metadata: languageName: node linkType: hard -"@msgpack/msgpack@npm:3.0.0-beta2": - version: 3.0.0-beta2 - resolution: "@msgpack/msgpack@npm:3.0.0-beta2" - checksum: 10/d02f9221aa152cbd2977d1f56dc591baa2a37420a694cbc7e54ff0724f56ac0523e94de010e56bb845d67a1f2226c1761064b5777e63e9fc26884f4144d391a7 +"@msgpack/msgpack@npm:3.0.1": + version: 3.0.1 + resolution: "@msgpack/msgpack@npm:3.0.1" + checksum: 10/952c847b2d23f74f8df09732466794229044fc6483796dd4080c9f0eae36bb6b418dc714e86566b16a2ed8838ec1bd97f7a50ec900cd4894225c46e47dd3f7d8 languageName: node linkType: hard @@ -5414,14 +5462,15 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.1": - version: 1.1.1 - resolution: "@napi-rs/wasm-runtime@npm:1.1.1" +"@napi-rs/wasm-runtime@npm:^1.1.3": + version: 1.1.4 + resolution: "@napi-rs/wasm-runtime@npm:1.1.4" dependencies: - "@emnapi/core": "npm:^1.7.1" - "@emnapi/runtime": "npm:^1.7.1" "@tybys/wasm-util": "npm:^0.10.1" - checksum: 10/080e7f2aefb84e09884d21c650a2cbafdf25bfd2634693791b27e36eec0ddaa3c1656a943f8c913ac75879a0b04e68f8a827897ee655ab54a93169accf05b194 + peerDependencies: + "@emnapi/core": ^1.7.1 + "@emnapi/runtime": ^1.7.1 + checksum: 10/1db3dc7eeb981306b09360487bd8ce4dfa5588d273bd8ea9f07dccca1b4ade57b675414180fc9bb66966c6c50b17208b0263194993e2f7f92cc7af28bda4d1af languageName: node linkType: hard @@ -5798,6 +5847,21 @@ __metadata: languageName: node linkType: hard +"@octokit/core@npm:^5.0.2": + version: 5.2.2 + resolution: "@octokit/core@npm:5.2.2" + dependencies: + "@octokit/auth-token": "npm:^4.0.0" + "@octokit/graphql": "npm:^7.1.0" + "@octokit/request": "npm:^8.4.1" + "@octokit/request-error": "npm:^5.1.1" + "@octokit/types": "npm:^13.0.0" + before-after-hook: "npm:^2.2.0" + universal-user-agent: "npm:^6.0.0" + checksum: 10/0c39b43e562a8acf8f1d563a85f3c0e55e6d678ae16a4b3d6341060b3d5315c021dfa1bd15dc818fa4cc5612eb5cd518b13cb7c194e3c92ca3da9c0dc6a854b5 + languageName: node + linkType: hard + "@octokit/endpoint@npm:^9.0.6": version: 9.0.6 resolution: "@octokit/endpoint@npm:9.0.6" @@ -5933,13 +5997,20 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/api@npm:^1.3.0, @opentelemetry/api@npm:^1.9.0": +"@opentelemetry/api@npm:^1.3.0": version: 1.9.0 resolution: "@opentelemetry/api@npm:1.9.0" checksum: 10/a607f0eef971893c4f2ee2a4c2069aade6ec3e84e2a1f5c2aac19f65c5d9eeea41aa72db917c1029faafdd71789a1a040bdc18f40d63690e22ccae5d7070f194 languageName: node linkType: hard +"@opentelemetry/api@npm:^1.9.1": + version: 1.9.1 + resolution: "@opentelemetry/api@npm:1.9.1" + checksum: 10/b26032739d3c54ca99b5a2920844a1fbd4c3ee383cacbb0915e8c706a2626fe91e96feaa6e893397abe0545dc8d0a765b220aa18a31b1773176eeaf3a225e10e + languageName: node + linkType: hard + "@opentelemetry/context-async-hooks@npm:1.27.0": version: 1.27.0 resolution: "@opentelemetry/context-async-hooks@npm:1.27.0" @@ -6247,17 +6318,10 @@ __metadata: languageName: node linkType: hard -"@oxc-project/runtime@npm:0.115.0": - version: 0.115.0 - resolution: "@oxc-project/runtime@npm:0.115.0" - checksum: 10/602bfb56b4c60a4a4734c7eff5648d9f86734e1f6aeccc4d4da415f51f229d5a9cddeea65b1433d809fb7106dff56df2ec9b954f5ab82d755fac4a5d05e5ad43 - languageName: node - linkType: hard - -"@oxc-project/types@npm:=0.115.0": - version: 0.115.0 - resolution: "@oxc-project/types@npm:0.115.0" - checksum: 10/14456080abfe29f720aa925b333b9db019d437c5a11eb128650b37092fd324e8884fce5fdf11242dc1a5b934e13d4ac8396885c76f8db9fe46e2a965a2286f5f +"@oxc-project/types@npm:=0.124.0": + version: 0.124.0 + resolution: "@oxc-project/types@npm:0.124.0" + checksum: 10/d40ca0769b19b327b89fca30c9c224aace1b696e8b4f5adc2c67ee711e17401d532fdcfe49b8903916e8749ea67b572d3c470045279e27d26ac39af7bf1fc611 languageName: node linkType: hard @@ -6901,7 +6965,20 @@ __metadata: languageName: node linkType: hard -"@react-aria/focus@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-aria/focus@npm:^3.19.1": +"@react-aria/focus@npm:^3.0.0-nightly-fb28ab3b4-241024": + version: 3.22.0 + resolution: "@react-aria/focus@npm:3.22.0" + dependencies: + "@swc/helpers": "npm:^0.5.0" + react-aria: "npm:3.48.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10/6467625ad37e4dd6f16669145f19ef75a44134364bd116959369407f1b3ff309f86fc25610b4e7c3736a1a4befd178112429749fad505b944e11cec25e3847c1 + languageName: node + linkType: hard + +"@react-aria/focus@npm:^3.19.1": version: 3.19.1 resolution: "@react-aria/focus@npm:3.19.1" dependencies: @@ -7418,9 +7495,9 @@ __metadata: languageName: node linkType: hard -"@react-aria/test-utils@npm:1.0.0-alpha.8": - version: 1.0.0-alpha.8 - resolution: "@react-aria/test-utils@npm:1.0.0-alpha.8" +"@react-aria/test-utils@npm:1.0.0-beta.3": + version: 1.0.0-beta.3 + resolution: "@react-aria/test-utils@npm:1.0.0-beta.3" dependencies: "@swc/helpers": "npm:^0.5.0" peerDependencies: @@ -7428,7 +7505,7 @@ __metadata: "@testing-library/user-event": ^14.0.0 react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/2215a0a24ba1aa482e640251f3b525282c35fff80f1f75b80c0310ee80781d95285d247fc0df723cd3a019a2eaf4099e03e821493137545032a18bf26f6f8a99 + checksum: 10/1f815713c28c70db4def4d329722dd4ea533dd03d0a4e86192ccc319b2c1af7c94d897992855e9ee3f6ead301a8855aa652c819a9f2e519bb816b542f40f2065 languageName: node linkType: hard @@ -7486,7 +7563,7 @@ __metadata: languageName: node linkType: hard -"@react-aria/toolbar@npm:^3.0.0-nightly.5042": +"@react-aria/toolbar@npm:3.0.0-nightly-fb28ab3b4-241024": version: 3.0.0-nightly-fb28ab3b4-241024 resolution: "@react-aria/toolbar@npm:3.0.0-nightly-fb28ab3b4-241024" dependencies: @@ -7519,7 +7596,21 @@ __metadata: languageName: node linkType: hard -"@react-aria/utils@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-aria/utils@npm:^3.27.0": +"@react-aria/utils@npm:^3.0.0-nightly-fb28ab3b4-241024": + version: 3.34.0 + resolution: "@react-aria/utils@npm:3.34.0" + dependencies: + "@swc/helpers": "npm:^0.5.0" + react-aria: "npm:3.48.0" + react-stately: "npm:3.46.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10/55a120c1b33510bd18154128f8e6c7ca17de38d3950e474c92d2cd154f01c2db9c3248103d6183330f8793db47a138e02fb40ce1763736aea469f3a15d673de9 + languageName: node + linkType: hard + +"@react-aria/utils@npm:^3.27.0": version: 3.27.0 resolution: "@react-aria/utils@npm:3.27.0" dependencies: @@ -7889,10 +7980,10 @@ __metadata: linkType: hard "@react-spectrum/test-utils@npm:~1.0.0-alpha.8": - version: 1.0.0-alpha.8 - resolution: "@react-spectrum/test-utils@npm:1.0.0-alpha.8" + version: 1.0.0-beta.4 + resolution: "@react-spectrum/test-utils@npm:1.0.0-beta.4" dependencies: - "@react-aria/test-utils": "npm:1.0.0-alpha.8" + "@react-aria/test-utils": "npm:1.0.0-beta.3" "@swc/helpers": "npm:^0.5.0" peerDependencies: "@testing-library/react": ^16.0.0 @@ -7900,7 +7991,7 @@ __metadata: jest: ^29.5.0 react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/305c015d6bbb63d88aa0cae4969352fa3a4c94c0be621ba239a7b468f831ea21f00879675ed2e1e069da1126fa6332cf0548f868b18526899d6edf708fd8c37d + checksum: 10/fe76cc065c14b03de5d1a333cbad2cb02e3d8235d90d72b28aa960916995dd8d21bc69f0db03dace95ded6161ae006daa19d96468574f9f0d691d00c5057c75f languageName: node linkType: hard @@ -8567,7 +8658,16 @@ __metadata: languageName: node linkType: hard -"@react-types/shared@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-types/shared@npm:^3.14.1, @react-types/shared@npm:^3.27.0": +"@react-types/shared@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-types/shared@npm:^3.34.0": + version: 3.34.0 + resolution: "@react-types/shared@npm:3.34.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10/d28b0a3a3f68f94167fd7b4f474803430093b1a31f5f50cef6ddd755b923ba3af35dde40ffcc1f320926892744823a039b4a396c671f7c59aa49634811f0c43a + languageName: node + linkType: hard + +"@react-types/shared@npm:^3.14.1, @react-types/shared@npm:^3.27.0": version: 3.27.0 resolution: "@react-types/shared@npm:3.27.0" peerDependencies: @@ -8760,7 +8860,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" "@types/node": "npm:~22.16.5" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mem: "npm:^8.1.1" mongodb: "npm:6.10.0" @@ -8792,7 +8892,7 @@ __metadata: "@types/prometheus-gc-stats": "npm:^0.6.4" bcrypt: "npm:^5.1.1" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" mem: "npm:^8.1.1" moleculer: "npm:^0.14.35" @@ -8811,7 +8911,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/account-utils@workspace:packages/account-utils" dependencies: - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -8820,11 +8920,11 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/agenda@workspace:packages/agenda" dependencies: - "@types/debug": "npm:^4.1.12" + "@types/debug": "npm:^4.1.13" cron: "npm:~1.8.2" date.js: "npm:~0.3.3" debug: "npm:~4.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" human-interval: "npm:^2.0.1" moment-timezone: "npm:~0.5.48" mongodb: "npm:6.16.0" @@ -8842,7 +8942,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" "@types/strict-uri-encode": "npm:^2.0.2" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" filter-obj: "npm:^3.0.0" jest: "npm:~30.2.0" jest-fetch-mock: "npm:~3.0.3" @@ -8857,20 +8957,20 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/apps-engine@workspace:packages/apps-engine" dependencies: - "@msgpack/msgpack": "npm:3.0.0-beta2" + "@msgpack/msgpack": "npm:3.0.1" "@rocket.chat/ui-kit": "workspace:~" "@seald-io/nedb": "npm:^4.1.2" - "@types/adm-zip": "npm:^0.5.7" - "@types/debug": "npm:^4.1.12" + "@types/adm-zip": "npm:^0.5.8" + "@types/debug": "npm:^4.1.13" "@types/lodash.clonedeep": "npm:^4.5.9" "@types/node": "npm:~22.16.5" "@types/semver": "npm:^7.5.8" "@types/stack-trace": "npm:0.0.33" "@types/uuid": "npm:~10.0.0" - adm-zip: "npm:^0.5.16" + adm-zip: "npm:^0.5.17" debug: "npm:^4.3.7" - esbuild: "npm:~0.27.3" - eslint: "npm:~9.39.3" + esbuild: "npm:~0.27.7" + eslint: "npm:~9.39.4" jose: "npm:^4.15.9" jsonrpc-lite: "npm:^2.2.0" lodash.clonedeep: "npm:^4.5.0" @@ -8881,7 +8981,7 @@ __metadata: stack-trace: "npm:0.0.10" tap-bark: "npm:^1.0.0" ts-node: "npm:^6.2.0" - typedoc: "npm:~0.28.16" + typedoc: "npm:~0.28.19" typescript: "npm:~5.9.3" uuid: "npm:~11.0.5" languageName: unknown @@ -8895,7 +8995,7 @@ __metadata: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/model-typings": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -8920,7 +9020,7 @@ __metadata: "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" mem: "npm:^8.1.1" moleculer: "npm:^0.14.35" @@ -8951,7 +9051,7 @@ __metadata: resolution: "@rocket.chat/cas-validate@workspace:packages/cas-validate" dependencies: cheerio: "npm:1.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -8975,7 +9075,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@rocket.chat/ui-kit": "workspace:~" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" prettier: "npm:~3.3.3" @@ -8992,7 +9092,7 @@ __metadata: "@rocket.chat/message-parser": "workspace:^" "@rocket.chat/ui-kit": "workspace:~" "@types/express": "npm:^4.17.25" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" npm-run-all: "npm:~4.1.5" prettier: "npm:~3.3.3" @@ -9014,7 +9114,7 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/random": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" languageName: unknown @@ -9054,7 +9154,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" "@types/ws": "npm:^8.18.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jest-websocket-mock: "npm:~2.5.0" typescript: "npm:~5.9.3" @@ -9092,7 +9192,7 @@ __metadata: "@types/ws": "npm:^8.18.1" colorette: "npm:^1.4.0" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" jaeger-client: "npm:^3.19.0" jest: "npm:~30.2.0" @@ -9109,7 +9209,7 @@ __metadata: ts-node: "npm:^10.9.2" typescript: "npm:~5.9.3" underscore: "npm:^1.13.8" - uuid: "npm:^11.0.3" + uuid: "npm:^11.0.5" ws: "npm:~8.19.0" languageName: unknown linkType: soft @@ -9118,7 +9218,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/desktop-api@workspace:packages/desktop-api" dependencies: - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" rimraf: "npm:~6.0.1" typescript: "npm:~5.9.3" languageName: unknown @@ -9137,21 +9237,21 @@ __metadata: dependencies: "@babel/core": "npm:~7.28.6" "@babel/eslint-parser": "npm:~7.28.6" - "@eslint/js": "npm:~9.39.3" + "@eslint/js": "npm:~9.39.4" "@types/eslint": "npm:~8.44.9" "@types/prettier": "npm:^2.7.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eslint-config-prettier: "npm:~10.1.8" eslint-import-resolver-typescript: "npm:~4.4.4" eslint-plugin-anti-trojan-source: "npm:~1.1.2" eslint-plugin-import: "npm:~2.32.0" - eslint-plugin-jest: "npm:~29.15.0" + eslint-plugin-jest: "npm:~29.15.2" eslint-plugin-jsx-a11y: "npm:~6.10.2" eslint-plugin-prettier: "npm:~5.5.5" eslint-plugin-react: "npm:~7.37.5" eslint-plugin-react-hooks: "npm:~7.0.1" - eslint-plugin-storybook: "npm:~10.2.12" - eslint-plugin-testing-library: "npm:~7.16.0" + eslint-plugin-storybook: "npm:~10.2.19" + eslint-plugin-testing-library: "npm:~7.16.2" globals: "npm:~17.3.0" prettier: "npm:~3.3.3" typescript: "npm:~5.9.3" @@ -9163,7 +9263,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/favicon@workspace:packages/favicon" dependencies: - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -9185,9 +9285,9 @@ __metadata: "@types/emojione": "npm:^2.2.9" "@types/lodash.debounce": "npm:^4.0.9" "@types/node": "npm:~22.16.5" - "@types/sanitize-html": "npm:~2.16.0" + "@types/sanitize-html": "npm:~2.16.1" emojione: "npm:^4.5.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jest-qase-reporter: "npm:^2.1.4" lodash.debounce: "npm:^4.0.8" @@ -9198,7 +9298,7 @@ __metadata: pino: "npm:10.3.1" pino-pretty: "npm:13.1.3" reflect-metadata: "npm:^0.2.2" - sanitize-html: "npm:~2.17.0" + sanitize-html: "npm:~2.17.3" tsyringe: "npm:^4.10.0" tweetnacl: "npm:^1.0.3" typescript: "npm:~5.9.3" @@ -9314,10 +9414,10 @@ __metadata: "@testing-library/dom": "npm:~10.4.1" "@testing-library/react": "npm:~16.3.2" "@testing-library/user-event": "npm:~14.6.1" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" cross-env: "npm:^7.0.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" normalize.css: "npm:^8.0.1" @@ -9326,12 +9426,12 @@ __metadata: react: "npm:~18.3.1" react-dom: "npm:~18.3.1" react-i18next: "npm:~13.2.2" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" rimraf: "npm:^6.0.1" storybook: "npm:^8.6.18" storybook-dark-mode: "npm:^4.0.2" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: "@rocket.chat/apps-engine": "workspace:^" "@rocket.chat/fuselage": "*" @@ -9403,16 +9503,16 @@ __metadata: "@testing-library/react": "npm:~16.3.2" "@types/jest": "npm:~30.0.0" "@types/katex": "npm:~0.16.8" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" date-fns: "npm:~4.1.0" dompurify: "npm:~3.4.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" highlight.js: "npm:11.8.0" i18next: "npm:~23.4.9" identity-obj-proxy: "npm:^3.0.0" jest: "npm:~30.2.0" - katex: "npm:~0.16.28" + katex: "npm:~0.16.45" outdent: "npm:^0.8.0" react: "npm:~18.3.1" react-aria: "npm:~3.37.0" @@ -9420,10 +9520,10 @@ __metadata: react-error-boundary: "npm:^3.1.4" react-i18next: "npm:~13.2.2" react-stately: "npm:~3.17.0" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": "*" @@ -9451,13 +9551,13 @@ __metadata: "@types/jest": "npm:~30.0.0" "@types/supertest": "npm:~6.0.3" ajv: "npm:^8.17.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" express: "npm:^4.21.2" - hono: "npm:^4.12.5" + hono: "npm:4.12.5" jest: "npm:~30.2.0" - qs: "npm:^6.14.1" + qs: "npm:^6.14.2" supertest: "npm:~7.1.4" - ts-jest: "npm:~29.4.6" + ts-jest: "npm:~29.4.9" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -9469,7 +9569,7 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tools": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" @@ -9493,7 +9593,7 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" prettier: "npm:~3.3.3" typescript: "npm:~5.9.3" @@ -9504,14 +9604,14 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/jest-presets@workspace:packages/jest-presets" dependencies: - "@swc/core": "npm:1.15.11" + "@swc/core": "npm:1.15.26" "@swc/jest": "npm:~0.2.39" "@testing-library/jest-dom": "npm:~6.8.0" "@types/identity-obj-proxy": "npm:^3.0.2" "@types/jest": "npm:~30.0.0" "@types/jest-axe": "npm:~3.5.9" "@types/uuid": "npm:^10.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" identity-obj-proxy: "npm:~3.0.0" jest: "npm:~30.2.0" jest-axe: "npm:~10.0.0" @@ -9529,7 +9629,7 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jose: "npm:^4.15.9" typescript: "npm:~5.9.3" @@ -9559,9 +9659,9 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/bcrypt": "npm:^5.0.2" "@types/jest": "npm:~30.0.0" - "@types/ws": "npm:^8.5.13" + "@types/ws": "npm:^8.5.14" bcrypt: "npm:^5.1.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jest-websocket-mock: "npm:~2.5.0" typescript: "npm:~5.9.3" @@ -9595,7 +9695,7 @@ __metadata: "@storybook/theming": "npm:^8.6.18" "@types/crypto-js": "npm:~4.2.2" "@types/mini-css-extract-plugin": "npm:~2.5.1" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/webpack-env": "npm:~1.18.8" "@types/whatwg-fetch": "npm:~0.0.33" ajv: "npm:^8.17.1" @@ -9610,7 +9710,7 @@ __metadata: desvg-loader: "npm:^0.1.0" dompurify: "npm:~3.4.0" emoji-mart: "npm:^3.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" file-loader: "npm:^6.2.0" history: "npm:~5.3.0" html-webpack-plugin: "npm:~5.6.6" @@ -9639,7 +9739,7 @@ __metadata: resolve-url-loader: "npm:~5.0.0" rimraf: "npm:^6.0.1" sass: "npm:~1.80.7" - sass-loader: "npm:~16.0.6" + sass-loader: "npm:~16.0.7" storybook: "npm:^8.6.18" storybook-dark-mode: "npm:^4.0.2" style-loader: "npm:^1.3.0" @@ -9649,7 +9749,7 @@ __metadata: terser-webpack-plugin: "npm:~5.3.17" typescript: "npm:~5.9.3" url-loader: "npm:^4.1.1" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" webpack-cli: "npm:~5.1.4" webpack-dev-server: "npm:~5.2.3" whatwg-fetch: "npm:^3.6.20" @@ -9667,7 +9767,7 @@ __metadata: "@types/ejson": "npm:^2.2.2" chalk: "npm:^4.1.2" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -9677,7 +9777,7 @@ __metadata: resolution: "@rocket.chat/logger@workspace:packages/logger" dependencies: "@rocket.chat/emitter": "npm:^0.32.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" pino: "npm:10.3.1" typescript: "npm:~5.9.3" languageName: unknown @@ -9708,7 +9808,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" drachtio-srf: "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -9722,7 +9822,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" ajv: "npm:^8.17.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -9744,7 +9844,7 @@ __metadata: "@rocket.chat/prettier-config": "npm:~0.31.25" "@types/jest": "npm:~30.0.0" "@types/node": "npm:~22.16.5" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" fast-check: "npm:^4.6.0" jest: "npm:~30.2.0" npm-run-all: "npm:^4.1.5" @@ -9752,12 +9852,12 @@ __metadata: prettier: "npm:~3.3.3" prettier-plugin-pegjs: "npm:~0.5.4" rimraf: "npm:^6.0.1" - tinybench: "npm:^3.0.5" + tinybench: "npm:^3.0.7" tldts: "npm:~6.1.86" - ts-loader: "npm:~9.5.4" + ts-loader: "npm:~9.5.7" ts-node: "npm:~10.9.2" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" webpack-cli: "npm:~5.1.4" languageName: unknown linkType: soft @@ -9768,7 +9868,7 @@ __metadata: dependencies: "@rocket.chat/core-typings": "workspace:~" date-fns: "npm:~4.1.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" moment: "npm:^2.30.1" @@ -9806,7 +9906,7 @@ __metadata: "@nivo/pie": "npm:0.88.0" "@noble/ed25519": "npm:^3.0.0" "@node-oauth/oauth2-server": "npm:~5.2.1" - "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/api": "npm:^1.9.1" "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.54.2" "@opentelemetry/sdk-node": "npm:^0.54.2" "@parse/node-apn": "npm:^7.0.1" @@ -9900,7 +10000,7 @@ __metadata: "@testing-library/dom": "npm:~10.4.1" "@testing-library/react": "npm:~16.3.2" "@testing-library/user-event": "npm:~14.6.1" - "@types/adm-zip": "npm:^0.5.7" + "@types/adm-zip": "npm:^0.5.8" "@types/archiver": "npm:~6.0.4" "@types/babel__preset-env": "npm:^7.10.0" "@types/bad-words": "npm:^3.0.3" @@ -9934,14 +10034,14 @@ __metadata: "@types/later": "npm:^1.2.9" "@types/ldapjs": "npm:^2.2.5" "@types/less": "npm:~3.0.8" - "@types/lodash": "npm:~4.17.23" + "@types/lodash": "npm:~4.17.24" "@types/lodash.clonedeep": "npm:^4.5.9" "@types/lodash.debounce": "npm:^4.0.9" "@types/lodash.escape": "npm:^4.0.9" "@types/lodash.get": "npm:^4.4.9" "@types/mailparser": "npm:^3.4.6" "@types/marked": "npm:^4.3.2" - "@types/meteor": "npm:^2.9.10" + "@types/meteor": "npm:^2.9.11" "@types/meteor-collection-hooks": "npm:^0.8.9" "@types/mkdirp": "npm:^1.0.2" "@types/mocha": "github:whitecolor/mocha-types" @@ -9956,9 +10056,9 @@ __metadata: "@types/proxyquire": "npm:^1.3.31" "@types/psl": "npm:^1.1.3" "@types/qs": "npm:^6.14.0" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - "@types/sanitize-html": "npm:~2.16.0" + "@types/sanitize-html": "npm:~2.16.1" "@types/semver": "npm:^7.5.8" "@types/sharp": "npm:^0.32.0" "@types/sinon": "npm:^10.0.20" @@ -9972,8 +10072,8 @@ __metadata: "@types/underscore": "npm:^1.13.0" "@types/xml-crypto": "npm:~1.4.6" "@types/xml-encryption": "npm:~1.2.4" - "@xmldom/xmldom": "npm:~0.8.11" - adm-zip: "npm:0.5.16" + "@xmldom/xmldom": "npm:~0.8.12" + adm-zip: "npm:0.5.17" ajv: "npm:^8.17.1" ajv-formats: "npm:~3.0.1" archiver: "npm:^7.0.1" @@ -9986,7 +10086,7 @@ __metadata: bad-words: "npm:^3.0.4" bcrypt: "npm:^5.1.1" body-parser: "npm:1.20.4" - bson: "npm:^6.7.0" + bson: "npm:^6.7.1" busboy: "npm:^1.6.0" chai: "npm:^4.5.0" chai-as-promised: "npm:^7.1.2" @@ -9996,7 +10096,7 @@ __metadata: chalk: "npm:^4.1.2" change-case: "npm:^4.1.2" chart.js: "npm:^3.9.1" - codemirror: "npm:~5.65.20" + codemirror: "npm:~5.65.21" colorette: "npm:^2.0.20" colors: "npm:^1.4.0" connect: "npm:^3.7.0" @@ -10020,7 +10120,7 @@ __metadata: emojione: "npm:^4.5.0" emojione-assets: "npm:^4.5.0" esl: "npm:^11.2.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" exif-be-gone: "npm:^1.5.1" expiry-map: "npm:^2.0.0" @@ -10038,7 +10138,7 @@ __metadata: gravatar: "npm:^1.8.2" he: "npm:^1.2.0" highlight.js: "npm:11.8.0" - hono: "npm:^4.12.5" + hono: "npm:4.12.5" http-proxy-agent: "npm:^7.0.2" human-interval: "npm:^2.0.1" i18next: "npm:~23.4.9" @@ -10055,9 +10155,9 @@ __metadata: jsdom: "npm:^26.1.0" jsdom-global: "npm:^3.0.2" json-2-csv: "npm:^5.5.10" - jsrsasign: "npm:^11.1.1" + jsrsasign: "npm:^11.1.2" juice: "npm:^8.1.0" - katex: "npm:~0.16.28" + katex: "npm:~0.16.45" ldap-escape: "npm:^2.0.6" ldapjs: "npm:^2.3.3" limax: "npm:^3.0.0" @@ -10069,7 +10169,7 @@ __metadata: mailparser: "npm:~3.7.5" marked: "npm:^4.3.0" mem: "npm:^8.1.1" - meteor-node-stubs: "npm:~1.2.25" + meteor-node-stubs: "npm:~1.2.27" mime-db: "npm:^1.52.0" mime-type: "npm:^4.0.0" mkdirp: "npm:^1.0.4" @@ -10087,7 +10187,7 @@ __metadata: nyc: "npm:^17.1.0" object-path: "npm:^0.11.8" outdent: "npm:~0.8.0" - overlayscrollbars: "npm:^2.11.4" + overlayscrollbars: "npm:~2.11.5" overlayscrollbars-react: "npm:^0.5.6" path: "npm:^0.12.7" path-to-regexp: "npm:^6.3.0" @@ -10110,11 +10210,11 @@ __metadata: proxy-from-env: "npm:^1.1.0" proxyquire: "npm:^2.1.3" psl: "npm:^1.10.0" - qs: "npm:^6.14.1" + qs: "npm:^6.14.2" query-string: "npm:^7.1.3" queue-fifo: "npm:^0.2.6" raw-loader: "npm:~4.0.2" - re-resizable: "npm:^6.10.1" + re-resizable: "npm:^6.10.4" react: "npm:~18.3.1" react-aria: "npm:~3.37.0" react-docgen-typescript-plugin: "npm:^1.0.8" @@ -10124,7 +10224,7 @@ __metadata: react-i18next: "npm:~13.2.2" react-keyed-flatten-children: "npm:^3.0.2" react-stately: "npm:~3.17.0" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" reflect-metadata: "npm:^0.2.2" sanitize-html: "npm:~2.16.0" semver: "npm:^7.6.3" @@ -10154,7 +10254,7 @@ __metadata: tsx: "npm:~4.21.0" tsyringe: "npm:^4.10.0" tweetnacl: "npm:^1.0.3" - twilio: "npm:^5.4.2" + twilio: "npm:~5.4.5" twit: "npm:^2.2.11" typescript: "npm:~5.9.3" typia: "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" @@ -10162,14 +10262,14 @@ __metadata: underscore: "npm:^1.13.8" universal-perf-hooks: "npm:^1.0.1" webdav: "npm:^4.11.5" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" xml-crypto: "npm:~3.2.1" xml-encryption: "npm:~3.1.0" xml2js: "npm:~0.6.2" yaqrcode: "npm:^0.2.1" yoga-layout: "patch:yoga-layout@npm%3A3.2.1#~/.yarn/patches/yoga-layout-npm-3.2.1-51ec934670.patch" zod: "npm:~4.3.6" - zustand: "npm:~5.0.10" + zustand: "npm:~5.0.12" languageName: unknown linkType: soft @@ -10190,9 +10290,9 @@ __metadata: "@testing-library/dom": "npm:~10.4.1" "@testing-library/jest-dom": "npm:~6.8.0" "@testing-library/react": "npm:~16.3.2" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" react: "npm:~18.3.1" @@ -10212,7 +10312,7 @@ __metadata: dependencies: "@rocket.chat/core-typings": "workspace:^" "@types/node-rsa": "npm:^1.1.4" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10234,7 +10334,7 @@ __metadata: "@types/jest": "npm:~30.0.0" "@types/node-rsa": "npm:^1.1.4" date-fns: "npm:~4.1.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" node-rsa: "npm:^1.1.1" typescript: "npm:~5.9.3" @@ -10246,7 +10346,7 @@ __metadata: resolution: "@rocket.chat/mongo-adapter@workspace:packages/mongo-adapter" dependencies: "@rocket.chat/jest-presets": "workspace:~" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" @@ -10274,7 +10374,7 @@ __metadata: "@types/sinon": "npm:^10.0.20" chai: "npm:^4.5.0" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" moleculer: "npm:^0.14.35" pino: "npm:10.3.1" @@ -10294,7 +10394,7 @@ __metadata: "@rocket.chat/omni-core": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mem: "npm:^8.1.1" mongodb: "npm:6.16.0" @@ -10312,7 +10412,7 @@ __metadata: "@rocket.chat/tools": "workspace:*" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" @@ -10342,7 +10442,7 @@ __metadata: date-fns: "npm:~4.1.0" ejson: "npm:^2.2.3" emoji-toolkit: "npm:^7.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" @@ -10377,10 +10477,10 @@ __metadata: "@types/node": "npm:~22.16.5" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" ejson: "npm:^2.2.3" emoji-toolkit: "npm:^7.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" i18next: "npm:~23.4.9" i18next-sprintf-postprocessor: "npm:^0.2.2" @@ -10427,7 +10527,7 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10440,7 +10540,7 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10464,11 +10564,11 @@ __metadata: "@testing-library/react": "npm:~16.3.2" "@types/emojione": "npm:^2.2.9" "@types/jest": "npm:~30.0.0" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" buffer: "npm:~6.0.3" emoji-toolkit: "npm:^7.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" moment: "npm:^2.30.1" @@ -10487,13 +10587,13 @@ __metadata: dependencies: "@rocket.chat/prettier-config": "npm:~0.31.25" "@types/node": "npm:~22.16.5" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" npm-run-all: "npm:^4.1.5" peggy: "npm:4.1.1" prettier: "npm:~3.3.3" rimraf: "npm:^6.0.1" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: peggy: "*" webpack: "*" @@ -10527,7 +10627,7 @@ __metadata: "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" mem: "npm:^8.1.1" moleculer: "npm:^0.14.35" @@ -10552,7 +10652,7 @@ __metadata: "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" "@types/node": "npm:~22.16.5" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" @@ -10587,7 +10687,7 @@ __metadata: "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" emoji-toolkit: "npm:^7.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" mem: "npm:^8.1.1" moleculer: "npm:^0.14.35" @@ -10610,7 +10710,7 @@ __metadata: dependencies: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10623,10 +10723,10 @@ __metadata: "@actions/core": "npm:^1.11.1" "@actions/exec": "npm:^1.1.1" "@actions/github": "npm:^6.0.1" - "@octokit/core": "npm:^5.0.1" + "@octokit/core": "npm:^5.0.2" "@octokit/plugin-throttling": "npm:^6.1.0" "@types/node": "npm:~22.16.5" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mdast-util-to-string: "npm:2.0.0" remark-parse: "npm:9.0.0" remark-stringify: "npm:9.0.1" @@ -10643,7 +10743,7 @@ __metadata: "@changesets/types": "npm:^6.0.0" "@types/node": "npm:~22.16.5" dataloader: "npm:^2.2.3" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" node-fetch: "npm:^2.7.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10660,7 +10760,7 @@ __metadata: "@types/jest": "npm:~30.0.0" ajv: "npm:^8.17.1" ajv-formats: "npm:^3.0.1" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" mongodb: "npm:6.16.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10671,7 +10771,7 @@ __metadata: resolution: "@rocket.chat/server-cloud-communication@workspace:packages/server-cloud-communication" dependencies: "@rocket.chat/license": "workspace:^" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -10683,11 +10783,11 @@ __metadata: "@rocket.chat/logger": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/tools": "workspace:^" - "@types/jest": "npm:^29.5.5" + "@types/jest": "npm:^29.5.14" "@types/node-fetch": "npm:~2.6.13" "@types/proxy-from-env": "npm:^1.0.4" abort-controller: "npm:^3.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" http-proxy-agent: "npm:^7.0.2" https-proxy-agent: "npm:^7.0.6" jest: "npm:^29.7.0" @@ -10703,7 +10803,7 @@ __metadata: dependencies: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10728,14 +10828,14 @@ __metadata: "@storybook/react": "npm:^8.6.18" "@storybook/react-webpack5": "npm:^8.6.18" "@storybook/theming": "npm:^8.6.18" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" storybook-dark-mode: "npm:^4.0.2" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: "@rocket.chat/fuselage": "*" "@rocket.chat/icons": "*" @@ -10778,7 +10878,7 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" typescript: "npm:~5.9.3" languageName: unknown @@ -10788,13 +10888,13 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/tracing@workspace:packages/tracing" dependencies: - "@opentelemetry/api": "npm:^1.9.0" + "@opentelemetry/api": "npm:^1.9.1" "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.54.2" "@opentelemetry/sdk-node": "npm:^0.54.2" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" - ts-jest: "npm:~29.4.6" + ts-jest: "npm:~29.4.9" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -10816,12 +10916,12 @@ __metadata: "@rocket.chat/fuselage-tokens": "npm:~0.33.2" "@rocket.chat/icons": "npm:~0.47.0" "@rocket.chat/ui-contexts": "workspace:^" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" typescript: "npm:~5.9.3" peerDependencies: "@rocket.chat/fuselage": "*" @@ -10858,20 +10958,20 @@ __metadata: "@testing-library/dom": "npm:~10.4.1" "@testing-library/react": "npm:~16.3.2" "@types/jest": "npm:~30.0.0" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" dompurify: "npm:~3.4.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" - overlayscrollbars: "npm:^2.11.4" + overlayscrollbars: "npm:~2.11.5" overlayscrollbars-react: "npm:^0.5.6" - re-resizable: "npm:^6.10.1" + re-resizable: "npm:^6.10.4" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" react-hook-form: "npm:~7.45.4" react-i18next: "npm:~13.2.2" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" typescript: "npm:~5.9.3" peerDependencies: @@ -10912,16 +11012,16 @@ __metadata: "@storybook/react": "npm:^8.6.18" "@storybook/react-webpack5": "npm:^8.6.18" "@types/jest": "npm:~30.0.0" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: "@react-aria/toolbar": "*" "@rocket.chat/fuselage": "*" @@ -10949,15 +11049,15 @@ __metadata: "@rocket.chat/rest-typings": "workspace:^" "@rocket.chat/tools": "workspace:~" "@types/jest": "npm:~30.0.0" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" typescript: "npm:~5.9.3" peerDependencies: "@rocket.chat/core-typings": "workspace:^" @@ -10978,12 +11078,12 @@ __metadata: "@rocket.chat/jest-presets": "workspace:~" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" npm-run-all: "npm:~4.1.5" prettier: "npm:~3.3.3" rimraf: "npm:~6.0.1" - ts-jest: "npm:~29.4.6" + ts-jest: "npm:~29.4.9" ts-patch: "npm:^3.3.0" typescript: "npm:~5.9.3" typia: "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" @@ -11017,17 +11117,17 @@ __metadata: "@storybook/react-webpack5": "npm:^8.6.18" "@types/jest": "npm:~30.0.0" "@types/jest-axe": "npm:~3.5.9" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jest-axe: "npm:~10.0.0" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" typescript: "npm:~5.9.3" - webpack: "npm:~5.104.0" + webpack: "npm:~5.104.1" peerDependencies: "@rocket.chat/css-in-js": "*" "@rocket.chat/fuselage": "*" @@ -11081,17 +11181,17 @@ __metadata: "@testing-library/user-event": "npm:~14.6.1" "@types/jest": "npm:~30.0.0" "@types/jest-axe": "npm:~3.5.9" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" date-fns: "npm:~4.1.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" jest-axe: "npm:~10.0.0" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" react-i18next: "npm:~13.2.2" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" typescript: "npm:~5.9.3" peerDependencies: @@ -11115,7 +11215,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/uikit-playground@workspace:apps/uikit-playground" dependencies: - "@codemirror/lang-javascript": "npm:^6.2.4" + "@codemirror/lang-javascript": "npm:^6.2.5" "@codemirror/lang-json": "npm:^6.0.2" "@hello-pangea/dnd": "npm:^17.0.0" "@lezer/highlight": "npm:^1.2.3" @@ -11133,13 +11233,13 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@rocket.chat/ui-avatar": "workspace:^" "@rocket.chat/ui-contexts": "workspace:~" - "@types/lodash": "npm:~4.17.23" - "@types/react": "npm:~18.3.27" + "@types/lodash": "npm:~4.17.24" + "@types/react": "npm:~18.3.28" "@types/react-beautiful-dnd": "npm:^13.1.8" "@types/react-dom": "npm:~18.3.7" "@vitejs/plugin-react": "npm:~6.0.1" codemirror: "npm:^6.0.2" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eslint4b-prebuilt: "npm:^6.7.2" prettier: "npm:~3.3.3" rc-scrollbars: "npm:^1.1.6" @@ -11148,10 +11248,10 @@ __metadata: react-dom: "npm:~18.3.1" react-router-dom: "npm:^6.30.3" react-split-pane: "npm:^0.1.92" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" reactflow: "npm:^11.11.4" typescript: "npm:~5.9.3" - vite: "npm:^8.0.0" + vite: "npm:^8.0.8" languageName: unknown linkType: soft @@ -11183,16 +11283,16 @@ __metadata: "@tanstack/react-query": "npm:~5.65.1" "@testing-library/dom": "npm:~10.4.1" "@testing-library/react": "npm:~16.3.2" - "@types/react": "npm:~18.3.27" + "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" dompurify: "npm:~3.4.0" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" react: "npm:~18.3.1" react-dom: "npm:~18.3.1" react-hook-form: "npm:~7.45.4" react-i18next: "npm:~13.2.2" - react-virtuoso: "npm:^4.12.0" + react-virtuoso: "npm:~4.12.8" storybook: "npm:^8.6.18" storybook-dark-mode: "npm:^4.0.2" typescript: "npm:~5.9.3" @@ -11207,113 +11307,122 @@ __metadata: languageName: unknown linkType: soft -"@rolldown/binding-android-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-android-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.15" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.9" +"@rolldown/binding-darwin-x64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.15" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.9" +"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.9" +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.9" +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.9" +"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.9" +"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.9" +"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15" dependencies: - "@napi-rs/wasm-runtime": "npm:^1.1.1" + "@emnapi/core": "npm:1.9.2" + "@emnapi/runtime": "npm:1.9.2" + "@napi-rs/wasm-runtime": "npm:^1.1.3" conditions: cpu=wasm32 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.9" +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.9" +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15" conditions: os=win32 & cpu=x64 languageName: node linkType: hard +"@rolldown/pluginutils@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.15" + checksum: 10/528e6c4ebe43cc64daa1b068b23aac3df5de1aa152842f842c00d343dc4505603133f1f4e95c761551bca42fcf8506063d955c27d3b7ca748b6426d11d1e9fb5 + languageName: node + linkType: hard + "@rolldown/pluginutils@npm:1.0.0-rc.7": version: 1.0.0-rc.7 resolution: "@rolldown/pluginutils@npm:1.0.0-rc.7" @@ -11321,13 +11430,6 @@ __metadata: languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.9" - checksum: 10/fedeb40a6c10957219423c2d389e2458713c275083ca073d6cf823557a4606eae13823e7af754b897bfae9b46cb2854b8c7d7ae7ab8f1dc51214149dbda63649 - languageName: node - linkType: hard - "@rtsao/scc@npm:^1.1.0": version: 1.1.0 resolution: "@rtsao/scc@npm:1.1.0" @@ -11399,41 +11501,41 @@ __metadata: languageName: node linkType: hard -"@shikijs/engine-oniguruma@npm:^3.21.0": - version: 3.21.0 - resolution: "@shikijs/engine-oniguruma@npm:3.21.0" +"@shikijs/engine-oniguruma@npm:^3.23.0": + version: 3.23.0 + resolution: "@shikijs/engine-oniguruma@npm:3.23.0" dependencies: - "@shikijs/types": "npm:3.21.0" + "@shikijs/types": "npm:3.23.0" "@shikijs/vscode-textmate": "npm:^10.0.2" - checksum: 10/670dcb10195b7aabe7965921e7ff5e315182ca15287a61867f16df3046d8bb81b53416803f2fe6b12b5656be61e7a9990da3a5caf4d7d75b1386884b0e9568d1 + checksum: 10/edd8983be86f6b055793813e80ecf31c3cefdd896f3742797ae03f2cbb9f467ac736c4b152d4a5c42dbd17da17d24ff798a15d37bcf6205d7f8cd8f44e2a11e0 languageName: node linkType: hard -"@shikijs/langs@npm:^3.21.0": - version: 3.21.0 - resolution: "@shikijs/langs@npm:3.21.0" +"@shikijs/langs@npm:^3.23.0": + version: 3.23.0 + resolution: "@shikijs/langs@npm:3.23.0" dependencies: - "@shikijs/types": "npm:3.21.0" - checksum: 10/37c56fbfdacd3b74a4943cb8d481e3c3288eba72e55c76e34b1a56dd528f728d636c1691433d8bdc96cc5c0b63789754b9515995f28943580b6ef72abc5fd8d9 + "@shikijs/types": "npm:3.23.0" + checksum: 10/115b1afb9eb4eb300eb68b146e442f7e6d196878798c5b9d75dd53a6ef1e1c3b27e325353a10973e3fa47d88630e937b8a3cf3b37b6eef80bf2aec3d51657bb3 languageName: node linkType: hard -"@shikijs/themes@npm:^3.21.0": - version: 3.21.0 - resolution: "@shikijs/themes@npm:3.21.0" +"@shikijs/themes@npm:^3.23.0": + version: 3.23.0 + resolution: "@shikijs/themes@npm:3.23.0" dependencies: - "@shikijs/types": "npm:3.21.0" - checksum: 10/dd3d333f85da79b0904f0ca33e66fc6b01984d161c3ac0e8373df865dabb73f4a7fe5bb7425475aa041082d364c657a756b246d85de4735557902be408e079d4 + "@shikijs/types": "npm:3.23.0" + checksum: 10/741987380445b788aea6cc1e03492bc06950f1a0461edf45083bd226889c5ba78c7ed1af9724afacab7d6471777f0c0e8871577183dfb2cfbceb255663374835 languageName: node linkType: hard -"@shikijs/types@npm:3.21.0, @shikijs/types@npm:^3.21.0": - version: 3.21.0 - resolution: "@shikijs/types@npm:3.21.0" +"@shikijs/types@npm:3.23.0, @shikijs/types@npm:^3.23.0": + version: 3.23.0 + resolution: "@shikijs/types@npm:3.23.0" dependencies: "@shikijs/vscode-textmate": "npm:^10.0.2" "@types/hast": "npm:^3.0.4" - checksum: 10/814dfbbaae55b9d1d86874ed870e80da0cba521a96fb799c73c8439f88b2218fb9e84f64485a50258508d0f912bdd19d0fb8494c2717a9eed2a809e243a81a49 + checksum: 10/18b5703d445d53dd6782a3e2c7332009302c6c046f301d9cd99f1a26b9c8329b3e502b096894bffac61f78835c533827bab2ce78a39666ab87b78f8d7ca11f7b languageName: node linkType: hard @@ -12898,9 +13000,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-darwin-arm64@npm:1.15.11" +"@swc/core-darwin-arm64@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-darwin-arm64@npm:1.15.26" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -12919,9 +13021,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-darwin-x64@npm:1.15.11" +"@swc/core-darwin-x64@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-darwin-x64@npm:1.15.26" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -12940,9 +13042,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.11" +"@swc/core-linux-arm-gnueabihf@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.26" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -12961,9 +13063,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-linux-arm64-gnu@npm:1.15.11" +"@swc/core-linux-arm64-gnu@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-arm64-gnu@npm:1.15.26" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -12982,9 +13084,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-linux-arm64-musl@npm:1.15.11" +"@swc/core-linux-arm64-musl@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-arm64-musl@npm:1.15.26" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -12996,6 +13098,20 @@ __metadata: languageName: node linkType: hard +"@swc/core-linux-ppc64-gnu@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-ppc64-gnu@npm:1.15.26" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@swc/core-linux-s390x-gnu@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-s390x-gnu@npm:1.15.26" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + "@swc/core-linux-x64-gnu@npm:1.12.4": version: 1.12.4 resolution: "@swc/core-linux-x64-gnu@npm:1.12.4" @@ -13003,9 +13119,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-linux-x64-gnu@npm:1.15.11" +"@swc/core-linux-x64-gnu@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-x64-gnu@npm:1.15.26" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -13024,9 +13140,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-linux-x64-musl@npm:1.15.11" +"@swc/core-linux-x64-musl@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-linux-x64-musl@npm:1.15.26" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -13045,9 +13161,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-win32-arm64-msvc@npm:1.15.11" +"@swc/core-win32-arm64-msvc@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-win32-arm64-msvc@npm:1.15.26" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -13066,9 +13182,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-win32-ia32-msvc@npm:1.15.11" +"@swc/core-win32-ia32-msvc@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-win32-ia32-msvc@npm:1.15.26" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -13087,9 +13203,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core-win32-x64-msvc@npm:1.15.11" +"@swc/core-win32-x64-msvc@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core-win32-x64-msvc@npm:1.15.26" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -13101,22 +13217,24 @@ __metadata: languageName: node linkType: hard -"@swc/core@npm:1.15.11": - version: 1.15.11 - resolution: "@swc/core@npm:1.15.11" +"@swc/core@npm:1.15.26": + version: 1.15.26 + resolution: "@swc/core@npm:1.15.26" dependencies: - "@swc/core-darwin-arm64": "npm:1.15.11" - "@swc/core-darwin-x64": "npm:1.15.11" - "@swc/core-linux-arm-gnueabihf": "npm:1.15.11" - "@swc/core-linux-arm64-gnu": "npm:1.15.11" - "@swc/core-linux-arm64-musl": "npm:1.15.11" - "@swc/core-linux-x64-gnu": "npm:1.15.11" - "@swc/core-linux-x64-musl": "npm:1.15.11" - "@swc/core-win32-arm64-msvc": "npm:1.15.11" - "@swc/core-win32-ia32-msvc": "npm:1.15.11" - "@swc/core-win32-x64-msvc": "npm:1.15.11" + "@swc/core-darwin-arm64": "npm:1.15.26" + "@swc/core-darwin-x64": "npm:1.15.26" + "@swc/core-linux-arm-gnueabihf": "npm:1.15.26" + "@swc/core-linux-arm64-gnu": "npm:1.15.26" + "@swc/core-linux-arm64-musl": "npm:1.15.26" + "@swc/core-linux-ppc64-gnu": "npm:1.15.26" + "@swc/core-linux-s390x-gnu": "npm:1.15.26" + "@swc/core-linux-x64-gnu": "npm:1.15.26" + "@swc/core-linux-x64-musl": "npm:1.15.26" + "@swc/core-win32-arm64-msvc": "npm:1.15.26" + "@swc/core-win32-ia32-msvc": "npm:1.15.26" + "@swc/core-win32-x64-msvc": "npm:1.15.26" "@swc/counter": "npm:^0.1.3" - "@swc/types": "npm:^0.1.25" + "@swc/types": "npm:^0.1.26" peerDependencies: "@swc/helpers": ">=0.5.17" dependenciesMeta: @@ -13130,6 +13248,10 @@ __metadata: optional: true "@swc/core-linux-arm64-musl": optional: true + "@swc/core-linux-ppc64-gnu": + optional: true + "@swc/core-linux-s390x-gnu": + optional: true "@swc/core-linux-x64-gnu": optional: true "@swc/core-linux-x64-musl": @@ -13143,7 +13265,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/2ee702f6ee39fc68f1e4d03a19191eaa3762d54ab917d5617741196bbe3beba9fb50b1e878af2735f8a42ecdef3632f44acc090611ebf01a0df4dc533a71f5d2 + checksum: 10/88c4df005a0c3e17319491528b2e971257bf547ca1fceb97546a2727169c8fc4ecd40c7743111d2f8cb7ace4aefaf528353421b87c6a419ff4d64a1a9113e1ee languageName: node linkType: hard @@ -13308,6 +13430,15 @@ __metadata: languageName: node linkType: hard +"@swc/types@npm:^0.1.26": + version: 0.1.26 + resolution: "@swc/types@npm:0.1.26" + dependencies: + "@swc/counter": "npm:^0.1.3" + checksum: 10/07de03b9da3928cdf69bda70bf2c809dd86f16ef23e357759e577bbd975529cb20218c2e54e72b00585abae2b5e04e39b8947cea7a6f4de2d40a7633be441919 + languageName: node + linkType: hard + "@tanstack/query-core@npm:5.65.0": version: 5.65.0 resolution: "@tanstack/query-core@npm:5.65.0" @@ -13474,6 +13605,48 @@ __metadata: languageName: node linkType: hard +"@turbo/darwin-64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/darwin-64@npm:2.8.21" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@turbo/darwin-arm64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/darwin-arm64@npm:2.8.21" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/linux-64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/linux-64@npm:2.8.21" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@turbo/linux-arm64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/linux-arm64@npm:2.8.21" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@turbo/windows-64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/windows-64@npm:2.8.21" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@turbo/windows-arm64@npm:2.8.21": + version: 2.8.21 + resolution: "@turbo/windows-arm64@npm:2.8.21" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + "@tybys/wasm-util@npm:^0.10.1": version: 0.10.1 resolution: "@tybys/wasm-util@npm:0.10.1" @@ -13492,12 +13665,12 @@ __metadata: languageName: node linkType: hard -"@types/adm-zip@npm:^0.5.7": - version: 0.5.7 - resolution: "@types/adm-zip@npm:0.5.7" +"@types/adm-zip@npm:^0.5.8": + version: 0.5.8 + resolution: "@types/adm-zip@npm:0.5.8" dependencies: "@types/node": "npm:*" - checksum: 10/24e9842bd6838879c60fe833af267489d8bc6b582d5feac6179543bf7a0b01a749931a9c6f21a20b8454e83925937a63bae0190493fa269d33a35c6daf4df209 + checksum: 10/0739e5abda05f5c02b84048a02d308f77dd9e2d4e7d6ac7126830a0000b9e962a1f5795efd96d50df289333af9ae3b264adacfad9623dde66c10570ce65029d5 languageName: node linkType: hard @@ -14051,12 +14224,12 @@ __metadata: languageName: node linkType: hard -"@types/debug@npm:^4.1.12": - version: 4.1.12 - resolution: "@types/debug@npm:4.1.12" +"@types/debug@npm:^4.1.13": + version: 4.1.13 + resolution: "@types/debug@npm:4.1.13" dependencies: "@types/ms": "npm:*" - checksum: 10/47876a852de8240bfdaf7481357af2b88cb660d30c72e73789abf00c499d6bc7cd5e52f41c915d1b9cd8ec9fef5b05688d7b7aef17f7f272c2d04679508d1053 + checksum: 10/5091d4ebda85236e6f4a6ecea552860e521e11d1d388d3f6255b40726f5a4a7cf1baa0d09f60853838e4cac6c12a13b14114d5f422ccecaee4d1d07dab349900 languageName: node linkType: hard @@ -14341,7 +14514,7 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:*, @types/jest@npm:^29.5.5": +"@types/jest@npm:*, @types/jest@npm:^29.5.14": version: 29.5.14 resolution: "@types/jest@npm:29.5.14" dependencies: @@ -14500,10 +14673,10 @@ __metadata: languageName: node linkType: hard -"@types/lodash@npm:~4.17.23": - version: 4.17.23 - resolution: "@types/lodash@npm:4.17.23" - checksum: 10/05935534a44aadef67c2158b2fb4a042a226970088106a40ddc67e4f063783149fe5cf02279d7dd4a1e72c98d9189b9430face659645dbf77270f8c4c3e387f5 +"@types/lodash@npm:~4.17.24": + version: 4.17.24 + resolution: "@types/lodash@npm:4.17.24" + checksum: 10/0f2082565f60f9787eefc046edc38458054512be5a8b3584ef0bad5fd9e85d0ab55ec5a1fbfae1ed6ba015cf1f9e837d5fb4da1f99fc60b8f74b2a46146fb00f languageName: node linkType: hard @@ -14549,9 +14722,9 @@ __metadata: languageName: node linkType: hard -"@types/meteor@npm:^2.9.10": - version: 2.9.10 - resolution: "@types/meteor@npm:2.9.10" +"@types/meteor@npm:^2.9.11": + version: 2.9.11 + resolution: "@types/meteor@npm:2.9.11" dependencies: "@types/connect": "npm:*" "@types/jquery": "npm:*" @@ -14560,7 +14733,7 @@ __metadata: "@types/react": "npm:*" "@types/underscore": "npm:*" mongodb: "npm:^4.3.1" - checksum: 10/e30652d4a786df614dafa418a8d75c2e6e7f154c437c777a2b3b6d4af11441b3530cefeb10508a6f2350eaf376dad2955a4122e5b65e9e444be1a2622c1d71cd + checksum: 10/7365e92fe1e5fcbf59d3272ba8b2fbd9b036f44f0d08d5bd92055127c0762eb64bd85c8921f1904ba1c5644a2e84be296b68eebdf5278feefa94463cfa62fa66 languageName: node linkType: hard @@ -14849,13 +15022,13 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:~18.3.27": - version: 18.3.27 - resolution: "@types/react@npm:18.3.27" +"@types/react@npm:~18.3.28": + version: 18.3.28 + resolution: "@types/react@npm:18.3.28" dependencies: "@types/prop-types": "npm:*" csstype: "npm:^3.2.2" - checksum: 10/90155820a2af315cad1ff47df695f3f2f568c12ad641a7805746a6a9a9aa6c40b1374e819e50d39afe0e375a6b9160a73176cbdb4e09807262bc6fcdc06e67db + checksum: 10/6db7bb7f19957ee9f530baa7d143527f8befedad1585b064eb80777be0d84621157de75aba4f499ff429b10c5ef0c7d13e89be6bca3296ef71c80472894ff0eb languageName: node linkType: hard @@ -14901,12 +15074,12 @@ __metadata: languageName: node linkType: hard -"@types/sanitize-html@npm:~2.16.0": - version: 2.16.0 - resolution: "@types/sanitize-html@npm:2.16.0" +"@types/sanitize-html@npm:~2.16.1": + version: 2.16.1 + resolution: "@types/sanitize-html@npm:2.16.1" dependencies: - htmlparser2: "npm:^8.0.0" - checksum: 10/988cbdecce06b858fc5c92ed5573eb984852234be4ea4001ad703a9f0a00a491d788cfb0e3002b2cc01180e2598e7c8f9e5836fbe795601740aa91df3345d564 + htmlparser2: "npm:^10.1" + checksum: 10/fba65c1b612f60cba07af2bb22791997f02b6774a2b68f16a40cb73e92b5f7086684fa6a947b5a24d200aae3607236eb24bfa3f2c56c40cd0e5209baf50bb12a languageName: node linkType: hard @@ -15237,7 +15410,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.18.1": +"@types/ws@npm:^8.18.1, @types/ws@npm:^8.5.14": version: 8.18.1 resolution: "@types/ws@npm:8.18.1" dependencies: @@ -15246,7 +15419,7 @@ __metadata: languageName: node linkType: hard -"@types/ws@npm:^8.5.10, @types/ws@npm:^8.5.13": +"@types/ws@npm:^8.5.10": version: 8.5.13 resolution: "@types/ws@npm:8.5.13" dependencies: @@ -15902,10 +16075,10 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:~0.8.11": - version: 0.8.11 - resolution: "@xmldom/xmldom@npm:0.8.11" - checksum: 10/f6d6ffdf71cf19d9b3c10e978fad40d2f85453bf5b2aa05be8aa0c5ad13f84690c3153316729213cc652d06ec12c605ddb0aa03886f1d73d51b974b4105d31e3 +"@xmldom/xmldom@npm:~0.8.12": + version: 0.8.12 + resolution: "@xmldom/xmldom@npm:0.8.12" + checksum: 10/0fc20bc72a057a939ed17afc3fb35d6be2eb19e42aa9ba3c78aa8bdf471da0b4b17c2710581ce6a2cd68ce3995c2ee7d689593a70a26df1273c0c9c29dfca257 languageName: node linkType: hard @@ -16403,6 +16576,15 @@ __metadata: languageName: node linkType: hard +"aria-hidden@npm:^1.2.3": + version: 1.2.6 + resolution: "aria-hidden@npm:1.2.6" + dependencies: + tslib: "npm:^2.0.0" + checksum: 10/1914e5a36225dccdb29f0b88cc891eeca736cdc5b0c905ab1437b90b28b5286263ed3a221c75b7dc788f25b942367be0044b2ac8ccf073a72e07a50b1d964202 + languageName: node + linkType: hard + "aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" @@ -16896,6 +17078,17 @@ __metadata: languageName: node linkType: hard +"axios@npm:^1.7.8": + version: 1.15.2 + resolution: "axios@npm:1.15.2" + dependencies: + follow-redirects: "npm:^1.15.11" + form-data: "npm:^4.0.5" + proxy-from-env: "npm:^2.1.0" + checksum: 10/eebbd8cb777316d4252cd994a06ec9fb956ef519214a62dab6c5443ae8b753b5116e9a770502316789e6cdef1101e6aae53b6936d6a3791b2d66d75f4d7d2462 + languageName: node + linkType: hard + "axobject-query@npm:^4.1.0": version: 4.1.0 resolution: "axobject-query@npm:4.1.0" @@ -17768,13 +17961,20 @@ __metadata: languageName: node linkType: hard -"bson@npm:^6.10.0, bson@npm:^6.7.0": +"bson@npm:^6.10.0": version: 6.10.1 resolution: "bson@npm:6.10.1" checksum: 10/7b6d2a4c877bbe27d9e7fa0cd31e6b446ba08c5d70927403a6d42abf6e354fd12e79daf562fa5cc36e85cb8e701edc2ebdc2381c75c2376dde0f5e8d7ee3fd1b languageName: node linkType: hard +"bson@npm:^6.7.1": + version: 6.10.4 + resolution: "bson@npm:6.10.4" + checksum: 10/8a79a452219a13898358a5abc93e32bc3805236334f962661da121ce15bd5cade27718ba3310ee2a143ff508489b08467eed172ecb2a658cb8d2e94fdb76b215 + languageName: node + linkType: hard + "buffer-crc32@npm:^1.0.0": version: 1.0.0 resolution: "buffer-crc32@npm:1.0.0" @@ -17789,7 +17989,7 @@ __metadata: languageName: node linkType: hard -"buffer-equal-constant-time@npm:1.0.1": +"buffer-equal-constant-time@npm:1.0.1, buffer-equal-constant-time@npm:^1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 10/80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab @@ -18290,6 +18490,13 @@ __metadata: languageName: node linkType: hard +"chardet@npm:^2.1.1": + version: 2.1.1 + resolution: "chardet@npm:2.1.1" + checksum: 10/d56913b65e45c5c86f331988e2ef6264c131bfeadaae098ee719bf6610546c77740e37221ffec802dde56b5e4466613a4c754786f4da6b5f6c5477243454d324 + languageName: node + linkType: hard + "charenc@npm:0.0.2": version: 0.0.2 resolution: "charenc@npm:0.0.2" @@ -18456,7 +18663,7 @@ __metadata: languageName: node linkType: hard -"ci-info@npm:^3.2.0, ci-info@npm:^3.7.0": +"ci-info@npm:^3.2.0": version: 3.9.0 resolution: "ci-info@npm:3.9.0" checksum: 10/75bc67902b4d1c7b435497adeb91598f6d52a3389398e44294f6601b20cfef32cf2176f7be0eb961d9e085bb333a8a5cae121cb22f81cf238ae7f58eb80e9397 @@ -18627,10 +18834,10 @@ __metadata: languageName: node linkType: hard -"codemirror@npm:~5.65.20": - version: 5.65.20 - resolution: "codemirror@npm:5.65.20" - checksum: 10/62598c706bec992c5eb007dd233b4a06f29c91245d74f907246e094892c062203b11af0a394ea35064605613c80fc6d8168f6311f2cf394aa88154c75f7f6ad2 +"codemirror@npm:~5.65.21": + version: 5.65.21 + resolution: "codemirror@npm:5.65.21" + checksum: 10/c488eacf0dc351c6ff2b579982515380710b5b2170891ffbbc1246d51f42b05fd0c5adaee5e36675ca6edabef2f233e4204ccf0be4027cc3cc98b5833679b69d languageName: node linkType: hard @@ -20554,6 +20761,17 @@ __metadata: languageName: node linkType: hard +"domutils@npm:^3.2.2": + version: 3.2.2 + resolution: "domutils@npm:3.2.2" + dependencies: + dom-serializer: "npm:^2.0.0" + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + checksum: 10/2e08842151aa406f50fe5e6d494f4ec73c2373199fa00d1f77b56ec604e566b7f226312ae35ab8160bb7f27a27c7285d574c8044779053e499282ca9198be210 + languageName: node + linkType: hard + "dot-case@npm:^3.0.4": version: 3.0.4 resolution: "dot-case@npm:3.0.4" @@ -20927,6 +21145,13 @@ __metadata: languageName: node linkType: hard +"entities@npm:^7.0.1": + version: 7.0.1 + resolution: "entities@npm:7.0.1" + checksum: 10/3c0c58d869c45148463e96d21dee2d1b801bd3fe4cf47aa470cd26dfe81d59e9e0a9be92ae083fa02fa441283c883a471486e94538dcfb8544428aa80a55271b + languageName: node + linkType: hard + "env-paths@npm:^2.2.0, env-paths@npm:^2.2.1": version: 2.2.1 resolution: "env-paths@npm:2.2.1" @@ -21349,7 +21574,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:~0.27.0, esbuild@npm:~0.27.3": +"esbuild@npm:~0.27.0, esbuild@npm:~0.27.7": version: 0.27.7 resolution: "esbuild@npm:0.27.7" dependencies: @@ -21598,16 +21823,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:~29.15.0": - version: 29.15.0 - resolution: "eslint-plugin-jest@npm:29.15.0" +"eslint-plugin-jest@npm:~29.15.2": + version: 29.15.2 + resolution: "eslint-plugin-jest@npm:29.15.2" dependencies: "@typescript-eslint/utils": "npm:^8.0.0" peerDependencies: "@typescript-eslint/eslint-plugin": ^8.0.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 jest: "*" - typescript: ">=4.8.4 <6.0.0" + typescript: ">=4.8.4 <7.0.0" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true @@ -21615,7 +21840,7 @@ __metadata: optional: true typescript: optional: true - checksum: 10/552361326c55564fe09092adeb34bf4aae179fdd39b4de6aa561511cebedee370b4ed53f98683af6c695a30891589f54e6fa9ed03ae87957fbe16a506732d0ab + checksum: 10/c7bc4dc705e5613e51a1d19bb924a439db9897c67e694f091e29dbacaa218b758040aacbb8d3f9136f2af0171ad69c1c49736b5e3f30098bdf44d4c1e93c6381 languageName: node linkType: hard @@ -21707,27 +21932,27 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-storybook@npm:~10.2.12": - version: 10.2.12 - resolution: "eslint-plugin-storybook@npm:10.2.12" +"eslint-plugin-storybook@npm:~10.2.19": + version: 10.2.19 + resolution: "eslint-plugin-storybook@npm:10.2.19" dependencies: "@typescript-eslint/utils": "npm:^8.48.0" peerDependencies: eslint: ">=8" - storybook: ^10.2.12 - checksum: 10/b412630703b86b7630550e3adaa809889de630a52fe04ae070457bfd94aa6d500ee36498f62dc4b3c9515221c05bbf082fe19d8cbfe61267fedc7e31b527e9bf + storybook: ^10.2.19 + checksum: 10/28f48587dbed35ff4532c9e3d020ccd3fe5b95f151fbadbb06ed6c08a08c9618c1064ffaf0a2e2eadf595aacb1fc8f4f75978920a5d26bba6437fa97dc2113f3 languageName: node linkType: hard -"eslint-plugin-testing-library@npm:~7.16.0": - version: 7.16.0 - resolution: "eslint-plugin-testing-library@npm:7.16.0" +"eslint-plugin-testing-library@npm:~7.16.2": + version: 7.16.2 + resolution: "eslint-plugin-testing-library@npm:7.16.2" dependencies: "@typescript-eslint/scope-manager": "npm:^8.56.0" "@typescript-eslint/utils": "npm:^8.56.0" peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - checksum: 10/6581b41d25838c61b818f6b80e998ff2d72a646531c1c017023842fe5523a9ea3e9e75e7ce0d84abee9d73309602d64911985cbaace8dfbb0a94415da1b213a8 + checksum: 10/6aa06995f147986ce9b923479caca9b8a5f703c52ef3bf57d9757953ded448f940b2dbb12d85217a348fc5b754a20ecdb70b9ee39856b202e89f43e648f788a7 languageName: node linkType: hard @@ -21795,23 +22020,23 @@ __metadata: languageName: node linkType: hard -"eslint@npm:~9.39.3": - version: 9.39.3 - resolution: "eslint@npm:9.39.3" +"eslint@npm:~9.39.4": + version: 9.39.4 + resolution: "eslint@npm:9.39.4" dependencies: "@eslint-community/eslint-utils": "npm:^4.8.0" "@eslint-community/regexpp": "npm:^4.12.1" - "@eslint/config-array": "npm:^0.21.1" + "@eslint/config-array": "npm:^0.21.2" "@eslint/config-helpers": "npm:^0.4.2" "@eslint/core": "npm:^0.17.0" - "@eslint/eslintrc": "npm:^3.3.1" - "@eslint/js": "npm:9.39.3" + "@eslint/eslintrc": "npm:^3.3.5" + "@eslint/js": "npm:9.39.4" "@eslint/plugin-kit": "npm:^0.4.1" "@humanfs/node": "npm:^0.16.6" "@humanwhocodes/module-importer": "npm:^1.0.1" "@humanwhocodes/retry": "npm:^0.4.2" "@types/estree": "npm:^1.0.6" - ajv: "npm:^6.12.4" + ajv: "npm:^6.14.0" chalk: "npm:^4.0.0" cross-spawn: "npm:^7.0.6" debug: "npm:^4.3.2" @@ -21830,7 +22055,7 @@ __metadata: is-glob: "npm:^4.0.0" json-stable-stringify-without-jsonify: "npm:^1.0.1" lodash.merge: "npm:^4.6.2" - minimatch: "npm:^3.1.2" + minimatch: "npm:^3.1.5" natural-compare: "npm:^1.4.0" optionator: "npm:^0.9.3" peerDependencies: @@ -21840,7 +22065,7 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: 10/1c95c92983ddf435e7f7d54edd06d703a15773a7d189583d3388e5b5ac714f0a2450b91c0b3bb9b9ccec9bd20994fd8e48d231ed6dabca0be56ef314b32820ff + checksum: 10/de95093d710e62e8c7e753220d985587c40f4a05247ed4393ffb6e6cb43a60e825a47fc5b4263151bb2fc5871a206a31d563ccbabdceee1711072ae12db90adf languageName: node linkType: hard @@ -22237,7 +22462,7 @@ __metadata: languageName: node linkType: hard -"external-editor@npm:^3.0.3, external-editor@npm:^3.1.0": +"external-editor@npm:^3.0.3": version: 3.1.0 resolution: "external-editor@npm:3.1.0" dependencies: @@ -23862,7 +24087,7 @@ __metadata: languageName: node linkType: hard -"hono@npm:^4.12.5": +"hono@npm:4.12.5": version: 4.12.5 resolution: "hono@npm:4.12.5" checksum: 10/3d03cf2885f7c75325869a178bc94291a17a656002b930dc91456cb177366f6f344c7c90c09707c1fcb4c6e40b1f33fac98f1622628061628cabadcf8cf6d3fd @@ -24031,6 +24256,18 @@ __metadata: languageName: node linkType: hard +"htmlparser2@npm:^10.1, htmlparser2@npm:^10.1.0": + version: 10.1.0 + resolution: "htmlparser2@npm:10.1.0" + dependencies: + domelementtype: "npm:^2.3.0" + domhandler: "npm:^5.0.3" + domutils: "npm:^3.2.2" + entities: "npm:^7.0.1" + checksum: 10/660fb094a53fb77a3c771db969778b58af0e8a572a1bdc8e5952a4241e4b04e0a6063b16f6422e22c821441081c8de339e3f06ddda362ac2a42c8767d5e5ad53 + languageName: node + linkType: hard + "htmlparser2@npm:^3.9.2": version: 3.10.1 resolution: "htmlparser2@npm:3.10.1" @@ -24240,10 +24477,12 @@ __metadata: languageName: node linkType: hard -"human-id@npm:^1.0.2": - version: 1.0.2 - resolution: "human-id@npm:1.0.2" - checksum: 10/16b116ef68c3fc3f65c90b32a338abd0f9ee656a6257baa92c4d7e1154c66469bb6bd4ee840018c35e972aa817f5ae3f0cbabffb78f2ac90aaf02d88a299a371 +"human-id@npm:^4.1.1": + version: 4.1.3 + resolution: "human-id@npm:4.1.3" + bin: + human-id: dist/cli.js + checksum: 10/48786a537777b94aba33f656b86fc2d87e84fa65f6aa768d5d43fb3a3259d272966d29c4b3cfb3e7603d7610f9ef5c0dc7f6806dba6f05cfeb2eac0434911fc9 languageName: node linkType: hard @@ -24338,6 +24577,15 @@ __metadata: languageName: node linkType: hard +"iconv-lite@npm:^0.7.0": + version: 0.7.2 + resolution: "iconv-lite@npm:0.7.2" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10/24c937b532f868e938386b62410b303b7c767ce3d08dc2829cbe59464d5a26ef86ae5ad1af6b34eec43ddfea39e7d101638644b0178d67262fa87015d59f983a + languageName: node + linkType: hard + "icss-utils@npm:^4.0.0, icss-utils@npm:^4.1.1": version: 4.1.1 resolution: "icss-utils@npm:4.1.1" @@ -26855,7 +27103,7 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:9.0.2, jsonwebtoken@npm:^9.0.0, jsonwebtoken@npm:^9.0.2": +"jsonwebtoken@npm:9.0.2, jsonwebtoken@npm:^9.0.0": version: 9.0.2 resolution: "jsonwebtoken@npm:9.0.2" dependencies: @@ -26873,6 +27121,24 @@ __metadata: languageName: node linkType: hard +"jsonwebtoken@npm:^9.0.2": + version: 9.0.3 + resolution: "jsonwebtoken@npm:9.0.3" + dependencies: + jws: "npm:^4.0.1" + lodash.includes: "npm:^4.3.0" + lodash.isboolean: "npm:^3.0.3" + lodash.isinteger: "npm:^4.0.4" + lodash.isnumber: "npm:^3.0.3" + lodash.isplainobject: "npm:^4.0.6" + lodash.isstring: "npm:^4.0.1" + lodash.once: "npm:^4.0.0" + ms: "npm:^2.1.1" + semver: "npm:^7.5.4" + checksum: 10/a67a276db41fbfb458ebdc4938d5d7b01d4743e16bda0f25ac01996fe5b5819d66656153f6cfce19b4680b79ae9f9ca185965defc22e77e0abddf443573238d6 + languageName: node + linkType: hard + "jsprim@npm:^1.2.2": version: 1.4.2 resolution: "jsprim@npm:1.4.2" @@ -26885,10 +27151,10 @@ __metadata: languageName: node linkType: hard -"jsrsasign@npm:^11.1.1": - version: 11.1.1 - resolution: "jsrsasign@npm:11.1.1" - checksum: 10/9825125f33a443210b90a56d388eb3f9f96ed9da40980787cca2bb6913e35cf1036dd4d9aba0e4aa39eb43558d9555539c61d20978502028c30ef28d348398a6 +"jsrsasign@npm:^11.1.2": + version: 11.1.2 + resolution: "jsrsasign@npm:11.1.2" + checksum: 10/4ceca195b1f338031699366a2f947a3819c3c8d68d723e8c1c071f7412e4ae2135d123793b1eae2449d3872444e513e4239dc242f337312dcf70670946d6344d languageName: node linkType: hard @@ -26948,6 +27214,17 @@ __metadata: languageName: node linkType: hard +"jwa@npm:^2.0.1": + version: 2.0.1 + resolution: "jwa@npm:2.0.1" + dependencies: + buffer-equal-constant-time: "npm:^1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: 10/b04312a1de85f912b96aa3a7211717b8336945fab5b4f7cbc7800f4c80934060c0a3111576fad8d76e41ad62887d6da4b21fd4c47e45c174197f8be7dc0c1694 + languageName: node + linkType: hard + "jws@npm:^3.2.2": version: 3.2.2 resolution: "jws@npm:3.2.2" @@ -26968,6 +27245,16 @@ __metadata: languageName: node linkType: hard +"jws@npm:^4.0.1": + version: 4.0.1 + resolution: "jws@npm:4.0.1" + dependencies: + jwa: "npm:^2.0.1" + safe-buffer: "npm:^5.0.1" + checksum: 10/75d7b157489fa9a72023712c58a7a7706c7e2b10eec27fabd3bb9cae0c9e492251ab72527d20a8a5f5726196f0508c320c643fddff7076657f6bca16d0ceeeeb + languageName: node + linkType: hard + "jwt-decode@npm:^4.0.0": version: 4.0.0 resolution: "jwt-decode@npm:4.0.0" @@ -26975,14 +27262,14 @@ __metadata: languageName: node linkType: hard -"katex@npm:~0.16.28": - version: 0.16.28 - resolution: "katex@npm:0.16.28" +"katex@npm:~0.16.45": + version: 0.16.45 + resolution: "katex@npm:0.16.45" dependencies: commander: "npm:^8.3.0" bin: katex: cli.js - checksum: 10/8f8c043e95c9e97e90aa9cc59fe143a094215a08af15e49d0d09a9aaf9ae89b89c528feae5d9927c000ff0f7006df2016751d23cf524bcb69a1b06e173029376 + checksum: 10/8c82f9651c3615459722166a6ccb16f23ecd8323850a956568b69b1f641331a57679aa9f3ad4903c4be26089434cbbde850c0384b9b0dff022e4357b84a20ebc languageName: node linkType: hard @@ -28202,9 +28489,9 @@ __metadata: languageName: node linkType: hard -"meteor-node-stubs@npm:~1.2.25": - version: 1.2.25 - resolution: "meteor-node-stubs@npm:1.2.25" +"meteor-node-stubs@npm:~1.2.27": + version: 1.2.27 + resolution: "meteor-node-stubs@npm:1.2.27" dependencies: "@meteorjs/crypto-browserify": "npm:^3.12.1" assert: "npm:^2.1.0" @@ -28230,7 +28517,7 @@ __metadata: url: "npm:^0.11.4" util: "npm:^0.12.5" vm-browserify: "npm:^1.1.2" - checksum: 10/57390ff99f2fa775f8b46b0faabbbfbcab9f193d264f3cb1c2e250e24cfd211c3437ad3c7646d7c3965531155fc698383e5bd5d8f1504d93a4b1cc9cbc007b0f + checksum: 10/f6499c4dd0056320247ce38a06e666a90d74f7c09b891467738af70b600415a681727ed81a159ba6c9e2d3c3ca122d6bc789675aeb4805756f3cc1eae93c5a74 languageName: node linkType: hard @@ -28452,6 +28739,15 @@ __metadata: languageName: node linkType: hard +"minimatch@npm:^10.2.5": + version: 10.2.5 + resolution: "minimatch@npm:10.2.5" + dependencies: + brace-expansion: "npm:^5.0.5" + checksum: 10/19e87a931aff60ee7b9d80f39f817b8bfc54f61f8356ee3549fbf636dbccacacfec8d803eac73293955c4527cd085247dfc064bce4a5e349f8f3b85e2bf5da0f + languageName: node + linkType: hard + "minimatch@npm:^3.0.0, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" @@ -28461,7 +28757,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.1.3": +"minimatch@npm:^3.1.5": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: @@ -28488,7 +28784,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.4, minimatch@npm:^9.0.5": +"minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" dependencies: @@ -29861,10 +30157,10 @@ __metadata: languageName: node linkType: hard -"overlayscrollbars@npm:^2.11.4": - version: 2.11.4 - resolution: "overlayscrollbars@npm:2.11.4" - checksum: 10/ed1ec65ed52402b837eeacf1eff84652690bf0e747545d6ccdea7a3a9a82718ae1e214bb8f5566d5aeb1d99bc95688996464e6c25e76682cc02831505378e66f +"overlayscrollbars@npm:~2.11.5": + version: 2.11.5 + resolution: "overlayscrollbars@npm:2.11.5" + checksum: 10/3fda4a2d3ad40c979afed7cb4fc3d9d2f3df37446e5c7985b0caf03d90cc5a4ba60d974940de9c6f94af794196b21b45e2c889b2926e7ab235459515fae74e0a languageName: node linkType: hard @@ -31764,6 +32060,13 @@ __metadata: languageName: node linkType: hard +"proxy-from-env@npm:^2.1.0": + version: 2.1.0 + resolution: "proxy-from-env@npm:2.1.0" + checksum: 10/fbbaf4dab2a6231dc9e394903a5f66f20475e36b734335790b46feb9da07c37d6b32e2c02e3e2ea4d4b23774c53d8562e5b7cc73282cb43f4a597b7eacaee2ee + languageName: node + linkType: hard + "proxyquire@npm:^2.1.3": version: 2.1.3 resolution: "proxyquire@npm:2.1.3" @@ -31927,7 +32230,7 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.11.2, qs@npm:^6.12.3, qs@npm:^6.9.4": +"qs@npm:^6.11.2, qs@npm:^6.12.3": version: 6.14.0 resolution: "qs@npm:6.14.0" dependencies: @@ -31936,7 +32239,16 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.14.1, qs@npm:~6.14.0": +"qs@npm:^6.14.2, qs@npm:^6.9.4": + version: 6.15.1 + resolution: "qs@npm:6.15.1" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10/ec10b9957446b3f4a38000940f6374720b4e2985209b89df197066038c951472ea24cd98d6bc6df73a0cbec75bc056f638032e3fb447345017ff7e0f0a2693ac + languageName: node + linkType: hard + +"qs@npm:~6.14.0": version: 6.14.1 resolution: "qs@npm:6.14.1" dependencies: @@ -32153,13 +32465,13 @@ __metadata: languageName: node linkType: hard -"re-resizable@npm:^6.10.1": - version: 6.10.1 - resolution: "re-resizable@npm:6.10.1" +"re-resizable@npm:^6.10.4": + version: 6.11.2 + resolution: "re-resizable@npm:6.11.2" peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - checksum: 10/91e1a9738aaae640696de6b4e286075dd9eb9bf5599edcbcbaa6db0df1f5280213b6d832af69417247cea07f95a2e9be1486fdecde51840c796788b5a8cbaf3d + react: ^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/3b814c61b77af294862bd36382b6f2e7f9a90a86f3696fd93780d39d2534c1fcbab68f63b088fc1e1935b1b9dba6c1ab8f61f4f4e6e5d16e86e5805bae40cfb6 languageName: node linkType: hard @@ -32213,6 +32525,26 @@ __metadata: languageName: node linkType: hard +"react-aria@npm:3.48.0": + version: 3.48.0 + resolution: "react-aria@npm:3.48.0" + dependencies: + "@internationalized/date": "npm:^3.12.1" + "@internationalized/number": "npm:^3.6.6" + "@internationalized/string": "npm:^3.2.8" + "@react-types/shared": "npm:^3.34.0" + "@swc/helpers": "npm:^0.5.0" + aria-hidden: "npm:^1.2.3" + clsx: "npm:^2.0.0" + react-stately: "npm:3.46.0" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10/e70ba3a21f99967daffcb7399e6c4cc33fe9ae0ba4b13216ac3fbc150f37416d882b68ecd52f3c59852b87ef61a1c4b184066083d699d5afda1ad8b38fab8b99 + languageName: node + linkType: hard + "react-aria@patch:react-aria@npm%3A3.37.0#~/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch": version: 3.37.0 resolution: "react-aria@patch:react-aria@npm%3A3.37.0#~/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch::version=3.37.0&hash=e69ffb" @@ -32554,6 +32886,22 @@ __metadata: languageName: node linkType: hard +"react-stately@npm:3.46.0": + version: 3.46.0 + resolution: "react-stately@npm:3.46.0" + dependencies: + "@internationalized/date": "npm:^3.12.1" + "@internationalized/number": "npm:^3.6.6" + "@internationalized/string": "npm:^3.2.8" + "@react-types/shared": "npm:^3.34.0" + "@swc/helpers": "npm:^0.5.0" + use-sync-external-store: "npm:^1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 + checksum: 10/ee2d8b0633c6ba82eb159197ddaaeb0832d318c6ed1304c7e14273d0c3dc3156c48aef0c8cf4207481dbca1cf054c6726c42c089259605213d1f08f35bebf321 + languageName: node + linkType: hard + "react-stately@patch:react-stately@npm%3A3.17.0#~/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch": version: 3.17.0 resolution: "react-stately@patch:react-stately@npm%3A3.17.0#~/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch::version=3.17.0&hash=e13f63" @@ -32603,13 +32951,13 @@ __metadata: languageName: node linkType: hard -"react-virtuoso@npm:^4.12.0": - version: 4.12.0 - resolution: "react-virtuoso@npm:4.12.0" +"react-virtuoso@npm:~4.12.8": + version: 4.12.8 + resolution: "react-virtuoso@npm:4.12.8" peerDependencies: - react: ">=16 || >=17 || >= 18" - react-dom: ">=16 || >=17 || >= 18" - checksum: 10/f9d899dc7747e475efb793b849de9bac4f71209f3a74238a4d58d7c0c81543cca35179d64029f014fb6ebad2eab18d9a852444a49c8fe7c5177a18f09b9924d4 + react: ">=16 || >=17 || >= 18 || >= 19" + react-dom: ">=16 || >=17 || >= 18 || >=19" + checksum: 10/3d37ff207423d1860f99c5999f083b71b27254da45ce770fa392fa77e3d47fc670157bb372ccdff657353077a036264dc0cf3308ca5efb6f8cfc5792597ae441 languageName: node linkType: hard @@ -33437,17 +33785,17 @@ __metadata: version: 0.0.0-use.local resolution: "rocket.chat@workspace:." dependencies: - "@changesets/cli": "npm:^2.27.11" + "@changesets/cli": "npm:^2.27.12" "@rocket.chat/eslint-config": "workspace:~" "@types/chart.js": "npm:^2.9.41" "@types/js-yaml": "npm:^4.0.9" "@types/node": "npm:~22.16.5" "@types/stream-buffers": "npm:^3.0.8" - eslint: "npm:~9.39.3" + eslint: "npm:~9.39.4" eslint-plugin-you-dont-need-lodash-underscore: "npm:~6.14.0" node-gyp: "npm:^10.2.0" ts-node: "npm:^10.9.2" - turbo: "npm:2.8.12" + turbo: "npm:2.8.21" typescript: "npm:~5.9.3" languageName: unknown linkType: soft @@ -33500,27 +33848,27 @@ __metadata: languageName: unknown linkType: soft -"rolldown@npm:1.0.0-rc.9": - version: 1.0.0-rc.9 - resolution: "rolldown@npm:1.0.0-rc.9" - dependencies: - "@oxc-project/types": "npm:=0.115.0" - "@rolldown/binding-android-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.9" - "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.9" - "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.9" - "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.9" - "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.9" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.9" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.9" - "@rolldown/pluginutils": "npm:1.0.0-rc.9" +"rolldown@npm:1.0.0-rc.15": + version: 1.0.0-rc.15 + resolution: "rolldown@npm:1.0.0-rc.15" + dependencies: + "@oxc-project/types": "npm:=0.124.0" + "@rolldown/binding-android-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.15" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.15" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.15" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.15" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.15" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.15" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.15" + "@rolldown/pluginutils": "npm:1.0.0-rc.15" dependenciesMeta: "@rolldown/binding-android-arm64": optional: true @@ -33554,7 +33902,7 @@ __metadata: optional: true bin: rolldown: bin/cli.mjs - checksum: 10/b7c76a93c6f738d6c2fd3101dfa58f1dfe149bb0bd49c7560f1d5b119196a8f53161cb6aa96dc724274d3f23c40f6f301e6e27756ace7de4b7fe92c4c848fe49 + checksum: 10/cc07a103297573690bad1469e96e282230f9eb1acc4e22bf3318294bf5b5221d475d1c0822be6fe4958c5618983cac70fb0155afe510ab51516a053564c9304a languageName: node linkType: hard @@ -33673,27 +34021,27 @@ __metadata: languageName: node linkType: hard -"sanitize-html@npm:~2.17.0": - version: 2.17.0 - resolution: "sanitize-html@npm:2.17.0" +"sanitize-html@npm:~2.17.3": + version: 2.17.3 + resolution: "sanitize-html@npm:2.17.3" dependencies: deepmerge: "npm:^4.2.2" escape-string-regexp: "npm:^4.0.0" - htmlparser2: "npm:^8.0.0" + htmlparser2: "npm:^10.1.0" is-plain-object: "npm:^5.0.0" parse-srcset: "npm:^1.0.2" postcss: "npm:^8.3.11" - checksum: 10/93a91c629b91f1ad25ede5cd000d4212f3ed495a9b8eeb2cb1b50c936807ab11e736d6c6a75d141daac28430d14e40351981809fbb05f7be7bdffb60318cfebd + checksum: 10/adced2038708745c9cc2d079dd66f504c61ee232d30e205ee89e554bc5e6514626f8ffd01146abd637295d9910cf26e72511cf1e2937a448d722ee3ef6b813ce languageName: node linkType: hard -"sass-loader@npm:~16.0.6": - version: 16.0.6 - resolution: "sass-loader@npm:16.0.6" +"sass-loader@npm:~16.0.7": + version: 16.0.7 + resolution: "sass-loader@npm:16.0.7" dependencies: neo-async: "npm:^2.6.2" peerDependencies: - "@rspack/core": 0.x || 1.x + "@rspack/core": 0.x || ^1.0.0 || ^2.0.0-0 node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 sass: ^1.3.0 sass-embedded: "*" @@ -33709,7 +34057,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10/ff4d11c48a4286dbee0de0aa9c9225e96a4390039f8fccc3333e21b7d9ac27c4ed9572212ec733a31723ec740808f6d446aea20f1d05fd47e6ce0f23d4942fb8 + checksum: 10/074be7eadbbb2e14f581b06e9f1ec010807d76bd5cc5cd9c6a120fa377f1b94a7f8dc4b0eea5b12cf34511e9b00fe056093b7da02e849d3f2513bfe21e9f660f languageName: node linkType: hard @@ -33926,6 +34274,15 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.7.4": + version: 7.7.4 + resolution: "semver@npm:7.7.4" + bin: + semver: bin/semver.js + checksum: 10/26bdc6d58b29528f4142d29afb8526bc335f4fc04c4a10f2b98b217f277a031c66736bf82d3d3bb354a2f6a3ae50f18fd62b053c4ac3f294a3d10a61f5075b75 + languageName: node + linkType: hard + "semver@npm:~5.3.0": version: 5.3.0 resolution: "semver@npm:5.3.0" @@ -35932,7 +36289,7 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^3.0.5": +"tinybench@npm:^3.0.7": version: 3.1.1 resolution: "tinybench@npm:3.1.1" checksum: 10/1d97035722dd91fc8a496cb2a97c375a06ce2ec03e57586ee5bf4b861bbc8a3ab52839d285ca5948c094ac61c1529fbdf7f47c9cb7e8dce11daafd4239eb47b0 @@ -36192,17 +36549,17 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:~29.4.6": - version: 29.4.6 - resolution: "ts-jest@npm:29.4.6" +"ts-jest@npm:~29.4.9": + version: 29.4.9 + resolution: "ts-jest@npm:29.4.9" dependencies: bs-logger: "npm:^0.2.6" fast-json-stable-stringify: "npm:^2.1.0" - handlebars: "npm:^4.7.8" + handlebars: "npm:^4.7.9" json5: "npm:^2.2.3" lodash.memoize: "npm:^4.1.2" make-error: "npm:^1.3.6" - semver: "npm:^7.7.3" + semver: "npm:^7.7.4" type-fest: "npm:^4.41.0" yargs-parser: "npm:^21.1.1" peerDependencies: @@ -36212,7 +36569,7 @@ __metadata: babel-jest: ^29.0.0 || ^30.0.0 jest: ^29.0.0 || ^30.0.0 jest-util: ^29.0.0 || ^30.0.0 - typescript: ">=4.3 <6" + typescript: ">=4.3 <7" peerDependenciesMeta: "@babel/core": optional: true @@ -36228,13 +36585,13 @@ __metadata: optional: true bin: ts-jest: cli.js - checksum: 10/e0ff9e13f684166d5331808b288043b8054f49a1c2970480a92ba3caec8d0ff20edd092f2a4e7a3ad8fcb9ba4d674bee10ec7ee75046d8066bbe43a7d16cf72e + checksum: 10/f5e81b1e13fff08da5b92d5a72f984f3393f40df73a1ae54473a780436b95dddb1452c78256e6d70a701c09ea427449657a5fbb3d142dc7e7a82eb192e80c3db languageName: node linkType: hard -"ts-loader@npm:~9.5.4": - version: 9.5.4 - resolution: "ts-loader@npm:9.5.4" +"ts-loader@npm:~9.5.7": + version: 9.5.7 + resolution: "ts-loader@npm:9.5.7" dependencies: chalk: "npm:^4.1.0" enhanced-resolve: "npm:^5.0.0" @@ -36244,7 +36601,7 @@ __metadata: peerDependencies: typescript: "*" webpack: ^5.0.0 - checksum: 10/a9977dce1cda5af08010ae92d96fb57981ce52cb6123054b232fc7f71e151969f45e36ca055c0babe01b3b97dcba54b631ad7a50e3e96e839dfd7033c385de05 + checksum: 10/c70c53679a877f94ae75c03eb0c7690e5c00891af9d2eef9a95271e84ac1b7144e25451dc41385ac3eb05950465c5b231cc5ce2fbd1c711a68c4012323ab03b7 languageName: node linkType: hard @@ -36434,74 +36791,32 @@ __metadata: languageName: node linkType: hard -"turbo-darwin-64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-darwin-64@npm:2.8.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"turbo-darwin-arm64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-darwin-arm64@npm:2.8.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"turbo-linux-64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-linux-64@npm:2.8.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"turbo-linux-arm64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-linux-arm64@npm:2.8.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"turbo-windows-64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-windows-64@npm:2.8.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"turbo-windows-arm64@npm:2.8.12": - version: 2.8.12 - resolution: "turbo-windows-arm64@npm:2.8.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"turbo@npm:2.8.12": - version: 2.8.12 - resolution: "turbo@npm:2.8.12" +"turbo@npm:2.8.21": + version: 2.8.21 + resolution: "turbo@npm:2.8.21" dependencies: - turbo-darwin-64: "npm:2.8.12" - turbo-darwin-arm64: "npm:2.8.12" - turbo-linux-64: "npm:2.8.12" - turbo-linux-arm64: "npm:2.8.12" - turbo-windows-64: "npm:2.8.12" - turbo-windows-arm64: "npm:2.8.12" + "@turbo/darwin-64": "npm:2.8.21" + "@turbo/darwin-arm64": "npm:2.8.21" + "@turbo/linux-64": "npm:2.8.21" + "@turbo/linux-arm64": "npm:2.8.21" + "@turbo/windows-64": "npm:2.8.21" + "@turbo/windows-arm64": "npm:2.8.21" dependenciesMeta: - turbo-darwin-64: + "@turbo/darwin-64": optional: true - turbo-darwin-arm64: + "@turbo/darwin-arm64": optional: true - turbo-linux-64: + "@turbo/linux-64": optional: true - turbo-linux-arm64: + "@turbo/linux-arm64": optional: true - turbo-windows-64: + "@turbo/windows-64": optional: true - turbo-windows-arm64: + "@turbo/windows-arm64": optional: true bin: turbo: bin/turbo - checksum: 10/1ad9859f0976f3a0dbe4d4473cccd280950899b9ba1dde234dc342de890eec14ea86861efff56cc2ef3f547fa8b3dd31e11e36233158c3852cc3b79a962eebc3 + checksum: 10/f7f6e391b9babae5da3275e7c63cad481c4362b0559b8769739f43d6cec216458924482b8635744cdda5ed4916e06db2f4fd847a6203de3c8095ecac0d8a6d5d languageName: node linkType: hard @@ -36519,18 +36834,18 @@ __metadata: languageName: node linkType: hard -"twilio@npm:^5.4.2": - version: 5.4.2 - resolution: "twilio@npm:5.4.2" +"twilio@npm:~5.4.5": + version: 5.4.5 + resolution: "twilio@npm:5.4.5" dependencies: - axios: "npm:^1.7.4" + axios: "npm:^1.7.8" dayjs: "npm:^1.11.9" https-proxy-agent: "npm:^5.0.0" jsonwebtoken: "npm:^9.0.2" qs: "npm:^6.9.4" scmp: "npm:^2.1.0" xmlbuilder: "npm:^13.0.2" - checksum: 10/6f0a8f4629ad85721e5698b3314f146a1d168daf4026353388622e3ab67ba6ef71ff9107590f32c666a82c654ead213e2de45e5dfce92bec590b813676fc4cae + checksum: 10/7afc73419e2f4746b52f44456753389f69041a5b9248f7d2af7f08aa3b87771a1ec6a503fe58f9db4accf1964db9553264abb453add5d51bb92d2e997a81bec9 languageName: node linkType: hard @@ -36686,20 +37001,20 @@ __metadata: languageName: node linkType: hard -"typedoc@npm:~0.28.16": - version: 0.28.16 - resolution: "typedoc@npm:0.28.16" +"typedoc@npm:~0.28.19": + version: 0.28.19 + resolution: "typedoc@npm:0.28.19" dependencies: - "@gerrit0/mini-shiki": "npm:^3.17.0" + "@gerrit0/mini-shiki": "npm:^3.23.0" lunr: "npm:^2.3.9" - markdown-it: "npm:^14.1.0" - minimatch: "npm:^9.0.5" - yaml: "npm:^2.8.1" + markdown-it: "npm:^14.1.1" + minimatch: "npm:^10.2.5" + yaml: "npm:^2.8.3" peerDependencies: - typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x bin: typedoc: bin/typedoc - checksum: 10/657afd087d88a14cf77ad941de8913041a6a025e87c78833a5ee58a52b8252b685730394ab7920781b0b2faa0507b1c9d87fcf82dd86d1b788420716fc17ded3 + checksum: 10/b16fdc717b3fad61e7b776f9eae1a762bfb651ccc7ef8b0deacc64d290bc56c2cfe76214e711fa8e0401da01046d97e14293f6798d8e9f15cc71892ad122d309 languageName: node linkType: hard @@ -37212,6 +37527,15 @@ __metadata: languageName: node linkType: hard +"use-sync-external-store@npm:^1.6.0": + version: 1.6.0 + resolution: "use-sync-external-store@npm:1.6.0" + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10/b40ad2847ba220695bff2d4ba4f4d60391c0fb4fb012faa7a4c18eb38b69181936f5edc55a522c4d20a788d1a879b73c3810952c9d0fd128d01cb3f22042c09e + languageName: node + linkType: hard + "utf7@npm:>=1.0.2": version: 1.0.2 resolution: "utf7@npm:1.0.2" @@ -37290,12 +37614,12 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^11.0.3, uuid@npm:~11.0.5": - version: 11.0.5 - resolution: "uuid@npm:11.0.5" +"uuid@npm:^11.0.5": + version: 11.1.0 + resolution: "uuid@npm:11.1.0" bin: uuid: dist/esm/bin/uuid - checksum: 10/0594ecdff3051e15d4a2c614b4c72e73af373bde0a5d156512353c01156975295d024ae8d7151846d7bd4d22ccd251b16ed51b4318fa71505fb20ad984102dc1 + checksum: 10/d2da43b49b154d154574891ced66d0c83fc70caaad87e043400cf644423b067542d6f3eb641b7c819224a7cd3b4c2f21906acbedd6ec9c6a05887aa9115a9cf5 languageName: node linkType: hard @@ -37326,6 +37650,15 @@ __metadata: languageName: node linkType: hard +"uuid@npm:~11.0.5": + version: 11.0.5 + resolution: "uuid@npm:11.0.5" + bin: + uuid: dist/esm/bin/uuid + checksum: 10/0594ecdff3051e15d4a2c614b4c72e73af373bde0a5d156512353c01156975295d024ae8d7151846d7bd4d22ccd251b16ed51b4318fa71505fb20ad984102dc1 + languageName: node + linkType: hard + "v8-compile-cache-lib@npm:^3.0.1": version: 3.0.1 resolution: "v8-compile-cache-lib@npm:3.0.1" @@ -37432,21 +37765,20 @@ __metadata: languageName: node linkType: hard -"vite@npm:^8.0.0": - version: 8.0.0 - resolution: "vite@npm:8.0.0" +"vite@npm:^8.0.8": + version: 8.0.8 + resolution: "vite@npm:8.0.8" dependencies: - "@oxc-project/runtime": "npm:0.115.0" fsevents: "npm:~2.3.3" lightningcss: "npm:^1.32.0" - picomatch: "npm:^4.0.3" + picomatch: "npm:^4.0.4" postcss: "npm:^8.5.8" - rolldown: "npm:1.0.0-rc.9" + rolldown: "npm:1.0.0-rc.15" tinyglobby: "npm:^0.2.15" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 - "@vitejs/devtools": ^0.0.0-alpha.31 - esbuild: ^0.27.0 + "@vitejs/devtools": ^0.1.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: ">=1.21.0" less: ^4.0.0 sass: ^1.70.0 @@ -37486,7 +37818,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/049b06d6139788d20ab8dd6e2c9d88c41dc4ec23576be08611013ad6ebd2729c1ac1a6683a796715f256d82b2a49523a51b6284533e01ce2aad203d29823ee42 + checksum: 10/07a74ec338a9f309c4a2d003a17289d7054086260ed3fe3e2ff9bf377e5bf4701919f44b7312917aa2a8fcc8189fd4a545799a1945d68fcdc8a1e61f20c19bf8 languageName: node linkType: hard @@ -38548,9 +38880,9 @@ __metadata: languageName: node linkType: hard -"zustand@npm:~5.0.10": - version: 5.0.10 - resolution: "zustand@npm:5.0.10" +"zustand@npm:~5.0.12": + version: 5.0.12 + resolution: "zustand@npm:5.0.12" peerDependencies: "@types/react": ">=18.0.0" immer: ">=9.0.6" @@ -38565,7 +38897,7 @@ __metadata: optional: true use-sync-external-store: optional: true - checksum: 10/1a48812ef1f5dc8ead8eb05c9861d1627d4ec79302f3b329cb3029d07e0325c44beb1829d2d2bbc511cf42e4f26be496723813f1117effa1ee10c2e83834c9ff + checksum: 10/b84c85fc4133ec5ee05c11d0f2f3dff0f7537d9d0f1d3475a8e5a92f42ee1ba6d38039e09baf510075eb738e3d55018a635b3fa7db07c94e8d5717104abab9e5 languageName: node linkType: hard From b05e5d04b40fa1394b2f04f32b1a5e46b6a895bd Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 18:02:02 +0200 Subject: [PATCH 03/69] chore(deps): bump 6 patch-level deps (#40369) Co-authored-by: Guilherme Gazzo --- apps/meteor/package.json | 6 +- apps/uikit-playground/package.json | 2 +- packages/gazzodown/package.json | 2 +- packages/jest-presets/package.json | 2 +- packages/livechat/package.json | 4 +- packages/ui-client/package.json | 2 +- packages/web-ui-registration/package.json | 2 +- yarn.lock | 524 +++++++++------------- 8 files changed, 223 insertions(+), 321 deletions(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 156cfc30e3e90..2a8e2a19e37b2 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -163,7 +163,7 @@ "@slack/rtm-api": "~7.0.4", "@tanstack/react-query": "~5.65.1", "@types/meteor": "^2.9.11", - "@xmldom/xmldom": "~0.8.12", + "@xmldom/xmldom": "~0.8.13", "adm-zip": "0.5.17", "ajv": "^8.17.1", "ajv-formats": "~3.0.1", @@ -192,7 +192,7 @@ "date-fns": "~4.1.0", "date.js": "~0.3.3", "debug": "~4.3.7", - "dompurify": "~3.4.0", + "dompurify": "~3.4.1", "drachtio-srf": "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch", "ejson": "^2.2.3", "emailreplyparser": "^0.0.5", @@ -229,7 +229,7 @@ "jschardet": "^3.1.4", "jsdom": "^26.1.0", "json-2-csv": "^5.5.10", - "jsrsasign": "^11.1.2", + "jsrsasign": "^11.1.3", "juice": "^8.1.0", "katex": "~0.16.45", "ldap-escape": "^2.0.6", diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json index b6a99cad6102b..7e65d7b2a6dd6 100644 --- a/apps/uikit-playground/package.json +++ b/apps/uikit-playground/package.json @@ -50,7 +50,7 @@ "@vitejs/plugin-react": "~6.0.1", "eslint": "~9.39.4", "typescript": "~5.9.3", - "vite": "^8.0.8" + "vite": "^8.0.9" }, "volta": { "extends": "../../package.json" diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index 5d7eda5ce0d5a..1682393059194 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "date-fns": "~4.1.0", - "dompurify": "~3.4.0", + "dompurify": "~3.4.1", "highlight.js": "11.8.0", "react-error-boundary": "^3.1.4", "react-stately": "~3.17.0" diff --git a/packages/jest-presets/package.json b/packages/jest-presets/package.json index 74440be701afd..218e44e3c7b66 100644 --- a/packages/jest-presets/package.json +++ b/packages/jest-presets/package.json @@ -27,7 +27,7 @@ "lint": "eslint ." }, "dependencies": { - "@swc/core": "1.15.26", + "@swc/core": "1.15.30", "@swc/jest": "~0.2.39", "@testing-library/jest-dom": "~6.8.0", "@types/jest-axe": "~3.5.9", diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 408844b50a871..696ac06168cee 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -37,7 +37,7 @@ "ajv-formats": "^3.0.1", "css-vars-ponyfill": "^2.4.9", "date-fns": "~4.1.0", - "dompurify": "~3.4.0", + "dompurify": "~3.4.1", "emoji-mart": "^3.0.1", "history": "~5.3.0", "i18next": "~23.4.9", @@ -81,7 +81,7 @@ "desvg-loader": "^0.1.0", "eslint": "~9.39.4", "file-loader": "^6.2.0", - "html-webpack-plugin": "~5.6.6", + "html-webpack-plugin": "~5.6.7", "if-env": "^1.0.4", "lorem-ipsum": "^2.0.8", "mini-css-extract-plugin": "~2.9.4", diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index c057c9c1e6dcf..ba78cb725c51a 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@rocket.chat/onboarding-ui": "~0.36.2", - "dompurify": "~3.4.0" + "dompurify": "~3.4.1" }, "devDependencies": { "@react-aria/toolbar": "^3.0.0-nightly.5042", diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index a9cf65a74aeb5..d91c265212f4b 100644 --- a/packages/web-ui-registration/package.json +++ b/packages/web-ui-registration/package.json @@ -17,7 +17,7 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "dompurify": "~3.4.0" + "dompurify": "~3.4.1" }, "devDependencies": { "@rocket.chat/core-typings": "workspace:~", diff --git a/yarn.lock b/yarn.lock index 3d463721bc850..20912a937e52b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4315,15 +4315,6 @@ __metadata: languageName: node linkType: hard -"@internationalized/date@npm:^3.12.1": - version: 3.12.1 - resolution: "@internationalized/date@npm:3.12.1" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/a8178a73e65cb86357008e39e589bf5899b47a4ebd6123d96b54e3b19aade31c136d8e5f9c48c4627110f26d857e15aa4be9e189e56386a4b26c616df4ea1795 - languageName: node - linkType: hard - "@internationalized/date@npm:^3.7.0": version: 3.7.0 resolution: "@internationalized/date@npm:3.7.0" @@ -4352,15 +4343,6 @@ __metadata: languageName: node linkType: hard -"@internationalized/number@npm:^3.6.6": - version: 3.6.6 - resolution: "@internationalized/number@npm:3.6.6" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/7a7c8290a91bae3c1b22ab006c036b50f041162a383446360d0dd8194aa491a370057df1b2aa2cdfbccefd335cf6f4679e14608f5c24031b6852375654fa59df - languageName: node - linkType: hard - "@internationalized/string@npm:^3.2.5": version: 3.2.5 resolution: "@internationalized/string@npm:3.2.5" @@ -4370,15 +4352,6 @@ __metadata: languageName: node linkType: hard -"@internationalized/string@npm:^3.2.8": - version: 3.2.8 - resolution: "@internationalized/string@npm:3.2.8" - dependencies: - "@swc/helpers": "npm:^0.5.0" - checksum: 10/2054baf8b2d5f32c7904b5a584e724d00ae781b3efb22c113c18d6a604f700569faf006be28929032831972272693d7dd863d324550a7385068715e3a67b8a56 - languageName: node - linkType: hard - "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -5462,7 +5435,7 @@ __metadata: languageName: node linkType: hard -"@napi-rs/wasm-runtime@npm:^1.1.3": +"@napi-rs/wasm-runtime@npm:^1.1.4": version: 1.1.4 resolution: "@napi-rs/wasm-runtime@npm:1.1.4" dependencies: @@ -6318,10 +6291,10 @@ __metadata: languageName: node linkType: hard -"@oxc-project/types@npm:=0.124.0": - version: 0.124.0 - resolution: "@oxc-project/types@npm:0.124.0" - checksum: 10/d40ca0769b19b327b89fca30c9c224aace1b696e8b4f5adc2c67ee711e17401d532fdcfe49b8903916e8749ea67b572d3c470045279e27d26ac39af7bf1fc611 +"@oxc-project/types@npm:=0.126.0": + version: 0.126.0 + resolution: "@oxc-project/types@npm:0.126.0" + checksum: 10/b4d7d350728381916acfd81549021d075c2456e4de64229b0402ae8f9531a2d44f928c835b99da3a589ff1e32c133da1f0c0e2229cc32f62a62e5752b6bd728b languageName: node linkType: hard @@ -6965,20 +6938,7 @@ __metadata: languageName: node linkType: hard -"@react-aria/focus@npm:^3.0.0-nightly-fb28ab3b4-241024": - version: 3.22.0 - resolution: "@react-aria/focus@npm:3.22.0" - dependencies: - "@swc/helpers": "npm:^0.5.0" - react-aria: "npm:3.48.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/6467625ad37e4dd6f16669145f19ef75a44134364bd116959369407f1b3ff309f86fc25610b4e7c3736a1a4befd178112429749fad505b944e11cec25e3847c1 - languageName: node - linkType: hard - -"@react-aria/focus@npm:^3.19.1": +"@react-aria/focus@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-aria/focus@npm:^3.19.1": version: 3.19.1 resolution: "@react-aria/focus@npm:3.19.1" dependencies: @@ -7596,21 +7556,7 @@ __metadata: languageName: node linkType: hard -"@react-aria/utils@npm:^3.0.0-nightly-fb28ab3b4-241024": - version: 3.34.0 - resolution: "@react-aria/utils@npm:3.34.0" - dependencies: - "@swc/helpers": "npm:^0.5.0" - react-aria: "npm:3.48.0" - react-stately: "npm:3.46.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/55a120c1b33510bd18154128f8e6c7ca17de38d3950e474c92d2cd154f01c2db9c3248103d6183330f8793db47a138e02fb40ce1763736aea469f3a15d673de9 - languageName: node - linkType: hard - -"@react-aria/utils@npm:^3.27.0": +"@react-aria/utils@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-aria/utils@npm:^3.27.0": version: 3.27.0 resolution: "@react-aria/utils@npm:3.27.0" dependencies: @@ -8658,7 +8604,7 @@ __metadata: languageName: node linkType: hard -"@react-types/shared@npm:^3.0.0-nightly-fb28ab3b4-241024, @react-types/shared@npm:^3.34.0": +"@react-types/shared@npm:^3.0.0-nightly-fb28ab3b4-241024": version: 3.34.0 resolution: "@react-types/shared@npm:3.34.0" peerDependencies: @@ -9506,7 +9452,7 @@ __metadata: "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" date-fns: "npm:~4.1.0" - dompurify: "npm:~3.4.0" + dompurify: "npm:~3.4.1" eslint: "npm:~9.39.4" highlight.js: "npm:11.8.0" i18next: "npm:~23.4.9" @@ -9604,7 +9550,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/jest-presets@workspace:packages/jest-presets" dependencies: - "@swc/core": "npm:1.15.26" + "@swc/core": "npm:1.15.30" "@swc/jest": "npm:~0.2.39" "@testing-library/jest-dom": "npm:~6.8.0" "@types/identity-obj-proxy": "npm:^3.0.2" @@ -9708,12 +9654,12 @@ __metadata: cssnano: "npm:^7.0.7" date-fns: "npm:~4.1.0" desvg-loader: "npm:^0.1.0" - dompurify: "npm:~3.4.0" + dompurify: "npm:~3.4.1" emoji-mart: "npm:^3.0.1" eslint: "npm:~9.39.4" file-loader: "npm:^6.2.0" history: "npm:~5.3.0" - html-webpack-plugin: "npm:~5.6.6" + html-webpack-plugin: "npm:~5.6.7" i18next: "npm:~23.4.9" if-env: "npm:^1.0.4" lorem-ipsum: "npm:^2.0.8" @@ -10072,7 +10018,7 @@ __metadata: "@types/underscore": "npm:^1.13.0" "@types/xml-crypto": "npm:~1.4.6" "@types/xml-encryption": "npm:~1.2.4" - "@xmldom/xmldom": "npm:~0.8.12" + "@xmldom/xmldom": "npm:~0.8.13" adm-zip: "npm:0.5.17" ajv: "npm:^8.17.1" ajv-formats: "npm:~3.0.1" @@ -10112,7 +10058,7 @@ __metadata: date.js: "npm:~0.3.3" debug: "npm:~4.3.7" docker-compose: "npm:^0.24.8" - dompurify: "npm:~3.4.0" + dompurify: "npm:~3.4.1" drachtio-srf: "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch" ejson: "npm:^2.2.3" emailreplyparser: "npm:^0.0.5" @@ -10155,7 +10101,7 @@ __metadata: jsdom: "npm:^26.1.0" jsdom-global: "npm:^3.0.2" json-2-csv: "npm:^5.5.10" - jsrsasign: "npm:^11.1.2" + jsrsasign: "npm:^11.1.3" juice: "npm:^8.1.0" katex: "npm:~0.16.45" ldap-escape: "npm:^2.0.6" @@ -10960,7 +10906,7 @@ __metadata: "@types/jest": "npm:~30.0.0" "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - dompurify: "npm:~3.4.0" + dompurify: "npm:~3.4.1" eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" jest: "npm:~30.2.0" @@ -11251,7 +11197,7 @@ __metadata: react-virtuoso: "npm:~4.12.8" reactflow: "npm:^11.11.4" typescript: "npm:~5.9.3" - vite: "npm:^8.0.8" + vite: "npm:^8.0.9" languageName: unknown linkType: soft @@ -11285,7 +11231,7 @@ __metadata: "@testing-library/react": "npm:~16.3.2" "@types/react": "npm:~18.3.28" "@types/react-dom": "npm:~18.3.7" - dompurify: "npm:~3.4.0" + dompurify: "npm:~3.4.1" eslint: "npm:~9.39.4" i18next: "npm:~23.4.9" react: "npm:~18.3.1" @@ -11307,119 +11253,119 @@ __metadata: languageName: unknown linkType: soft -"@rolldown/binding-android-arm64@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.15" +"@rolldown/binding-android-arm64@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-android-arm64@npm:1.0.0-rc.16" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.15" +"@rolldown/binding-darwin-arm64@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-darwin-arm64@npm:1.0.0-rc.16" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.15" +"@rolldown/binding-darwin-x64@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-darwin-x64@npm:1.0.0-rc.16" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.15" +"@rolldown/binding-freebsd-x64@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-freebsd-x64@npm:1.0.0-rc.16" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.15" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.0.0-rc.16" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.15" +"@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.0.0-rc.16" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.15" +"@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.0.0-rc.16" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.15" +"@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.0.0-rc.16" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.15" +"@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.0.0-rc.16" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.15" +"@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.0.0-rc.16" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.15" +"@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.0.0-rc.16" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.15" +"@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.0.0-rc.16" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.15" +"@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-wasm32-wasi@npm:1.0.0-rc.16" dependencies: "@emnapi/core": "npm:1.9.2" "@emnapi/runtime": "npm:1.9.2" - "@napi-rs/wasm-runtime": "npm:^1.1.3" + "@napi-rs/wasm-runtime": "npm:^1.1.4" conditions: cpu=wasm32 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.15" +"@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.0.0-rc.16" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.15" +"@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.0.0-rc.16" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rolldown/pluginutils@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "@rolldown/pluginutils@npm:1.0.0-rc.15" - checksum: 10/528e6c4ebe43cc64daa1b068b23aac3df5de1aa152842f842c00d343dc4505603133f1f4e95c761551bca42fcf8506063d955c27d3b7ca748b6426d11d1e9fb5 +"@rolldown/pluginutils@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "@rolldown/pluginutils@npm:1.0.0-rc.16" + checksum: 10/81d2b15b548375efbd63824c817def7ffe5e8f9949ccc5b5e0a15b8b01bf236a1e3f89d614e19aceb0fd8ee2796bc912fd8ba7652d21b9a29cd60e2741b1180e languageName: node linkType: hard @@ -13000,16 +12946,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-darwin-arm64@npm:1.15.26" +"@swc/core-darwin-arm64@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-darwin-arm64@npm:1.15.3" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-darwin-arm64@npm:1.15.3" +"@swc/core-darwin-arm64@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-darwin-arm64@npm:1.15.30" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -13021,16 +12967,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-darwin-x64@npm:1.15.26" +"@swc/core-darwin-x64@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-darwin-x64@npm:1.15.3" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-darwin-x64@npm:1.15.3" +"@swc/core-darwin-x64@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-darwin-x64@npm:1.15.30" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -13042,16 +12988,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.26" +"@swc/core-linux-arm-gnueabihf@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.3" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.3" +"@swc/core-linux-arm-gnueabihf@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.15.30" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -13063,16 +13009,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-arm64-gnu@npm:1.15.26" +"@swc/core-linux-arm64-gnu@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm64-gnu@npm:1.15.3" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-linux-arm64-gnu@npm:1.15.3" +"@swc/core-linux-arm64-gnu@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-arm64-gnu@npm:1.15.30" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -13084,30 +13030,30 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-arm64-musl@npm:1.15.26" +"@swc/core-linux-arm64-musl@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-arm64-musl@npm:1.15.3" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-linux-arm64-musl@npm:1.15.3" +"@swc/core-linux-arm64-musl@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-arm64-musl@npm:1.15.30" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-ppc64-gnu@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-ppc64-gnu@npm:1.15.26" +"@swc/core-linux-ppc64-gnu@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-ppc64-gnu@npm:1.15.30" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-s390x-gnu@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-s390x-gnu@npm:1.15.26" +"@swc/core-linux-s390x-gnu@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-s390x-gnu@npm:1.15.30" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard @@ -13119,16 +13065,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-x64-gnu@npm:1.15.26" +"@swc/core-linux-x64-gnu@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-x64-gnu@npm:1.15.3" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-linux-x64-gnu@npm:1.15.3" +"@swc/core-linux-x64-gnu@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-x64-gnu@npm:1.15.30" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -13140,16 +13086,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-linux-x64-musl@npm:1.15.26" +"@swc/core-linux-x64-musl@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-linux-x64-musl@npm:1.15.3" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-linux-x64-musl@npm:1.15.3" +"@swc/core-linux-x64-musl@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-linux-x64-musl@npm:1.15.30" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -13161,16 +13107,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-win32-arm64-msvc@npm:1.15.26" +"@swc/core-win32-arm64-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-arm64-msvc@npm:1.15.3" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-win32-arm64-msvc@npm:1.15.3" +"@swc/core-win32-arm64-msvc@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-win32-arm64-msvc@npm:1.15.30" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -13182,16 +13128,16 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-win32-ia32-msvc@npm:1.15.26" +"@swc/core-win32-ia32-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-ia32-msvc@npm:1.15.3" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-win32-ia32-msvc@npm:1.15.3" +"@swc/core-win32-ia32-msvc@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-win32-ia32-msvc@npm:1.15.30" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -13203,36 +13149,36 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core-win32-x64-msvc@npm:1.15.26" +"@swc/core-win32-x64-msvc@npm:1.15.3": + version: 1.15.3 + resolution: "@swc/core-win32-x64-msvc@npm:1.15.3" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.15.3": - version: 1.15.3 - resolution: "@swc/core-win32-x64-msvc@npm:1.15.3" +"@swc/core-win32-x64-msvc@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core-win32-x64-msvc@npm:1.15.30" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:1.15.26": - version: 1.15.26 - resolution: "@swc/core@npm:1.15.26" +"@swc/core@npm:1.15.30": + version: 1.15.30 + resolution: "@swc/core@npm:1.15.30" dependencies: - "@swc/core-darwin-arm64": "npm:1.15.26" - "@swc/core-darwin-x64": "npm:1.15.26" - "@swc/core-linux-arm-gnueabihf": "npm:1.15.26" - "@swc/core-linux-arm64-gnu": "npm:1.15.26" - "@swc/core-linux-arm64-musl": "npm:1.15.26" - "@swc/core-linux-ppc64-gnu": "npm:1.15.26" - "@swc/core-linux-s390x-gnu": "npm:1.15.26" - "@swc/core-linux-x64-gnu": "npm:1.15.26" - "@swc/core-linux-x64-musl": "npm:1.15.26" - "@swc/core-win32-arm64-msvc": "npm:1.15.26" - "@swc/core-win32-ia32-msvc": "npm:1.15.26" - "@swc/core-win32-x64-msvc": "npm:1.15.26" + "@swc/core-darwin-arm64": "npm:1.15.30" + "@swc/core-darwin-x64": "npm:1.15.30" + "@swc/core-linux-arm-gnueabihf": "npm:1.15.30" + "@swc/core-linux-arm64-gnu": "npm:1.15.30" + "@swc/core-linux-arm64-musl": "npm:1.15.30" + "@swc/core-linux-ppc64-gnu": "npm:1.15.30" + "@swc/core-linux-s390x-gnu": "npm:1.15.30" + "@swc/core-linux-x64-gnu": "npm:1.15.30" + "@swc/core-linux-x64-musl": "npm:1.15.30" + "@swc/core-win32-arm64-msvc": "npm:1.15.30" + "@swc/core-win32-ia32-msvc": "npm:1.15.30" + "@swc/core-win32-x64-msvc": "npm:1.15.30" "@swc/counter": "npm:^0.1.3" "@swc/types": "npm:^0.1.26" peerDependencies: @@ -13265,7 +13211,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 10/88c4df005a0c3e17319491528b2e971257bf547ca1fceb97546a2727169c8fc4ecd40c7743111d2f8cb7ace4aefaf528353421b87c6a419ff4d64a1a9113e1ee + checksum: 10/4b021a9203dcc2896c71dda267a9668c7b7edf8927292df7025f527374f4d05bb6fb29cde8472368aa8b35ae56ead1dc102eac1f1f2c7bb4bffcb184029146ea languageName: node linkType: hard @@ -16075,10 +16021,10 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:~0.8.12": - version: 0.8.12 - resolution: "@xmldom/xmldom@npm:0.8.12" - checksum: 10/0fc20bc72a057a939ed17afc3fb35d6be2eb19e42aa9ba3c78aa8bdf471da0b4b17c2710581ce6a2cd68ce3995c2ee7d689593a70a26df1273c0c9c29dfca257 +"@xmldom/xmldom@npm:~0.8.13": + version: 0.8.13 + resolution: "@xmldom/xmldom@npm:0.8.13" + checksum: 10/f8f3d56fa91d5026885c0c5c00b07eae47647bda0d742ecbf8e51e06bb287ab30222977b20529ee15c364031606225ebca58907a8ecc76a3add6b3f10e6ddfc6 languageName: node linkType: hard @@ -16576,15 +16522,6 @@ __metadata: languageName: node linkType: hard -"aria-hidden@npm:^1.2.3": - version: 1.2.6 - resolution: "aria-hidden@npm:1.2.6" - dependencies: - tslib: "npm:^2.0.0" - checksum: 10/1914e5a36225dccdb29f0b88cc891eeca736cdc5b0c905ab1437b90b28b5286263ed3a221c75b7dc788f25b942367be0044b2ac8ccf073a72e07a50b1d964202 - languageName: node - linkType: hard - "aria-query@npm:5.3.0": version: 5.3.0 resolution: "aria-query@npm:5.3.0" @@ -20717,15 +20654,15 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:~3.4.0": - version: 3.4.0 - resolution: "dompurify@npm:3.4.0" +"dompurify@npm:~3.4.1": + version: 3.4.1 + resolution: "dompurify@npm:3.4.1" dependencies: "@types/trusted-types": "npm:^2.0.7" dependenciesMeta: "@types/trusted-types": optional: true - checksum: 10/ead40b78ec51cd451f2c74fada4233ee0afeafdbab54af2f4a4bd5d4d138ac04d0d85140e79f533803ecfd1c3758edc1176087039c1e7217824f9794a9d34d2c + checksum: 10/dcaf945376eff2a61841b205501b163b2c8ae9afe7251e68276b561d9fcf943cefc67e2631fdeae080b52a8b37c96e6beb7e6ae80ad8a83692ff67965dd6b4db languageName: node linkType: hard @@ -24235,9 +24172,9 @@ __metadata: languageName: node linkType: hard -"html-webpack-plugin@npm:~5.6.6": - version: 5.6.6 - resolution: "html-webpack-plugin@npm:5.6.6" +"html-webpack-plugin@npm:~5.6.7": + version: 5.6.7 + resolution: "html-webpack-plugin@npm:5.6.7" dependencies: "@types/html-minifier-terser": "npm:^6.0.0" html-minifier-terser: "npm:^6.0.2" @@ -24252,7 +24189,7 @@ __metadata: optional: true webpack: optional: true - checksum: 10/819ebee079466029a771236fdadcbcfe0aaf110eac1b74c0983a0318a7f99f3c69adcf1d617e218769a8c8e96ea17de2df30759bd950ec391d0c5676d480894e + checksum: 10/fc81e1c2d3ef5d709b700b53bb31feef200a08d9b31a819d4623c80dcf412245939a9d6014e574dc5bed7388b3119e29d047d9e712c4889b8d7270dc25990a8d languageName: node linkType: hard @@ -27151,10 +27088,10 @@ __metadata: languageName: node linkType: hard -"jsrsasign@npm:^11.1.2": - version: 11.1.2 - resolution: "jsrsasign@npm:11.1.2" - checksum: 10/4ceca195b1f338031699366a2f947a3819c3c8d68d723e8c1c071f7412e4ae2135d123793b1eae2449d3872444e513e4239dc242f337312dcf70670946d6344d +"jsrsasign@npm:^11.1.3": + version: 11.1.3 + resolution: "jsrsasign@npm:11.1.3" + checksum: 10/fbe7ef29a8cd45fa78008a979a559367b87908e7fb79b3cd81f12b93754ed1c8c794fa8c6baf2d088767f77291cfd0e3da4188115c6492122801dc81a49dde01 languageName: node linkType: hard @@ -31707,25 +31644,25 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.5.6": - version: 8.5.6 - resolution: "postcss@npm:8.5.6" +"postcss@npm:^8.5.10": + version: 8.5.10 + resolution: "postcss@npm:8.5.10" dependencies: nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/9e4fbe97574091e9736d0e82a591e29aa100a0bf60276a926308f8c57249698935f35c5d2f4e80de778d0cbb8dcffab4f383d85fd50c5649aca421c3df729b86 + checksum: 10/7eac6169e535b63c8412e94d4f6047fc23efa3e9dde804b541940043c831b25f1cd867d83cd2c4371ad2450c8abcb42c208aa25668c1f0f3650d7f72faf711a8 languageName: node linkType: hard -"postcss@npm:^8.5.8": - version: 8.5.8 - resolution: "postcss@npm:8.5.8" +"postcss@npm:^8.5.6": + version: 8.5.6 + resolution: "postcss@npm:8.5.6" dependencies: nanoid: "npm:^3.3.11" picocolors: "npm:^1.1.1" source-map-js: "npm:^1.2.1" - checksum: 10/cbacbfd7f767e2c820d4bf09a3a744834dd7d14f69ff08d1f57b1a7defce9ae5efcf31981890d9697a972a64e9965de677932ef28e4c8ba23a87aad45b82c459 + checksum: 10/9e4fbe97574091e9736d0e82a591e29aa100a0bf60276a926308f8c57249698935f35c5d2f4e80de778d0cbb8dcffab4f383d85fd50c5649aca421c3df729b86 languageName: node linkType: hard @@ -32525,26 +32462,6 @@ __metadata: languageName: node linkType: hard -"react-aria@npm:3.48.0": - version: 3.48.0 - resolution: "react-aria@npm:3.48.0" - dependencies: - "@internationalized/date": "npm:^3.12.1" - "@internationalized/number": "npm:^3.6.6" - "@internationalized/string": "npm:^3.2.8" - "@react-types/shared": "npm:^3.34.0" - "@swc/helpers": "npm:^0.5.0" - aria-hidden: "npm:^1.2.3" - clsx: "npm:^2.0.0" - react-stately: "npm:3.46.0" - use-sync-external-store: "npm:^1.6.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/e70ba3a21f99967daffcb7399e6c4cc33fe9ae0ba4b13216ac3fbc150f37416d882b68ecd52f3c59852b87ef61a1c4b184066083d699d5afda1ad8b38fab8b99 - languageName: node - linkType: hard - "react-aria@patch:react-aria@npm%3A3.37.0#~/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch": version: 3.37.0 resolution: "react-aria@patch:react-aria@npm%3A3.37.0#~/.yarn/patches/react-aria-npm-3.37.0-83959bd2fa.patch::version=3.37.0&hash=e69ffb" @@ -32886,22 +32803,6 @@ __metadata: languageName: node linkType: hard -"react-stately@npm:3.46.0": - version: 3.46.0 - resolution: "react-stately@npm:3.46.0" - dependencies: - "@internationalized/date": "npm:^3.12.1" - "@internationalized/number": "npm:^3.6.6" - "@internationalized/string": "npm:^3.2.8" - "@react-types/shared": "npm:^3.34.0" - "@swc/helpers": "npm:^0.5.0" - use-sync-external-store: "npm:^1.6.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1 - checksum: 10/ee2d8b0633c6ba82eb159197ddaaeb0832d318c6ed1304c7e14273d0c3dc3156c48aef0c8cf4207481dbca1cf054c6726c42c089259605213d1f08f35bebf321 - languageName: node - linkType: hard - "react-stately@patch:react-stately@npm%3A3.17.0#~/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch": version: 3.17.0 resolution: "react-stately@patch:react-stately@npm%3A3.17.0#~/.yarn/patches/react-stately-npm-3.17.0-264cc7a43c.patch::version=3.17.0&hash=e13f63" @@ -33848,27 +33749,27 @@ __metadata: languageName: unknown linkType: soft -"rolldown@npm:1.0.0-rc.15": - version: 1.0.0-rc.15 - resolution: "rolldown@npm:1.0.0-rc.15" - dependencies: - "@oxc-project/types": "npm:=0.124.0" - "@rolldown/binding-android-arm64": "npm:1.0.0-rc.15" - "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.15" - "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.15" - "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.15" - "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.15" - "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.15" - "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.15" - "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.15" - "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.15" - "@rolldown/pluginutils": "npm:1.0.0-rc.15" +"rolldown@npm:1.0.0-rc.16": + version: 1.0.0-rc.16 + resolution: "rolldown@npm:1.0.0-rc.16" + dependencies: + "@oxc-project/types": "npm:=0.126.0" + "@rolldown/binding-android-arm64": "npm:1.0.0-rc.16" + "@rolldown/binding-darwin-arm64": "npm:1.0.0-rc.16" + "@rolldown/binding-darwin-x64": "npm:1.0.0-rc.16" + "@rolldown/binding-freebsd-x64": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-arm64-gnu": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-arm64-musl": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-s390x-gnu": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-x64-gnu": "npm:1.0.0-rc.16" + "@rolldown/binding-linux-x64-musl": "npm:1.0.0-rc.16" + "@rolldown/binding-openharmony-arm64": "npm:1.0.0-rc.16" + "@rolldown/binding-wasm32-wasi": "npm:1.0.0-rc.16" + "@rolldown/binding-win32-arm64-msvc": "npm:1.0.0-rc.16" + "@rolldown/binding-win32-x64-msvc": "npm:1.0.0-rc.16" + "@rolldown/pluginutils": "npm:1.0.0-rc.16" dependenciesMeta: "@rolldown/binding-android-arm64": optional: true @@ -33902,7 +33803,7 @@ __metadata: optional: true bin: rolldown: bin/cli.mjs - checksum: 10/cc07a103297573690bad1469e96e282230f9eb1acc4e22bf3318294bf5b5221d475d1c0822be6fe4958c5618983cac70fb0155afe510ab51516a053564c9304a + checksum: 10/064ef08cbd171842da7595db7519bb5b7ca2a620b4481338716f2d494353c01511efbb01e93805de649e8cba2898b8ed7814193381ca1edd5b9883f51caf0865 languageName: node linkType: hard @@ -36306,6 +36207,16 @@ __metadata: languageName: node linkType: hard +"tinyglobby@npm:^0.2.16": + version: 0.2.16 + resolution: "tinyglobby@npm:0.2.16" + dependencies: + fdir: "npm:^6.5.0" + picomatch: "npm:^4.0.4" + checksum: 10/5c2c41b572ada38449e7c86a5fe034f204a1dbba577225a761a14f29f48dc3f2fc0d81a6c56fcc67c5a742cc3aa9fb5e2ca18dbf22b610b0bc0e549b34d5a0f8 + languageName: node + linkType: hard + "tinykeys@npm:^1.4.0": version: 1.4.0 resolution: "tinykeys@npm:1.4.0" @@ -37527,15 +37438,6 @@ __metadata: languageName: node linkType: hard -"use-sync-external-store@npm:^1.6.0": - version: 1.6.0 - resolution: "use-sync-external-store@npm:1.6.0" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10/b40ad2847ba220695bff2d4ba4f4d60391c0fb4fb012faa7a4c18eb38b69181936f5edc55a522c4d20a788d1a879b73c3810952c9d0fd128d01cb3f22042c09e - languageName: node - linkType: hard - "utf7@npm:>=1.0.2": version: 1.0.2 resolution: "utf7@npm:1.0.2" @@ -37765,16 +37667,16 @@ __metadata: languageName: node linkType: hard -"vite@npm:^8.0.8": - version: 8.0.8 - resolution: "vite@npm:8.0.8" +"vite@npm:^8.0.9": + version: 8.0.9 + resolution: "vite@npm:8.0.9" dependencies: fsevents: "npm:~2.3.3" lightningcss: "npm:^1.32.0" picomatch: "npm:^4.0.4" - postcss: "npm:^8.5.8" - rolldown: "npm:1.0.0-rc.15" - tinyglobby: "npm:^0.2.15" + postcss: "npm:^8.5.10" + rolldown: "npm:1.0.0-rc.16" + tinyglobby: "npm:^0.2.16" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 "@vitejs/devtools": ^0.1.0 @@ -37818,7 +37720,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10/07a74ec338a9f309c4a2d003a17289d7054086260ed3fe3e2ff9bf377e5bf4701919f44b7312917aa2a8fcc8189fd4a545799a1945d68fcdc8a1e61f20c19bf8 + checksum: 10/745ff66e6d6379d93172cf03c2788db73b83b3f6ad7980456be5d523daf38ee2397d15d266e1acad5afbab950709081e640b447e3ce8a32f0e06856f37253a08 languageName: node linkType: hard From daacbd1ba7be2ac02c0007c11cbd7f2ab4036cb0 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 18:52:33 +0200 Subject: [PATCH 04/69] chore(deps): bump xmldom and related deps (#40370) Co-authored-by: Julio Araujo --- .../update-version-durability/package.json | 2 +- .../server/lib/parsers/Response.ts | 6 ++++-- apps/meteor/package.json | 2 +- package.json | 4 +++- yarn.lock | 18 +++++++++--------- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/.github/actions/update-version-durability/package.json b/.github/actions/update-version-durability/package.json index 6c325f04320f2..ba7dee8a6c92d 100644 --- a/.github/actions/update-version-durability/package.json +++ b/.github/actions/update-version-durability/package.json @@ -16,6 +16,6 @@ "colors": "^1.4.0", "diff": "^5.1.0", "semver": "^7.5.4", - "@xmldom/xmldom": "^0.8.10" + "@xmldom/xmldom": "^0.8.13" } } diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts index 87aeb4ad9f6c8..f4363278b3d6b 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts @@ -208,7 +208,9 @@ export class ResponseParser { let newXml = null; if (typeof encAssertion !== 'undefined') { - const options = { key: this.serviceProviderOptions.privateKey }; + // disallowDecryptionWithInsecureAlgorithm defaults to true in xml-encryption v4, but AES-CBC/3DES + // are still widely used by SAML IdPs in practice, so we keep the pre-v4 behaviour here. + const options = { key: this.serviceProviderOptions.privateKey, disallowDecryptionWithInsecureAlgorithm: false }; const encData = encAssertion.getElementsByTagNameNS('*', 'EncryptedData')[0]; xmlenc.decrypt(encData, options, (err, result) => { if (err) { @@ -350,7 +352,7 @@ export class ResponseParser { const encSubject = assertion.getElementsByTagNameNS('urn:oasis:names:tc:SAML:2.0:assertion', 'EncryptedID')[0]; if (typeof encSubject !== 'undefined') { - const options = { key: this.serviceProviderOptions.privateKey }; + const options = { key: this.serviceProviderOptions.privateKey, disallowDecryptionWithInsecureAlgorithm: false }; xmlenc.decrypt(encSubject.getElementsByTagNameNS('*', 'EncryptedData')[0], options, (err, result) => { if (err) { SAMLUtils.error({ err }); diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 2a8e2a19e37b2..192ed09c2e6d0 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -306,7 +306,7 @@ "universal-perf-hooks": "^1.0.1", "webdav": "^4.11.5", "xml-crypto": "~3.2.1", - "xml-encryption": "~3.1.0", + "xml-encryption": "~4.0.0", "xml2js": "~0.6.2", "yaqrcode": "^0.2.1", "yoga-layout": "patch:yoga-layout@npm%3A3.2.1#~/.yarn/patches/yoga-layout-npm-3.2.1-51ec934670.patch", diff --git a/package.json b/package.json index 8fd5d52caf3ad..2aaba7e5e9ae2 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,9 @@ "zod@npm:~4.3.6": "patch:zod@npm%3A4.3.6#~/.yarn/patches/zod-npm-4.3.6-a096e305e6.patch", "@react-aria/i18n@npm:^3.0.0-nightly-fb28ab3b4-241024": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch", "@react-aria/i18n@npm:^3.12.5": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch", - "@react-aria/toolbar@npm:^3.0.0-nightly.5042": "3.0.0-nightly-fb28ab3b4-241024" + "@react-aria/toolbar@npm:^3.0.0-nightly.5042": "3.0.0-nightly-fb28ab3b4-241024", + "xml-crypto/@xmldom/xmldom": "0.8.13", + "xml-encryption/@xmldom/xmldom": "0.8.13" }, "dependencies": { "@types/stream-buffers": "^3.0.8", diff --git a/yarn.lock b/yarn.lock index 20912a937e52b..2cc3284bd55fb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10210,7 +10210,7 @@ __metadata: webdav: "npm:^4.11.5" webpack: "npm:~5.104.1" xml-crypto: "npm:~3.2.1" - xml-encryption: "npm:~3.1.0" + xml-encryption: "npm:~4.0.0" xml2js: "npm:~0.6.2" yaqrcode: "npm:^0.2.1" yoga-layout: "patch:yoga-layout@npm%3A3.2.1#~/.yarn/patches/yoga-layout-npm-3.2.1-51ec934670.patch" @@ -16014,10 +16014,10 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.8.5, @xmldom/xmldom@npm:^0.8.8": - version: 0.8.10 - resolution: "@xmldom/xmldom@npm:0.8.10" - checksum: 10/62400bc5e0e75b90650e33a5ceeb8d94829dd11f9b260962b71a784cd014ddccec3e603fe788af9c1e839fa4648d8c521ebd80d8b752878d3a40edabc9ce7ccf +"@xmldom/xmldom@npm:0.8.13": + version: 0.8.13 + resolution: "@xmldom/xmldom@npm:0.8.13" + checksum: 10/f8f3d56fa91d5026885c0c5c00b07eae47647bda0d742ecbf8e51e06bb287ab30222977b20529ee15c364031606225ebca58907a8ecc76a3add6b3f10e6ddfc6 languageName: node linkType: hard @@ -38419,14 +38419,14 @@ __metadata: languageName: node linkType: hard -"xml-encryption@npm:~3.1.0": - version: 3.1.0 - resolution: "xml-encryption@npm:3.1.0" +"xml-encryption@npm:~4.0.0": + version: 4.0.0 + resolution: "xml-encryption@npm:4.0.0" dependencies: "@xmldom/xmldom": "npm:^0.8.5" escape-html: "npm:^1.0.3" xpath: "npm:0.0.32" - checksum: 10/c84c1e11692181c24a1c30123fed4fa31015c58994bbdcf091f07fa79f0fb809774b1533d191c4739bf76bb0fb95f223d393e84cc48417480a1896b2b689373b + checksum: 10/319f5c0c591a5600f5f6846c9b27a69e6ecd7d4a2215cfb9ffac37490143d48239652097eae6ff33a0d55f8b534c03caa09e75ee260d89d3d1bc26802c1cfc36 languageName: node linkType: hard From f90b4f7162a844a61f250592f5b3cf836962fbdc Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 19:38:21 +0200 Subject: [PATCH 05/69] chore(deps): bump form-data via resolutions (#40372) Co-authored-by: Julio Araujo --- package.json | 6 ++- .../__snapshots__/PeerInfo.spec.tsx.snap | 24 +++++++++- yarn.lock | 45 +++++++------------ 3 files changed, 43 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 2aaba7e5e9ae2..4c411a14792fa 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,11 @@ "@react-aria/i18n@npm:^3.12.5": "patch:@react-aria/i18n@npm%3A3.12.5#~/.yarn/patches/@react-aria-i18n-npm-3.12.5-435edff786.patch", "@react-aria/toolbar@npm:^3.0.0-nightly.5042": "3.0.0-nightly-fb28ab3b4-241024", "xml-crypto/@xmldom/xmldom": "0.8.13", - "xml-encryption/@xmldom/xmldom": "0.8.13" + "xml-encryption/@xmldom/xmldom": "0.8.13", + "form-data@npm:^2.5.0": "2.5.5", + "form-data@npm:^4.0.0": "4.0.5", + "form-data@npm:^4.0.4": "4.0.5", + "form-data@npm:^4.0.5": "4.0.5" }, "dependencies": { "@types/stream-buffers": "^3.0.8", diff --git a/packages/ui-voip/src/components/PeerInfo/__snapshots__/PeerInfo.spec.tsx.snap b/packages/ui-voip/src/components/PeerInfo/__snapshots__/PeerInfo.spec.tsx.snap index 0a22340e852b1..d4eaaf3f67d1e 100644 --- a/packages/ui-voip/src/components/PeerInfo/__snapshots__/PeerInfo.spec.tsx.snap +++ b/packages/ui-voip/src/components/PeerInfo/__snapshots__/PeerInfo.spec.tsx.snap @@ -39,7 +39,17 @@ exports[`renders InternalUser without crashing 1`] = `
@@ -97,7 +107,17 @@ exports[`renders InternalUserWithRemoteStatus without crashing 1`] = `
diff --git a/yarn.lock b/yarn.lock index 2cc3284bd55fb..65c1af34ea091 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23026,43 +23026,21 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^2.5.0": - version: 2.5.2 - resolution: "form-data@npm:2.5.2" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.6" - mime-types: "npm:^2.1.12" - safe-buffer: "npm:^5.2.1" - checksum: 10/ef602e52f0bfcc8f8c346b8783f6dbd2fb271596788d42cf929dddaa50bd61e97da21f01464b4524e77872682264765e53c75ac1ab1466ea23f5c96de585faff - languageName: node - linkType: hard - -"form-data@npm:^4.0.0": - version: 4.0.0 - resolution: "form-data@npm:4.0.0" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.8" - mime-types: "npm:^2.1.12" - checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805 - languageName: node - linkType: hard - -"form-data@npm:^4.0.4": - version: 4.0.4 - resolution: "form-data@npm:4.0.4" +"form-data@npm:2.5.5": + version: 2.5.5 + resolution: "form-data@npm:2.5.5" dependencies: asynckit: "npm:^0.4.0" combined-stream: "npm:^1.0.8" es-set-tostringtag: "npm:^2.1.0" hasown: "npm:^2.0.2" - mime-types: "npm:^2.1.12" - checksum: 10/a4b62e21932f48702bc468cc26fb276d186e6b07b557e3dd7cc455872bdbb82db7db066844a64ad3cf40eaf3a753c830538183570462d3649fdfd705601cbcfb + mime-types: "npm:^2.1.35" + safe-buffer: "npm:^5.2.1" + checksum: 10/4b6a8d07bb67089da41048e734215f68317a8e29dd5385a972bf5c458a023313c69d3b5d6b8baafbb7f808fa9881e0e2e030ffe61e096b3ddc894c516401271d languageName: node linkType: hard -"form-data@npm:^4.0.5": +"form-data@npm:4.0.5": version: 4.0.5 resolution: "form-data@npm:4.0.5" dependencies: @@ -32194,6 +32172,15 @@ __metadata: languageName: node linkType: hard +"qs@npm:^6.9.4": + version: 6.15.1 + resolution: "qs@npm:6.15.1" + dependencies: + side-channel: "npm:^1.1.0" + checksum: 10/ec10b9957446b3f4a38000940f6374720b4e2985209b89df197066038c951472ea24cd98d6bc6df73a0cbec75bc056f638032e3fb447345017ff7e0f0a2693ac + languageName: node + linkType: hard + "qs@npm:~6.5.2": version: 6.5.3 resolution: "qs@npm:6.5.3" From 3380efee1fb3f0c3ea23e05c711a2daa15f7812e Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 20:52:58 +0200 Subject: [PATCH 06/69] chore(deps): bump several dependencies (elliptic, pbkdf2, fast-xml-parser etc) and replace twit (#40371) Co-authored-by: Julio Araujo --- apps/meteor/app/lib/server/oauth/twitter.js | 20 +- apps/meteor/package.json | 2 +- package.json | 8 +- yarn.lock | 385 ++++---------------- 4 files changed, 82 insertions(+), 333 deletions(-) diff --git a/apps/meteor/app/lib/server/oauth/twitter.js b/apps/meteor/app/lib/server/oauth/twitter.js index b3394332a037e..bbdf1403a74cf 100644 --- a/apps/meteor/app/lib/server/oauth/twitter.js +++ b/apps/meteor/app/lib/server/oauth/twitter.js @@ -1,5 +1,5 @@ import { Match, check } from 'meteor/check'; -import Twit from 'twit'; +import { TwitterApi } from 'twitter-api-v2'; import _ from 'underscore'; import { registerAccessTokenService } from './oauth'; @@ -7,19 +7,17 @@ import { registerAccessTokenService } from './oauth'; const whitelistedFields = ['id', 'name', 'description', 'profile_image_url', 'profile_image_url_https', 'lang', 'email']; const getIdentity = async function (accessToken, appId, appSecret, accessTokenSecret) { - const Twitter = new Twit({ - consumer_key: appId, - consumer_secret: appSecret, - access_token: accessToken, - access_token_secret: accessTokenSecret, + const client = new TwitterApi({ + appKey: appId, + appSecret, + accessToken, + accessSecret: accessTokenSecret, }); try { - const result = await Twitter.get('account/verify_credentials.json?include_email=true'); - - return result.data; + return await client.v1.verifyCredentials({ include_email: true }); } catch (err) { - throw _.extend(new Error(`Failed to fetch identity from Twwiter. ${err.message}`), { - response: err.response, + throw _.extend(new Error(`Failed to fetch identity from Twitter. ${err.message}`), { + data: err.data ?? err.response, }); } }; diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 192ed09c2e6d0..2a542db939e99 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -299,7 +299,7 @@ "tsyringe": "^4.10.0", "tweetnacl": "^1.0.3", "twilio": "~5.4.5", - "twit": "^2.2.11", + "twitter-api-v2": "^1.29.0", "typia": "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch", "ua-parser-js": "~1.0.41", "underscore": "^1.13.8", diff --git a/package.json b/package.json index 4c411a14792fa..76e04d0823927 100644 --- a/package.json +++ b/package.json @@ -39,11 +39,15 @@ "adm-zip": "0.5.9", "brace-expansion@npm:^2.0.1": "^2.0.3", "brace-expansion@npm:^5.0.2": "^5.0.5", + "@meteorjs/crypto-browserify/pbkdf2": "3.1.3", + "browserify-sign/elliptic": "6.6.1", + "create-ecdh/elliptic": "6.6.1", + "parse-asn1/pbkdf2": "3.1.3", "cross-spawn": "7.0.6", "drachtio-srf": "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch", - "fast-xml-parser@npm:^4.2.4": "^4.5.5", - "fast-xml-parser@npm:^4.4.1": "^4.5.5", "fast-xml-parser@npm:5.3.6": "^5.5.7", + "is-svg/fast-xml-parser": "5.5.11", + "webdav/fast-xml-parser": "5.5.11", "follow-redirects": "^1.16.0", "handlebars": "^4.7.9", "lodash": "^4.18.0", diff --git a/yarn.lock b/yarn.lock index 65c1af34ea091..6473eb0000b52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10201,7 +10201,7 @@ __metadata: tsyringe: "npm:^4.10.0" tweetnacl: "npm:^1.0.3" twilio: "npm:~5.4.5" - twit: "npm:^2.2.11" + twitter-api-v2: "npm:^1.29.0" typescript: "npm:~5.9.3" typia: "patch:typia@npm%3A9.7.2#~/.yarn/patches/typia-npm-9.7.2-5c5d9c80b4.patch" ua-parser-js: "npm:~1.0.41" @@ -16014,14 +16014,7 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:0.8.13": - version: 0.8.13 - resolution: "@xmldom/xmldom@npm:0.8.13" - checksum: 10/f8f3d56fa91d5026885c0c5c00b07eae47647bda0d742ecbf8e51e06bb287ab30222977b20529ee15c364031606225ebca58907a8ecc76a3add6b3f10e6ddfc6 - languageName: node - linkType: hard - -"@xmldom/xmldom@npm:~0.8.13": +"@xmldom/xmldom@npm:0.8.13, @xmldom/xmldom@npm:~0.8.13": version: 0.8.13 resolution: "@xmldom/xmldom@npm:0.8.13" checksum: 10/f8f3d56fa91d5026885c0c5c00b07eae47647bda0d742ecbf8e51e06bb287ab30222977b20529ee15c364031606225ebca58907a8ecc76a3add6b3f10e6ddfc6 @@ -16246,7 +16239,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": +"ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -16769,7 +16762,7 @@ __metadata: languageName: node linkType: hard -"asn1@npm:^0.2.4, asn1@npm:~0.2.3": +"asn1@npm:^0.2.4": version: 0.2.6 resolution: "asn1@npm:0.2.6" dependencies: @@ -16789,7 +16782,7 @@ __metadata: languageName: node linkType: hard -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": +"assert-plus@npm:^1.0.0": version: 1.0.0 resolution: "assert-plus@npm:1.0.0" checksum: 10/f4f991ae2df849cc678b1afba52d512a7cbf0d09613ba111e72255409ff9158550c775162a47b12d015d1b82b3c273e8e25df0e4783d3ddb008a293486d00a07 @@ -16925,20 +16918,6 @@ __metadata: languageName: node linkType: hard -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: 10/2ac497d739f71be3264cf096a33ab256a1fea7fe80b87dc51ec29374505bd5a661279ef1c22989d68528ea61ed634021ca63b31cf1d3c2a3682ffc106f7d0e96 - languageName: node - linkType: hard - -"aws4@npm:^1.8.0": - version: 1.11.0 - resolution: "aws4@npm:1.11.0" - checksum: 10/54886f07b3f9555f7f3ae9fb2aef7abbac302e892263ec4d9901f4502e667bb302a0639672f6bc8453033102ddd2512b79886a7de417dc0c24ecce003a888297 - languageName: node - linkType: hard - "axe-core@npm:4.10.2": version: 4.10.2 resolution: "axe-core@npm:4.10.2" @@ -17489,15 +17468,6 @@ __metadata: languageName: node linkType: hard -"bcrypt-pbkdf@npm:^1.0.0": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" - dependencies: - tweetnacl: "npm:^0.14.3" - checksum: 10/13a4cde058250dbf1fa77a4f1b9a07d32ae2e3b9e28e88a0c7a1827835bc3482f3e478c4a0cfd4da6ff0c46dae07da1061123a995372b32cc563d9975f975404 - languageName: node - linkType: hard - "bcrypt@npm:^5.1.1": version: 5.1.1 resolution: "bcrypt@npm:5.1.1" @@ -17588,13 +17558,6 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.1.5": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 10/007c7bad22c5d799c8dd49c85b47d012a1fe3045be57447721e6afbd1d5be43237af1db62e26cb9b0d9ba812d2e4ca3bac82f6d7e016b6b88de06ee25ceb96e7 - languageName: node - linkType: hard - "blueimp-md5@npm:^2.16.0": version: 2.19.0 resolution: "blueimp-md5@npm:2.19.0" @@ -18241,13 +18204,6 @@ __metadata: languageName: node linkType: hard -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20 - languageName: node - linkType: hard - "chai-as-promised@npm:^7.1.2": version: 7.1.2 resolution: "chai-as-promised@npm:7.1.2" @@ -18874,7 +18830,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": +"combined-stream@npm:^1.0.8": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -19250,7 +19206,7 @@ __metadata: languageName: node linkType: hard -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": +"create-hash@npm:^1.1.0, create-hash@npm:^1.2.0": version: 1.2.0 resolution: "create-hash@npm:1.2.0" dependencies: @@ -19263,7 +19219,19 @@ __metadata: languageName: node linkType: hard -"create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": +"create-hash@npm:~1.1.3": + version: 1.1.3 + resolution: "create-hash@npm:1.1.3" + dependencies: + cipher-base: "npm:^1.0.1" + inherits: "npm:^2.0.1" + ripemd160: "npm:^2.0.0" + sha.js: "npm:^2.4.0" + checksum: 10/b9f675719321dd3a3c3540bb46afcbdaf7182366ce93da9265318290e928be881e5edeff8c48a5ee9263c342e5e3f705fad5eb48f2e2cddc5fed1eb54077e076 + languageName: node + linkType: hard + +"create-hmac@npm:^1.1.7": version: 1.1.7 resolution: "create-hmac@npm:1.1.7" dependencies: @@ -19878,15 +19846,6 @@ __metadata: languageName: node linkType: hard -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" - dependencies: - assert-plus: "npm:^1.0.0" - checksum: 10/137b287fa021201ce100cef772c8eeeaaafdd2aa7282864022acf3b873021e54cb809e9c060fa164840bf54ff72d00d6e2d8da1ee5a86d7200eeefa1123a8f7f - languageName: node - linkType: hard - "data-urls@npm:^5.0.0": version: 5.0.0 resolution: "data-urls@npm:5.0.0" @@ -20813,16 +20772,6 @@ __metadata: languageName: node linkType: hard -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" - dependencies: - jsbn: "npm:~0.1.0" - safer-buffer: "npm:^2.1.0" - checksum: 10/d43591f2396196266e186e6d6928038cc11c76c3699a912cb9c13757060f7bbc7f17f47c4cb16168cdeacffc7965aef021142577e646fb3cb88810c15173eb57 - languageName: node - linkType: hard - "ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": version: 1.0.11 resolution: "ecdsa-sig-formatter@npm:1.0.11" @@ -20867,9 +20816,9 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": - version: 6.6.0 - resolution: "elliptic@npm:6.6.0" +"elliptic@npm:6.6.1": + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: "npm:^4.11.9" brorand: "npm:^1.1.0" @@ -20878,7 +20827,7 @@ __metadata: inherits: "npm:^2.0.4" minimalistic-assert: "npm:^1.0.1" minimalistic-crypto-utils: "npm:^1.0.1" - checksum: 10/27575b0403e010e5d7e7a131fcadce6a7dd1ae82ccb24cc7c20b275d32ab1cb7ecb6a070225795df08407441dc8c7a32efd986596d48d1d6846f64ff8f094af7 + checksum: 10/dc678c9febd89a219c4008ba3a9abb82237be853d9fd171cd602c8fb5ec39927e65c6b5e7a1b2a4ea82ee8e0ded72275e7932bb2da04a5790c2638b818e4e1c5 languageName: node linkType: hard @@ -22385,7 +22334,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:^3.0.0, extend@npm:^3.0.1, extend@npm:^3.0.2, extend@npm:~3.0.2": +"extend@npm:^3.0.0, extend@npm:^3.0.1, extend@npm:^3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 10/59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e @@ -22410,13 +22359,6 @@ __metadata: languageName: node linkType: hard -"extsprintf@npm:1.3.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: 10/26967d6c7ecbfb5bc5b7a6c43503dc5fafd9454802037e9fa1665e41f615da4ff5918bd6cb871a3beabed01a31eca1ccd0bdfb41231f50ad50d405a430f78377 - languageName: node - linkType: hard - "extsprintf@npm:^1.2.0": version: 1.4.1 resolution: "extsprintf@npm:1.4.1" @@ -22525,18 +22467,7 @@ __metadata: languageName: node linkType: hard -"fast-xml-parser@npm:^4.5.5": - version: 4.5.6 - resolution: "fast-xml-parser@npm:4.5.6" - dependencies: - strnum: "npm:^1.0.5" - bin: - fxparser: src/cli/cli.js - checksum: 10/dd77cce4b1b322400339147b72b2d315bddc12c6ed3ca82bfc87543ced6dd8d81a6e0b429489e2f048f39258aa2023580654c8934881c633b9d58a6e79672349 - languageName: node - linkType: hard - -"fast-xml-parser@npm:^5.3.4": +"fast-xml-parser@npm:5.5.11, fast-xml-parser@npm:^5.3.4": version: 5.5.11 resolution: "fast-xml-parser@npm:5.5.11" dependencies: @@ -22996,13 +22927,6 @@ __metadata: languageName: node linkType: hard -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 10/c1e1644d5e074ac063ecbc3fb8582013ef91fff0e3fa41e76db23d2f62bc6d9677aac86db950917deed4fe1fdd772df780cfaa352075f23deec9c015313afb97 - languageName: node - linkType: hard - "fork-ts-checker-webpack-plugin@npm:^8.0.0": version: 8.0.0 resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" @@ -23053,17 +22977,6 @@ __metadata: languageName: node linkType: hard -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: "npm:^0.4.0" - combined-stream: "npm:^1.0.6" - mime-types: "npm:^2.1.12" - checksum: 10/1b6f3ccbf4540e535887b42218a2431a3f6cfdea320119c2affa2a7a374ad8fdd1e60166fc865181f45d49b1684c3e90e7b2190d3fe016692957afb9cf0d0d02 - languageName: node - linkType: hard - "formidable@npm:^3.5.4": version: 3.5.4 resolution: "formidable@npm:3.5.4" @@ -23385,15 +23298,6 @@ __metadata: languageName: node linkType: hard -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" - dependencies: - assert-plus: "npm:^1.0.0" - checksum: 10/ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 - languageName: node - linkType: hard - "github-from-package@npm:0.0.0": version: 0.0.0 resolution: "github-from-package@npm:0.0.0" @@ -23733,23 +23637,6 @@ __metadata: languageName: node linkType: hard -"har-schema@npm:^2.0.0": - version: 2.0.0 - resolution: "har-schema@npm:2.0.0" - checksum: 10/d8946348f333fb09e2bf24cc4c67eabb47c8e1d1aa1c14184c7ffec1140a49ec8aa78aa93677ae452d71d5fc0fdeec20f0c8c1237291fc2bcb3f502a5d204f9b - languageName: node - linkType: hard - -"har-validator@npm:~5.1.3": - version: 5.1.5 - resolution: "har-validator@npm:5.1.5" - dependencies: - ajv: "npm:^6.12.3" - har-schema: "npm:^2.0.0" - checksum: 10/b998a7269ca560d7f219eedc53e2c664cd87d487e428ae854a6af4573fc94f182fe9d2e3b92ab968249baec7ebaf9ead69cf975c931dc2ab282ec182ee988280 - languageName: node - linkType: hard - "hard-rejection@npm:^2.1.0": version: 2.1.0 resolution: "hard-rejection@npm:2.1.0" @@ -23842,6 +23729,15 @@ __metadata: languageName: node linkType: hard +"hash-base@npm:^2.0.0": + version: 2.0.2 + resolution: "hash-base@npm:2.0.2" + dependencies: + inherits: "npm:^2.0.1" + checksum: 10/e39f3f2bb91679ed350bd2eb81035acb1e1e6e9bb86d9f1197fcfdc3cf39a2c56bf82a1870f000fae651477883b4c107fd6ac0c640a18ab06298b87c39939396 + languageName: node + linkType: hard + "hash-base@npm:^3.0.0": version: 3.1.0 resolution: "hash-base@npm:3.1.0" @@ -24354,17 +24250,6 @@ __metadata: languageName: node linkType: hard -"http-signature@npm:~1.2.0": - version: 1.2.0 - resolution: "http-signature@npm:1.2.0" - dependencies: - assert-plus: "npm:^1.0.0" - jsprim: "npm:^1.2.2" - sshpk: "npm:^1.7.0" - checksum: 10/2ff7112e6b0d8f08b382dfe705078c655501f2ddd76cf589d108445a9dd388a0a9be928c37108261519a7f53e6bbd1651048d74057b804807cce1ec49e87a95b - languageName: node - linkType: hard - "https-browserify@npm:^1.0.0": version: 1.0.0 resolution: "https-browserify@npm:1.0.0" @@ -25291,7 +25176,7 @@ __metadata: languageName: node linkType: hard -"is-typedarray@npm:^1.0.0, is-typedarray@npm:~1.0.0": +"is-typedarray@npm:^1.0.0": version: 1.0.0 resolution: "is-typedarray@npm:1.0.0" checksum: 10/4b433bfb0f9026f079f4eb3fbaa4ed2de17c9995c3a0b5c800bec40799b4b2a8b4e051b1ada77749deb9ded4ae52fe2096973f3a93ff83df1a5a7184a669478c @@ -25429,13 +25314,6 @@ __metadata: languageName: node linkType: hard -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 10/22d9c181015226d4534a227539256897bbbcb7edd1066ca4fc4d3a06dbd976325dfdd16b3983c7d236a89f256805c1a685a772e0364e98873d3819b064ad35a1 - languageName: node - linkType: hard - "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": version: 3.2.0 resolution: "istanbul-lib-coverage@npm:3.2.0" @@ -26803,13 +26681,6 @@ __metadata: languageName: node linkType: hard -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: 10/5450133242845100e694f0ef9175f44c012691a9b770b2571e677314e6f70600abb10777cdfc9a0c6a9f2ac6d134577403633de73e2fcd0f97875a67744e2d14 - languageName: node - linkType: hard - "jschardet@npm:^3.1.4": version: 3.1.4 resolution: "jschardet@npm:3.1.4" @@ -26938,13 +26809,6 @@ __metadata: languageName: node linkType: hard -"json-schema@npm:0.4.0": - version: 0.4.0 - resolution: "json-schema@npm:0.4.0" - checksum: 10/8b3b64eff4a807dc2a3045b104ed1b9335cd8d57aa74c58718f07f0f48b8baa3293b00af4dcfbdc9144c3aafea1e97982cc27cc8e150fc5d93c540649507a458 - languageName: node - linkType: hard - "json-stable-stringify-without-jsonify@npm:^1.0.1": version: 1.0.1 resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" @@ -26952,13 +26816,6 @@ __metadata: languageName: node linkType: hard -"json-stringify-safe@npm:~5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 10/59169a081e4eeb6f9559ae1f938f656191c000e0512aa6df9f3c8b2437a4ab1823819c6b9fd1818a4e39593ccfd72e9a051fdd3e2d1e340ed913679e888ded8c - languageName: node - linkType: hard - "json5@npm:^1.0.2": version: 1.0.2 resolution: "json5@npm:1.0.2" @@ -27054,18 +26911,6 @@ __metadata: languageName: node linkType: hard -"jsprim@npm:^1.2.2": - version: 1.4.2 - resolution: "jsprim@npm:1.4.2" - dependencies: - assert-plus: "npm:1.0.0" - extsprintf: "npm:1.3.0" - json-schema: "npm:0.4.0" - verror: "npm:1.10.0" - checksum: 10/df2bf234eab1b5078d01bcbff3553d50a243f7b5c10a169745efeda6344d62798bd1d85bcca6a8446f3b5d0495e989db45f9de8dae219f0f9796e70e0c776089 - languageName: node - linkType: hard - "jsrsasign@npm:^11.1.3": version: 11.1.3 resolution: "jsrsasign@npm:11.1.3" @@ -28507,7 +28352,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:^2.1.35, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -28525,7 +28370,7 @@ __metadata: languageName: node linkType: hard -"mime@npm:1.6.0, mime@npm:^1.3.4": +"mime@npm:1.6.0": version: 1.6.0 resolution: "mime@npm:1.6.0" bin: @@ -29773,13 +29618,6 @@ __metadata: languageName: node linkType: hard -"oauth-sign@npm:~0.9.0": - version: 0.9.0 - resolution: "oauth-sign@npm:0.9.0" - checksum: 10/1809a366d258f41fdf4ab5310cff3d1e15f96b187503bc7333cef4351de7bd0f52cb269bc95800f1fae5fb04dd886287df1471985fd67e8484729fdbcf857119 - languageName: node - linkType: hard - "object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -30637,16 +30475,17 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.1.2": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" +"pbkdf2@npm:3.1.3": + version: 3.1.3 + resolution: "pbkdf2@npm:3.1.3" dependencies: - create-hash: "npm:^1.1.2" - create-hmac: "npm:^1.1.4" - ripemd160: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - sha.js: "npm:^2.4.8" - checksum: 10/40bdf30df1c9bb1ae41ec50c11e480cf0d36484b7c7933bf55e4451d1d0e3f09589df70935c56e7fccc5702779a0d7b842d012be8c08a187b44eb24d55bb9460 + create-hash: "npm:~1.1.3" + create-hmac: "npm:^1.1.7" + ripemd160: "npm:=2.0.1" + safe-buffer: "npm:^5.2.1" + sha.js: "npm:^2.4.11" + to-buffer: "npm:^1.2.0" + checksum: 10/980cf2977aa84ec3166fde195a28464ab494131c0a5778fc8f20b8894410747e502159c19ef2b41842c728bc52ba49ffee6847e3ee61ac0d482689f85d8a1b30 languageName: node linkType: hard @@ -32004,7 +31843,7 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.28, psl@npm:^1.10.0": +"psl@npm:^1.10.0": version: 1.10.0 resolution: "psl@npm:1.10.0" dependencies: @@ -32051,7 +31890,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0, punycode@npm:^2.3.1": +"punycode@npm:^2.1.0, punycode@npm:^2.3.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: 10/febdc4362bead22f9e2608ff0171713230b57aff9dddc1c273aa2a651fbd366f94b7d6a71d78342a7c0819906750351ca7f2edd26ea41b626d87d6a13d1bd059 @@ -32172,22 +32011,6 @@ __metadata: languageName: node linkType: hard -"qs@npm:^6.9.4": - version: 6.15.1 - resolution: "qs@npm:6.15.1" - dependencies: - side-channel: "npm:^1.1.0" - checksum: 10/ec10b9957446b3f4a38000940f6374720b4e2985209b89df197066038c951472ea24cd98d6bc6df73a0cbec75bc056f638032e3fb447345017ff7e0f0a2693ac - languageName: node - linkType: hard - -"qs@npm:~6.5.2": - version: 6.5.3 - resolution: "qs@npm:6.5.3" - checksum: 10/485c990fba7ad17671e16c92715fb064c1600337738f5d140024eb33a49fbc1ed31890d3db850117c760caeb9c9cc9f4ba22a15c20dd119968e41e3d3fe60b28 - languageName: node - linkType: hard - "query-string@npm:^7.1.3": version: 7.1.3 resolution: "query-string@npm:7.1.3" @@ -33324,34 +33147,6 @@ __metadata: languageName: node linkType: hard -"request@npm:^2.68.0": - version: 2.88.2 - resolution: "request@npm:2.88.2" - dependencies: - aws-sign2: "npm:~0.7.0" - aws4: "npm:^1.8.0" - caseless: "npm:~0.12.0" - combined-stream: "npm:~1.0.6" - extend: "npm:~3.0.2" - forever-agent: "npm:~0.6.1" - form-data: "npm:~2.3.2" - har-validator: "npm:~5.1.3" - http-signature: "npm:~1.2.0" - is-typedarray: "npm:~1.0.0" - isstream: "npm:~0.1.2" - json-stringify-safe: "npm:~5.0.1" - mime-types: "npm:~2.1.19" - oauth-sign: "npm:~0.9.0" - performance-now: "npm:^2.1.0" - qs: "npm:~6.5.2" - safe-buffer: "npm:^5.1.2" - tough-cookie: "npm:~2.5.0" - tunnel-agent: "npm:^0.6.0" - uuid: "npm:^3.3.2" - checksum: 10/005b8b237b56f1571cfd4ecc09772adaa2e82dcb884fc14ea2bb25e23dbf7c2009f9929e0b6d3fd5802e33ed8ee705a3b594c8f9467c1458cd973872bf89db8e - languageName: node - linkType: hard - "require-addon@npm:^1.1.0": version: 1.1.0 resolution: "require-addon@npm:1.1.0" @@ -33652,6 +33447,16 @@ __metadata: languageName: node linkType: hard +"ripemd160@npm:=2.0.1": + version: 2.0.1 + resolution: "ripemd160@npm:2.0.1" + dependencies: + hash-base: "npm:^2.0.0" + inherits: "npm:^2.0.1" + checksum: 10/f1a20b72b3ef897a981544c72a1fe15c2bd580f6f40e3062f7839af8e81232f746aa860964686e4b81e90929ad086f14823a9864e4e4bed3367e597fe14a0968 + languageName: node + linkType: hard + "ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": version: 2.0.2 resolution: "ripemd160@npm:2.0.2" @@ -33888,7 +33693,7 @@ __metadata: languageName: node linkType: hard -"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": +"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" checksum: 10/7eaf7a0cf37cc27b42fb3ef6a9b1df6e93a1c6d98c6c6702b02fe262d5fcbd89db63320793b99b21cb5348097d0a53de81bd5f4e8b86e20cc9412e3f1cfb4e83 @@ -34356,7 +34161,7 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.12": +"sha.js@npm:^2.4.11, sha.js@npm:^2.4.12": version: 2.4.12 resolution: "sha.js@npm:2.4.12" dependencies: @@ -34953,27 +34758,6 @@ __metadata: languageName: node linkType: hard -"sshpk@npm:^1.7.0": - version: 1.17.0 - resolution: "sshpk@npm:1.17.0" - dependencies: - asn1: "npm:~0.2.3" - assert-plus: "npm:^1.0.0" - bcrypt-pbkdf: "npm:^1.0.0" - dashdash: "npm:^1.12.0" - ecc-jsbn: "npm:~0.1.1" - getpass: "npm:^0.1.1" - jsbn: "npm:~0.1.0" - safer-buffer: "npm:^2.0.2" - tweetnacl: "npm:~0.14.0" - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: 10/668c2a279a6ce66fd739ce5684e37927dd75427cc020c828a208f85890a4c400705d4ba09f32fa44efca894339dc6931941664f6f6ba36dfa543de6d006cbe9c - languageName: node - linkType: hard - "ssri@npm:^10.0.0": version: 10.0.6 resolution: "ssri@npm:10.0.6" @@ -35447,13 +35231,6 @@ __metadata: languageName: node linkType: hard -"strnum@npm:^1.0.5": - version: 1.0.5 - resolution: "strnum@npm:1.0.5" - checksum: 10/d3117975db8372d4d7b2c07601ed2f65bf21cc48d741f37a8617b76370d228f2ec26336e53791ebc3638264d23ca54e6c241f57f8c69bd4941c63c79440525ca - languageName: node - linkType: hard - "strnum@npm:^2.2.3": version: 2.2.3 resolution: "strnum@npm:2.2.3" @@ -36346,16 +36123,6 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:~2.5.0": - version: 2.5.0 - resolution: "tough-cookie@npm:2.5.0" - dependencies: - psl: "npm:^1.1.28" - punycode: "npm:^2.1.1" - checksum: 10/024cb13a4d1fe9af57f4323dff765dd9b217cc2a69be77e3b8a1ca45600aa33a097b6ad949f225d885e904f4bd3ceccef104741ef202d8378e6ca78e850ff82f - languageName: node - linkType: hard - "tr46@npm:^4.1.1": version: 4.1.1 resolution: "tr46@npm:4.1.1" @@ -36725,13 +36492,6 @@ __metadata: languageName: node linkType: hard -"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": - version: 0.14.5 - resolution: "tweetnacl@npm:0.14.5" - checksum: 10/04ee27901cde46c1c0a64b9584e04c96c5fe45b38c0d74930710751ea991408b405747d01dfae72f80fc158137018aea94f9c38c651cb9c318f0861a310c3679 - languageName: node - linkType: hard - "twilio@npm:~5.4.5": version: 5.4.5 resolution: "twilio@npm:5.4.5" @@ -36747,14 +36507,10 @@ __metadata: languageName: node linkType: hard -"twit@npm:^2.2.11": - version: 2.2.11 - resolution: "twit@npm:2.2.11" - dependencies: - bluebird: "npm:^3.1.5" - mime: "npm:^1.3.4" - request: "npm:^2.68.0" - checksum: 10/e9a82693d1dccd31c7ba328a8242f7a241c3230178baae8e6aa80437fec6b2578f043485fa104a3306e5f2ab7925abdb220076ae4e88526547f129b6fc152aa5 +"twitter-api-v2@npm:^1.29.0": + version: 1.29.0 + resolution: "twitter-api-v2@npm:1.29.0" + checksum: 10/b0b4113219ca1722e59c9e52cf831bba8869238597914e8a16fbb4b57fae63aec7a7fa6754152897bc1119611f073f13657077e62ec332a8d9465ba7c16365be languageName: node linkType: hard @@ -37512,15 +37268,6 @@ __metadata: languageName: node linkType: hard -"uuid@npm:^3.3.2": - version: 3.4.0 - resolution: "uuid@npm:3.4.0" - bin: - uuid: ./bin/uuid - checksum: 10/4f2b86432b04cc7c73a0dd1bcf11f1fc18349d65d2e4e32dd0fc658909329a1e0cc9244aa93f34c0cccfdd5ae1af60a149251a5f420ec3ac4223a3dab198fb2e - languageName: node - linkType: hard - "uuid@npm:^8.0.0, uuid@npm:^8.3.2": version: 8.3.2 resolution: "uuid@npm:8.3.2" From 5a755a33bb184806eb3820167e3b3177fd9d1fdb Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 3 May 2026 21:43:14 +0200 Subject: [PATCH 07/69] chore(deps): bump swiper, sha.js, and cipher-base (#40373) Co-authored-by: Julio Araujo --- .../swiper-npm-11.1.14-8126fa478a.patch | 62 ------------------- apps/meteor/.storybook/main.ts | 4 -- apps/meteor/package.json | 2 +- apps/meteor/tsconfig.json | 2 + package.json | 8 ++- yarn.lock | 55 +++++++--------- 6 files changed, 34 insertions(+), 99 deletions(-) delete mode 100644 .yarn/patches/swiper-npm-11.1.14-8126fa478a.patch diff --git a/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch b/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch deleted file mode 100644 index b70fd3bb9d266..0000000000000 --- a/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff --git a/package.json b/package.json -index 9f37b1dd9e3ea128aafb0ceef83641e864474308..795e15b1b008596f0a278ff43cb1103794c10d9d 100644 ---- a/package.json -+++ b/package.json -@@ -24,6 +24,7 @@ - "default": "./swiper-bundle.mjs" - }, - "./css": "./swiper.css", -+ "./swiper.css": "./swiper.css", - "./css/bundle": "./swiper-bundle.css", - "./swiper-bundle.css": "./swiper-bundle.css", - "./css/a11y": "./modules/a11y.css", -@@ -49,6 +50,7 @@ - "./css/thumbs": "./modules/thumbs.css", - "./css/virtual": "./modules/virtual.css", - "./css/zoom": "./modules/zoom.css", -+ "./modules/zoom.css": "./modules/zoom.css", - "./less": "./swiper.less", - "./less/a11y": "./modules/a11y.less", - "./less/autoplay": "./modules/autoplay.less", -@@ -136,6 +138,10 @@ - "types": "./swiper-react.d.ts", - "default": "./swiper-react.mjs" - }, -+ "./swiper-react.mjs": { -+ "types": "./swiper-react.d.ts", -+ "default": "./swiper-react.mjs" -+ }, - "./vue": { - "types": "./swiper-vue.d.ts", - "default": "./swiper-vue.mjs" -@@ -144,6 +150,10 @@ - "types": "./types/modules/index.d.ts", - "default": "./modules/index.mjs" - }, -+ "./modules/index.mjs": { -+ "types": "./types/modules/index.d.ts", -+ "default": "./modules/index.mjs" -+ }, - "./types": "./types/index.d.ts", - "./package.json": "./package.json" - }, -@@ -152,6 +162,9 @@ - "modules": [ - "./types/modules/index.d.ts" - ], -+ "modules/index.mjs": [ -+ "./types/modules/index.d.ts" -+ ], - "element": [ - "./swiper-element.d.ts" - ], -@@ -161,6 +174,9 @@ - "react": [ - "./swiper-react.d.ts" - ], -+ "swiper-react.mjs": [ -+ "./swiper-react.d.ts" -+ ], - "vue": [ - "./swiper-vue.d.ts" - ] diff --git a/apps/meteor/.storybook/main.ts b/apps/meteor/.storybook/main.ts index 4a2a93be5e7bc..f3e6bb831c797 100644 --- a/apps/meteor/.storybook/main.ts +++ b/apps/meteor/.storybook/main.ts @@ -29,10 +29,6 @@ export default { // 'react/jsx-runtime': require.resolve('../../../node_modules/react/jsx-runtime'), '@tanstack/react-query': require.resolve('../../../node_modules/@tanstack/react-query'), '@rocket.chat/fuselage$': require.resolve('../../../node_modules/@rocket.chat/fuselage'), - 'swiper/swiper.css$': 'swiper/css', - 'swiper/modules/navigation/navigation.min.css$': 'swiper/css/navigation', - 'swiper/modules/keyboard/keyboard.min.css$': 'swiper/css/keyboard', - 'swiper/modules/zoom/zoom.min.css$': 'swiper/css/zoom', }, // This is only needed because of Fontello roots: [...(config.resolve?.roots ?? []), resolve(__dirname, '../../../apps/meteor/public')], diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 2a542db939e99..e790e0974e331 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -293,7 +293,7 @@ "string-strip-html": "^8.5.0", "swagger-ui-express": "^5.0.1", "swc-plugin-coverage-instrument": "0.0.32", - "swiper": "patch:swiper@npm%3A11.1.14#~/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch", + "swiper": "12.1.3", "textarea-caret": "^3.1.0", "tinykeys": "^1.4.0", "tsyringe": "^4.10.0", diff --git a/apps/meteor/tsconfig.json b/apps/meteor/tsconfig.json index 63c8c8223e387..fe2531c58832d 100644 --- a/apps/meteor/tsconfig.json +++ b/apps/meteor/tsconfig.json @@ -23,6 +23,8 @@ /* Support absolute /imports/* with a leading '/' */ "/*": ["*"], "meteor/*": ["./node_modules/@types/meteor/*", ".meteor/local/types/packages.d.ts"], + "swiper/modules/index.mjs": ["./node_modules/swiper/types/modules/index.d.ts"], + "swiper/swiper-react.mjs": ["./node_modules/swiper/swiper-react.d.ts"], }, "preserveSymlinks": true, diff --git a/package.json b/package.json index 76e04d0823927..9123f3717f26c 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,13 @@ "form-data@npm:^2.5.0": "2.5.5", "form-data@npm:^4.0.0": "4.0.5", "form-data@npm:^4.0.4": "4.0.5", - "form-data@npm:^4.0.5": "4.0.5" + "form-data@npm:^4.0.5": "4.0.5", + "browserify-aes/cipher-base": "1.0.7", + "browserify-des/cipher-base": "1.0.7", + "create-hash/cipher-base": "1.0.7", + "create-hmac/cipher-base": "1.0.7", + "create-hash/sha.js": "2.4.12", + "create-hmac/sha.js": "2.4.12" }, "dependencies": { "@types/stream-buffers": "^3.0.8", diff --git a/yarn.lock b/yarn.lock index 6473eb0000b52..681fe374c4cc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10192,7 +10192,7 @@ __metadata: supports-color: "npm:~7.2.0" swagger-ui-express: "npm:^5.0.1" swc-plugin-coverage-instrument: "npm:0.0.32" - swiper: "patch:swiper@npm%3A11.1.14#~/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch" + swiper: "npm:12.1.3" template-file: "npm:^6.0.1" textarea-caret: "npm:^3.1.0" tinykeys: "npm:^1.4.0" @@ -18570,13 +18570,14 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" +"cipher-base@npm:1.0.7": + version: 1.0.7 + resolution: "cipher-base@npm:1.0.7" dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - checksum: 10/3d5d6652ca499c3f7c5d7fdc2932a357ec1e5aa84f2ad766d850efd42e89753c97b795c3a104a8e7ae35b4e293f5363926913de3bf8181af37067d9d541ca0db + inherits: "npm:^2.0.4" + safe-buffer: "npm:^5.2.1" + to-buffer: "npm:^1.2.2" + checksum: 10/9501d2241b7968aaae74fc3db1d6a69a804e0b14117a8fd5d811edf351fcd39a1807bfd98e090a799cfe98b183fbf2e01ebb57f1239080850db07b68dcd9ba02 languageName: node linkType: hard @@ -34149,19 +34150,7 @@ __metadata: languageName: node linkType: hard -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: "npm:^2.0.1" - safe-buffer: "npm:^5.0.1" - bin: - sha.js: ./bin.js - checksum: 10/d833bfa3e0a67579a6ce6e1bc95571f05246e0a441dd8c76e3057972f2a3e098465687a4369b07e83a0375a88703577f71b5b2e966809e67ebc340dbedb478c7 - languageName: node - linkType: hard - -"sha.js@npm:^2.4.11, sha.js@npm:^2.4.12": +"sha.js@npm:2.4.12, sha.js@npm:^2.4.11, sha.js@npm:^2.4.12": version: 2.4.12 resolution: "sha.js@npm:2.4.12" dependencies: @@ -35550,17 +35539,10 @@ __metadata: languageName: node linkType: hard -"swiper@npm:11.1.14": - version: 11.1.14 - resolution: "swiper@npm:11.1.14" - checksum: 10/ccbdc7027022c500d4624103fc59dcb7de44122d17c005a04807a8998e6e8fe7032f4cb78e9ff0ac33705f32ec540df7fdf9002774079bcce5fd72cf6ba41457 - languageName: node - linkType: hard - -"swiper@patch:swiper@npm%3A11.1.14#~/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch": - version: 11.1.14 - resolution: "swiper@patch:swiper@npm%3A11.1.14#~/.yarn/patches/swiper-npm-11.1.14-8126fa478a.patch::version=11.1.14&hash=c4398b" - checksum: 10/9177de6e116ea07e18f329464d44a2116ec2d87d1403d7072c1f39661a10325fef7e149dbb5a59a36a2e1c9915dc0caf74a5022f64e4ac296f8dfe0d70689b90 +"swiper@npm:12.1.3": + version: 12.1.3 + resolution: "swiper@npm:12.1.3" + checksum: 10/8b4e778870e99cfb5145ed9d5d4314a17fbb544c5d30c1845319021f91363c2bbfaa75d2c2eae8773518117d6141c7d404fc560b97046e06ffd4a5d8b0c2da47 languageName: node linkType: hard @@ -36056,6 +36038,17 @@ __metadata: languageName: node linkType: hard +"to-buffer@npm:^1.2.2": + version: 1.2.2 + resolution: "to-buffer@npm:1.2.2" + dependencies: + isarray: "npm:^2.0.5" + safe-buffer: "npm:^5.2.1" + typed-array-buffer: "npm:^1.0.3" + checksum: 10/69d806c20524ff1e4c44d49276bc96ff282dcae484780a3974e275dabeb75651ea430b074a2a4023701e63b3e1d87811cd82c0972f35280fe5461710e4872aba + languageName: node + linkType: hard + "to-camel-case@npm:1.0.0": version: 1.0.0 resolution: "to-camel-case@npm:1.0.0" From 4ee95f93c12809a426fc418153a94495c53bc30e Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 15:46:41 +0200 Subject: [PATCH 08/69] chore(deps): update several dependencies to solve CVEs (#40402) Co-authored-by: Julio Araujo --- apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 10 +- ee/apps/account-service/package.json | 4 +- ee/packages/federation-matrix/package.json | 2 +- ee/packages/license/package.json | 4 +- package.json | 61 +- packages/livechat/package.json | 2 +- packages/ui-voip/package.json | 2 +- yarn.lock | 1408 ++++++++----------- 9 files changed, 667 insertions(+), 828 deletions(-) diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 045e68c1750a7..80078f10605e7 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -28,7 +28,7 @@ "@rocket.chat/string-helpers": "~0.32.0", "@rocket.chat/ui-kit": "workspace:~", "ajv": "^8.17.1", - "bcrypt": "^5.1.1", + "bcrypt": "^6.0.0", "body-parser": "^1.20.4", "colorette": "^2.0.20", "cookie": "^0.7.2", diff --git a/apps/meteor/package.json b/apps/meteor/package.json index e790e0974e331..357f99edac4d7 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -87,7 +87,7 @@ "@opentelemetry/api": "^1.9.1", "@opentelemetry/exporter-trace-otlp-grpc": "^0.54.2", "@opentelemetry/sdk-node": "^0.54.2", - "@parse/node-apn": "^7.0.1", + "@parse/node-apn": "^8.1.0", "@react-aria/toolbar": "^3.0.0-nightly.5042", "@react-pdf/renderer": "^4.3.2", "@rocket.chat/abac": "workspace:^", @@ -171,7 +171,7 @@ "asterisk-manager": "^0.2.0", "atlassian-crowd-patched": "^0.5.1", "bad-words": "^3.0.4", - "bcrypt": "^5.1.1", + "bcrypt": "^6.0.0", "body-parser": "1.20.4", "bson": "^6.7.1", "busboy": "^1.6.0", @@ -318,7 +318,7 @@ "@babel/preset-react": "~7.27.1", "@babel/register": "~7.28.6", "@faker-js/faker": "~8.0.2", - "@playwright/test": "^1.52.0", + "@playwright/test": "~1.52.0", "@rocket.chat/desktop-api": "workspace:~", "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/livechat": "workspace:^", @@ -338,7 +338,7 @@ "@types/archiver": "~6.0.4", "@types/babel__preset-env": "^7.10.0", "@types/bad-words": "^3.0.3", - "@types/bcrypt": "^5.0.2", + "@types/bcrypt": "^6.0.0", "@types/body-parser": "^1.19.6", "@types/busboy": "^1.5.4", "@types/chai": "~4.3.20", @@ -427,7 +427,7 @@ "outdent": "~0.8.0", "pino-pretty": "13.1.3", "playwright-core": "~1.52.0", - "playwright-qase-reporter": "~2.1.7", + "playwright-qase-reporter": "~2.5.0", "postcss": "~8.4.49", "postcss-custom-properties": "^14.0.6", "postcss-easy-import": "^4.0.0", diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index 19472bf496bf2..f6d89df98c517 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -31,7 +31,7 @@ "@rocket.chat/tools": "workspace:^", "@rocket.chat/tracing": "workspace:^", "@types/node": "~22.16.5", - "bcrypt": "^5.1.1", + "bcrypt": "^6.0.0", "ejson": "^2.2.3", "eventemitter3": "^5.0.4", "mem": "^8.1.1", @@ -45,7 +45,7 @@ }, "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", - "@types/bcrypt": "^5.0.2", + "@types/bcrypt": "^6.0.0", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", "eslint": "~9.39.4", diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index d71bd4367dba4..ac7bec883108e 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -47,7 +47,7 @@ "@types/sanitize-html": "~2.16.1", "eslint": "~9.39.4", "jest": "~30.2.0", - "jest-qase-reporter": "^2.1.4", + "jest-qase-reporter": "^2.4.0", "matrix-js-sdk": "^38.4.0", "pino-pretty": "13.1.3", "typescript": "~5.9.3" diff --git a/ee/packages/license/package.json b/ee/packages/license/package.json index 516fe53431021..3c3dedf0f12a9 100644 --- a/ee/packages/license/package.json +++ b/ee/packages/license/package.json @@ -20,12 +20,12 @@ "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/jwt": "workspace:^", "@rocket.chat/logger": "workspace:^", - "bcrypt": "^5.1.1" + "bcrypt": "^6.0.0" }, "devDependencies": { "@rocket.chat/jest-presets": "workspace:~", "@rocket.chat/tsconfig": "workspace:*", - "@types/bcrypt": "^5.0.2", + "@types/bcrypt": "^6.0.0", "@types/jest": "~30.0.0", "@types/ws": "^8.5.14", "eslint": "~9.39.4", diff --git a/package.json b/package.json index 9123f3717f26c..500aca7945e9b 100644 --- a/package.json +++ b/package.json @@ -37,6 +37,16 @@ "resolutions": { "@sematext/gc-stats@npm:^1.5.9": "patch:@sematext/gc-stats@npm%3A1.5.9#~/.yarn/patches/@sematext-gc-stats-npm-1.5.9-01e77be4d0.patch", "adm-zip": "0.5.9", + "axios@npm:^1.6.1": "1.15.2", + "axios@npm:^1.7.4": "1.15.2", + "axios@npm:^1.7.8": "1.15.2", + "axios@npm:^1.11.0": "1.15.2", + "axios@npm:^1.13.2": "1.15.2", + "sass/immutable": "5.1.5", + "jws@npm:^3.2.2": "3.2.3", + "jws@npm:^4.0.0": "4.0.1", + "tar-fs@npm:^2.0.0": "2.1.4", + "tar-fs@npm:^3.0.6": "3.0.10", "brace-expansion@npm:^2.0.1": "^2.0.3", "brace-expansion@npm:^5.0.2": "^5.0.5", "@meteorjs/crypto-browserify/pbkdf2": "3.1.3", @@ -56,6 +66,14 @@ "mongodb": "6.10.0", "protobufjs": "7.5.5", "webdav/axios": "0.31.1", + "flatted@npm:^3.1.0": "3.4.2", + "flatted@npm:^3.2.9": "3.4.2", + "flatted@npm:^3.3.1": "3.4.2", + "glob@npm:^10.0.0": "10.5.0", + "glob@npm:^10.2.2": "10.5.0", + "glob@npm:^10.3.7": "10.5.0", + "glob@npm:^10.3.10": "10.5.0", + "glob@npm:^11.0.0": "11.1.0", "picomatch@npm:^2.0.4": "^2.3.2", "picomatch@npm:^2.2.1": "^2.3.2", "picomatch@npm:^2.2.3": "^2.3.2", @@ -91,11 +109,50 @@ "create-hash/cipher-base": "1.0.7", "create-hmac/cipher-base": "1.0.7", "create-hash/sha.js": "2.4.12", - "create-hmac/sha.js": "2.4.12" + "create-hmac/sha.js": "2.4.12", + "@typescript-eslint/typescript-estree/minimatch": "10.2.5", + "depcheck/minimatch": "7.4.9", + "eslint-plugin-import/minimatch": "3.1.5", + "eslint-plugin-jsx-a11y/minimatch": "3.1.5", + "eslint-plugin-react/minimatch": "3.1.5", + "fork-ts-checker-webpack-plugin/minimatch": "3.1.5", + "mocha/minimatch": "4.2.6", + "multimatch/minimatch": "3.1.5", + "npm-run-all/minimatch": "3.1.5", + "postcss-bem-linter/minimatch": "3.1.5", + "postcss-url/minimatch": "3.1.5", + "readdir-glob/minimatch": "5.1.9", + "test-exclude/minimatch": "3.1.5", + "webdav/minimatch": "5.1.9", + "glob@npm:7.2.0/minimatch": "3.1.5", + "minimatch@npm:^3.1.1": "3.1.5", + "minimatch@npm:^9.0.4": "9.0.9", + "minimatch@npm:^10.0.0": "10.2.5", + "nodemailer@npm:^8.0.5": "8.0.7", + "mailparser/nodemailer": "7.0.13", + "normalize-package-data@npm:2.5.0/semver": "5.7.2", + "make-dir@npm:2.1.0/semver": "5.7.2", + "utf7/semver": "5.7.2", + "semver@npm:^7.3.2": "7.7.4", + "semver@npm:^7.3.4": "7.7.4", + "semver@npm:^7.3.5": "7.7.4", + "semver@npm:^7.3.7": "7.7.4", + "semver@npm:^7.5.2": "7.7.4", + "semver@npm:^7.5.3": "7.7.4", + "semver@npm:^7.5.4": "7.7.4", + "semver@npm:^7.6.2": "7.7.4", + "semver@npm:^7.6.3": "7.7.4", + "semver@npm:^7.7.1": "7.7.4", + "semver@npm:^7.7.2": "7.7.4", + "semver@npm:^7.7.3": "7.7.4", + "@peggyjs/from-mem/semver": "7.7.4", + "node-gyp/tar": "7.5.13", + "cacache/tar": "7.5.13", + "@mapbox/node-pre-gyp/tar": "7.5.13" }, "dependencies": { "@types/stream-buffers": "^3.0.8", - "node-gyp": "^10.2.0" + "node-gyp": "^11.0.0" }, "devDependencies": { "@changesets/cli": "^2.27.12", diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 696ac06168cee..74a8f286b6eb6 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -77,7 +77,7 @@ "babel-loader": "~10.0.0", "cross-env": "^7.0.3", "css-loader": "^4.3.0", - "cssnano": "^7.0.7", + "cssnano": "^7.1.7", "desvg-loader": "^0.1.0", "eslint": "~9.39.4", "file-loader": "^6.2.0", diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json index 9dca93da500a7..ef3de505db2c7 100644 --- a/packages/ui-voip/package.json +++ b/packages/ui-voip/package.json @@ -26,7 +26,7 @@ "react-i18next": "~13.2.2" }, "devDependencies": { - "@playwright/test": "^1.52.0", + "@playwright/test": "~1.52.0", "@react-spectrum/test-utils": "~1.0.0-alpha.8", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/css-in-js": "~0.31.25", diff --git a/yarn.lock b/yarn.lock index 681fe374c4cc5..ad85c0ff51ed1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3275,6 +3275,13 @@ __metadata: languageName: node linkType: hard +"@colordx/core@npm:^5.2.0": + version: 5.4.3 + resolution: "@colordx/core@npm:5.4.3" + checksum: 10/3a26146cc3ce9e1ab51d428142e7c307cd023c7660b6d604297122661cfc57ebe0c2cfcfd156ccef1a47a9d153da640017827afd67e223dd5b6a24958a908dc0 + languageName: node + linkType: hard + "@cspotcode/source-map-support@npm:^0.8.0": version: 0.8.1 resolution: "@cspotcode/source-map-support@npm:0.8.1" @@ -4366,6 +4373,13 @@ __metadata: languageName: node linkType: hard +"@isaacs/cliui@npm:^9.0.0": + version: 9.0.0 + resolution: "@isaacs/cliui@npm:9.0.0" + checksum: 10/8ea3d1009fd29071419209bb91ede20cf27e6e2a1630c5e0702d8b3f47f9e1a3f1c5a587fa2cb96d22d18219790327df49db1bcced573346bbaf4577cf46b643 + languageName: node + linkType: hard + "@isaacs/fs-minipass@npm:^4.0.0": version: 4.0.1 resolution: "@isaacs/fs-minipass@npm:4.0.1" @@ -5203,7 +5217,7 @@ __metadata: languageName: node linkType: hard -"@mapbox/node-pre-gyp@npm:^1.0.10, @mapbox/node-pre-gyp@npm:^1.0.11": +"@mapbox/node-pre-gyp@npm:^1.0.10": version: 1.0.11 resolution: "@mapbox/node-pre-gyp@npm:1.0.11" dependencies: @@ -5754,19 +5768,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" - dependencies: - agent-base: "npm:^7.1.0" - http-proxy-agent: "npm:^7.0.0" - https-proxy-agent: "npm:^7.0.1" - lru-cache: "npm:^10.0.1" - socks-proxy-agent: "npm:^8.0.3" - checksum: 10/96fc0036b101bae5032dc2a4cd832efb815ce9b33f9ee2f29909ee49d96a0026b3565f73c507a69eb8603f5cb32e0ae45a70cab1e2655990a4e06ae99f7f572a - languageName: node - linkType: hard - "@npmcli/agent@npm:^3.0.0": version: 3.0.0 resolution: "@npmcli/agent@npm:3.0.0" @@ -5780,15 +5781,6 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.1 - resolution: "@npmcli/fs@npm:3.1.1" - dependencies: - semver: "npm:^7.3.5" - checksum: 10/1e0e04087049b24b38bc0b30d87a9388ee3ca1d3fdfc347c2f77d84fcfe6a51f250bc57ba2c1f614d7e4285c6c62bf8c769bc19aa0949ea39e5b043ee023b0bd - languageName: node - linkType: hard - "@npmcli/fs@npm:^4.0.0": version: 4.0.0 resolution: "@npmcli/fs@npm:4.0.0" @@ -6441,15 +6433,15 @@ __metadata: languageName: node linkType: hard -"@parse/node-apn@npm:^7.0.1": - version: 7.0.1 - resolution: "@parse/node-apn@npm:7.0.1" +"@parse/node-apn@npm:^8.1.0": + version: 8.1.0 + resolution: "@parse/node-apn@npm:8.1.0" dependencies: debug: "npm:4.4.3" - jsonwebtoken: "npm:9.0.2" - node-forge: "npm:1.3.2" + jsonwebtoken: "npm:9.0.3" + node-forge: "npm:1.4.0" verror: "npm:1.10.1" - checksum: 10/db3cd05076b4282fdd20708c9585d2b75559690efecce54dc71296683107cd4deeef340923ae94a7c5ff182193b448a0bb4b5da4cc8f53e3cdf29c4225930465 + checksum: 10/c361775b779fea2dfdea45800da4b95b4196c4dd0f2a783cc296710387b2117f93610c9fde3a3f62ada64881edc303bd4dae1becc70b2f8f761890de2948ef2f languageName: node linkType: hard @@ -6635,7 +6627,7 @@ __metadata: languageName: node linkType: hard -"@playwright/test@npm:^1.52.0": +"@playwright/test@npm:~1.52.0": version: 1.52.0 resolution: "@playwright/test@npm:1.52.0" dependencies: @@ -8832,11 +8824,11 @@ __metadata: "@rocket.chat/tools": "workspace:^" "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - "@types/bcrypt": "npm:^5.0.2" + "@types/bcrypt": "npm:^6.0.0" "@types/node": "npm:~22.16.5" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" - bcrypt: "npm:^5.1.1" + bcrypt: "npm:^6.0.0" ejson: "npm:^2.2.3" eslint: "npm:~9.39.4" eventemitter3: "npm:^5.0.4" @@ -9235,7 +9227,7 @@ __metadata: emojione: "npm:^4.5.0" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" - jest-qase-reporter: "npm:^2.1.4" + jest-qase-reporter: "npm:^2.4.0" lodash.debounce: "npm:^4.0.8" marked: "npm:^16.1.2" matrix-js-sdk: "npm:^38.4.0" @@ -9603,10 +9595,10 @@ __metadata: "@rocket.chat/jwt": "workspace:^" "@rocket.chat/logger": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - "@types/bcrypt": "npm:^5.0.2" + "@types/bcrypt": "npm:^6.0.0" "@types/jest": "npm:~30.0.0" "@types/ws": "npm:^8.5.14" - bcrypt: "npm:^5.1.1" + bcrypt: "npm:^6.0.0" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" jest-websocket-mock: "npm:~2.5.0" @@ -9651,7 +9643,7 @@ __metadata: cross-env: "npm:^7.0.3" css-loader: "npm:^4.3.0" css-vars-ponyfill: "npm:^2.4.9" - cssnano: "npm:^7.0.7" + cssnano: "npm:^7.1.7" date-fns: "npm:~4.1.0" desvg-loader: "npm:^0.1.0" dompurify: "npm:~3.4.1" @@ -9855,8 +9847,8 @@ __metadata: "@opentelemetry/api": "npm:^1.9.1" "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.54.2" "@opentelemetry/sdk-node": "npm:^0.54.2" - "@parse/node-apn": "npm:^7.0.1" - "@playwright/test": "npm:^1.52.0" + "@parse/node-apn": "npm:^8.1.0" + "@playwright/test": "npm:~1.52.0" "@react-aria/toolbar": "npm:^3.0.0-nightly.5042" "@react-pdf/renderer": "npm:^4.3.2" "@rocket.chat/abac": "workspace:^" @@ -9950,7 +9942,7 @@ __metadata: "@types/archiver": "npm:~6.0.4" "@types/babel__preset-env": "npm:^7.10.0" "@types/bad-words": "npm:^3.0.3" - "@types/bcrypt": "npm:^5.0.2" + "@types/bcrypt": "npm:^6.0.0" "@types/body-parser": "npm:^1.19.6" "@types/busboy": "npm:^1.5.4" "@types/chai": "npm:~4.3.20" @@ -10030,7 +10022,7 @@ __metadata: babel-plugin-array-includes: "npm:^2.0.3" babel-plugin-istanbul: "npm:~7.0.1" bad-words: "npm:^3.0.4" - bcrypt: "npm:^5.1.1" + bcrypt: "npm:^6.0.0" body-parser: "npm:1.20.4" bson: "npm:^6.7.1" busboy: "npm:^1.6.0" @@ -10140,7 +10132,7 @@ __metadata: pino: "npm:10.3.1" pino-pretty: "npm:13.1.3" playwright-core: "npm:~1.52.0" - playwright-qase-reporter: "npm:~2.1.7" + playwright-qase-reporter: "npm:~2.5.0" postcss: "npm:~8.4.49" postcss-custom-properties: "npm:^14.0.6" postcss-easy-import: "npm:^4.0.0" @@ -11091,7 +11083,7 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/ui-voip@workspace:packages/ui-voip" dependencies: - "@playwright/test": "npm:^1.52.0" + "@playwright/test": "npm:~1.52.0" "@react-spectrum/test-utils": "npm:~1.0.0-alpha.8" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/css-in-js": "npm:~0.31.25" @@ -13516,13 +13508,6 @@ __metadata: languageName: node linkType: hard -"@trysound/sax@npm:0.2.0": - version: 0.2.0 - resolution: "@trysound/sax@npm:0.2.0" - checksum: 10/7379713eca480ac0d9b6c7b063e06b00a7eac57092354556c81027066eb65b61ea141a69d0cc2e15d32e05b2834d4c9c2184793a5e36bbf5daf05ee5676af18c - languageName: node - linkType: hard - "@tsconfig/node10@npm:^1.0.7": version: 1.0.8 resolution: "@tsconfig/node10@npm:1.0.8" @@ -13691,12 +13676,12 @@ __metadata: languageName: node linkType: hard -"@types/bcrypt@npm:^5.0.2": - version: 5.0.2 - resolution: "@types/bcrypt@npm:5.0.2" +"@types/bcrypt@npm:^6.0.0": + version: 6.0.0 + resolution: "@types/bcrypt@npm:6.0.0" dependencies: "@types/node": "npm:*" - checksum: 10/b1f97532ffe6079cb57a464f28b5b37a30bc9620f43469e1f27ab9c979c8a114be5b667e7b115a5556fd5be463b65968da9bb32573c6faf74fecf6e565d8974b + checksum: 10/628844016504c0d36047ed6c8e97385423c7b6ec6c208569ade8f6f2c685489a5134a38ab61d2ead2c6059983c8804e802d48155d56995805962004ff65c3b6b languageName: node linkType: hard @@ -16042,13 +16027,6 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 10/ca0a54e35bea4ece0ecb68a47b312e1a9a6f772408d5bcb9051230aaa94b0460671c5b5c9cb3240eb5b7bc94c52476550eb221f65a0bbd0145bdc9f3113a6707 - languageName: node - linkType: hard - "abbrev@npm:^3.0.0": version: 3.0.0 resolution: "abbrev@npm:3.0.0" @@ -16275,6 +16253,18 @@ __metadata: languageName: node linkType: hard +"ajv@npm:^8.18.0": + version: 8.20.0 + resolution: "ajv@npm:8.20.0" + dependencies: + fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" + json-schema-traverse: "npm:^1.0.0" + require-from-string: "npm:^2.0.2" + checksum: 10/5ce59c0537f4c2aca9a758b412659ec70acb4d5dde971c10ecf21d2e3d799f99acdb4a08e1f5fb2e067c8542930398aae793bb996bb07d3feb81dae22fe2ada9 + languageName: node + linkType: hard + "another-json@npm:^0.2.0": version: 0.2.0 resolution: "another-json@npm:0.2.0" @@ -16961,40 +16951,7 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.11.0": - version: 1.11.0 - resolution: "axios@npm:1.11.0" - dependencies: - follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.4" - proxy-from-env: "npm:^1.1.0" - checksum: 10/232df4af7a4e4e07baa84621b9cc4b0c518a757b4eacc7f635c0eb3642cb98dff347326739f24b891b3b4481b7b838c79a3a0c4819c9fbc1fc40232431b9c5dc - languageName: node - linkType: hard - -"axios@npm:^1.13.2": - version: 1.13.2 - resolution: "axios@npm:1.13.2" - dependencies: - follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.4" - proxy-from-env: "npm:^1.1.0" - checksum: 10/ae4e06dcd18289f2fd18179256d550d27f9a53ecb2f9c59f2ccc4efd1d7151839ba8c3e0fb533dac793e4a59a576ca8689a19244dce5c396680837674a47a867 - languageName: node - linkType: hard - -"axios@npm:^1.6.1, axios@npm:^1.7.4": - version: 1.10.0 - resolution: "axios@npm:1.10.0" - dependencies: - follow-redirects: "npm:^1.15.6" - form-data: "npm:^4.0.0" - proxy-from-env: "npm:^1.1.0" - checksum: 10/d43c80316a45611fd395743e15d16ea69a95f2b7f7095f2bb12cb78f9ca0a905194a02e52a3bf4e0db9f85fd1186d6c690410644c10ecd8bb0a468e57c2040e4 - languageName: node - linkType: hard - -"axios@npm:^1.7.8": +"axios@npm:1.15.2": version: 1.15.2 resolution: "axios@npm:1.15.2" dependencies: @@ -17012,7 +16969,7 @@ __metadata: languageName: node linkType: hard -"b4a@npm:^1.6.4, b4a@npm:^1.6.6": +"b4a@npm:^1.6.4": version: 1.6.6 resolution: "b4a@npm:1.6.6" checksum: 10/6154a36bd78b53ecd2843a829352532a1bf9fc8081dab339ba06ca3c9ffcf25d340c3b18fe4ba0fc17a546a54c1ed814cea92cd6b895f6bd2837ca4ee0fc9f52 @@ -17318,21 +17275,40 @@ __metadata: languageName: node linkType: hard -"bare-events@npm:^2.0.0, bare-events@npm:^2.2.0": +"bare-events@npm:^2.2.0": version: 2.4.2 resolution: "bare-events@npm:2.4.2" checksum: 10/c1006ad13b7e62a412466d4eac8466b4ceb46ce84a5e2fc164cd4b10edaaa5016adc684147134b67a6a3865aaf5aa007191647bdb5dbf859b1d5735d2a9ddf3b languageName: node linkType: hard -"bare-fs@npm:^2.1.1": - version: 2.3.5 - resolution: "bare-fs@npm:2.3.5" +"bare-events@npm:^2.5.4, bare-events@npm:^2.7.0": + version: 2.8.2 + resolution: "bare-events@npm:2.8.2" + peerDependencies: + bare-abort-controller: "*" + peerDependenciesMeta: + bare-abort-controller: + optional: true + checksum: 10/f31848ea2f5627c3a50aadfc17e518a602629f7a6671da1352975cc6c8a520441fcc9d93c0a21f8f95de65b1a5133fcd5f766d312f3d5a326dde4fe7d2fc575f + languageName: node + linkType: hard + +"bare-fs@npm:^4.0.1": + version: 4.7.1 + resolution: "bare-fs@npm:4.7.1" dependencies: - bare-events: "npm:^2.0.0" - bare-path: "npm:^2.0.0" - bare-stream: "npm:^2.0.0" - checksum: 10/1d8466ae0adc7fa75bb179efac769c63c0d306d7c37109a3891e7fee4d80489562754de464ff3c13405f66ef0908b01917b667d2f077d5d1a70d0d34cea464b5 + bare-events: "npm:^2.5.4" + bare-path: "npm:^3.0.0" + bare-stream: "npm:^2.6.4" + bare-url: "npm:^2.2.2" + fast-fifo: "npm:^1.3.2" + peerDependencies: + bare-buffer: "*" + peerDependenciesMeta: + bare-buffer: + optional: true + checksum: 10/bb873bf8d22c45fd14444b0f9731315a77b696c9387b09cc0df9975b998d1b5db9f4c88aa4b264ce59edeade573689ba9e0ba172003cc8900b2c2ad803f9275b languageName: node linkType: hard @@ -17350,13 +17326,6 @@ __metadata: languageName: node linkType: hard -"bare-os@npm:^2.1.0": - version: 2.4.4 - resolution: "bare-os@npm:2.4.4" - checksum: 10/85d4cbc26d7a3d8c9af2c3d3ca216d86304baf089825087581a8c07b2b8864cbec1c9bc14e791c74767ed2f504611a278e5fc6f0577b3b041bbf072fd82958e7 - languageName: node - linkType: hard - "bare-os@npm:^3.0.1": version: 3.6.1 resolution: "bare-os@npm:3.6.1" @@ -17364,15 +17333,6 @@ __metadata: languageName: node linkType: hard -"bare-path@npm:^2.0.0, bare-path@npm:^2.1.0": - version: 2.1.3 - resolution: "bare-path@npm:2.1.3" - dependencies: - bare-os: "npm:^2.1.0" - checksum: 10/1576c53e487947d218e6471c7f3d0f8e799a6809ad0c2a98e78c2fda1fa8ade01f3532b954e50e8a5609d874347dbca1023bfade73d0b76f3221b371ed715fcb - languageName: node - linkType: hard - "bare-path@npm:^3.0.0": version: 3.0.0 resolution: "bare-path@npm:3.0.0" @@ -17389,13 +17349,24 @@ __metadata: languageName: node linkType: hard -"bare-stream@npm:^2.0.0": - version: 2.3.0 - resolution: "bare-stream@npm:2.3.0" +"bare-stream@npm:^2.6.4": + version: 2.13.1 + resolution: "bare-stream@npm:2.13.1" dependencies: - b4a: "npm:^1.6.6" - streamx: "npm:^2.20.0" - checksum: 10/b32cd79f2ed4d9980f7ae1a3a125466c5ace572a78649d51d5897c605bddd259f781e4d1408f6d248f5b99c30e88b475c4912b00df75394eb6fb53529ee835ad + streamx: "npm:^2.25.0" + teex: "npm:^1.0.1" + peerDependencies: + bare-abort-controller: "*" + bare-buffer: "*" + bare-events: "*" + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + checksum: 10/50aa90a7005d71c1af8fafcc84f378bd4d7c2dd293a581ffe3899bee39b0d2eb07c47e1092f581fa5b199a63c0ad2618b150c0ab716658727e3fcc7fd7d1e401 languageName: node linkType: hard @@ -17408,6 +17379,15 @@ __metadata: languageName: node linkType: hard +"bare-url@npm:^2.2.2": + version: 2.4.2 + resolution: "bare-url@npm:2.4.2" + dependencies: + bare-path: "npm:^3.0.0" + checksum: 10/7b2caef1323415c6d44a90f770543fcbd721a4443a5e236054538997da564b383ffea2e21d16bdb78e88e559f232b6d9d348a8011f0d70c57678798a6906d3e9 + languageName: node + linkType: hard + "base-64@npm:^1.0.0": version: 1.0.0 resolution: "base-64@npm:1.0.0" @@ -17468,13 +17448,14 @@ __metadata: languageName: node linkType: hard -"bcrypt@npm:^5.1.1": - version: 5.1.1 - resolution: "bcrypt@npm:5.1.1" +"bcrypt@npm:^6.0.0": + version: 6.0.0 + resolution: "bcrypt@npm:6.0.0" dependencies: - "@mapbox/node-pre-gyp": "npm:^1.0.11" - node-addon-api: "npm:^5.0.0" - checksum: 10/be6af3a93d90a0071c3b4412e8b82e2f319e26cb4e6cb14a1790cfe7c164792fa8add3ac9f30278a017d7d332ee8852601ce81a69737e9bfb9f10c878dd3d0dd + node-addon-api: "npm:^8.3.0" + node-gyp: "npm:latest" + node-gyp-build: "npm:^4.8.4" + checksum: 10/24dc552828435f2346fe0a27eb2b23e4fdcc4f139d069db0dbee6e3b37fcf8e88ffbd6473a138e1d594a4b9df91e9b71994d15cf9fc6f5c3ff68f3d851fd973a languageName: node linkType: hard @@ -17660,7 +17641,7 @@ __metadata: languageName: node linkType: hard -"brace-expansion@npm:^2.0.3": +"brace-expansion@npm:^2.0.2, brace-expansion@npm:^2.0.3": version: 2.1.0 resolution: "brace-expansion@npm:2.1.0" dependencies: @@ -17791,7 +17772,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.24.0, browserslist@npm:^4.24.5": +"browserslist@npm:^4.0.0, browserslist@npm:^4.12.0, browserslist@npm:^4.24.0": version: 4.25.0 resolution: "browserslist@npm:4.25.0" dependencies: @@ -17819,7 +17800,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.28.1": +"browserslist@npm:^4.28.1, browserslist@npm:^4.28.2": version: 4.28.2 resolution: "browserslist@npm:4.28.2" dependencies: @@ -17889,7 +17870,7 @@ __metadata: languageName: node linkType: hard -"buffer-equal-constant-time@npm:1.0.1, buffer-equal-constant-time@npm:^1.0.1": +"buffer-equal-constant-time@npm:^1.0.1": version: 1.0.1 resolution: "buffer-equal-constant-time@npm:1.0.1" checksum: 10/80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab @@ -18012,26 +17993,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" - dependencies: - "@npmcli/fs": "npm:^3.1.0" - fs-minipass: "npm:^3.0.0" - glob: "npm:^10.2.2" - lru-cache: "npm:^10.0.1" - minipass: "npm:^7.0.3" - minipass-collect: "npm:^2.0.1" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - p-map: "npm:^4.0.0" - ssri: "npm:^10.0.0" - tar: "npm:^6.1.11" - unique-filename: "npm:^3.0.0" - checksum: 10/ca2f7b2d3003f84d362da9580b5561058ccaecd46cba661cbcff0375c90734b610520d46b472a339fd032d91597ad6ed12dde8af81571197f3c9772b5d35b104 - languageName: node - linkType: hard - "cacache@npm:^19.0.1": version: 19.0.1 resolution: "cacache@npm:19.0.1" @@ -18535,13 +18496,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: 10/c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f - languageName: node - linkType: hard - "chownr@npm:^3.0.0": version: 3.0.0 resolution: "chownr@npm:3.0.0" @@ -18847,6 +18801,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^11.1.0": + version: 11.1.0 + resolution: "commander@npm:11.1.0" + checksum: 10/66bd2d8a0547f6cb1d34022efb25f348e433b0e04ad76a65279b1b09da108f59a4d3001ca539c60a7a46ea38bcf399fc17d91adad76a8cf43845d8dcbaf5cda1 + languageName: node + linkType: hard + "commander@npm:^12.1.0": version: 12.1.0 resolution: "commander@npm:12.1.0" @@ -18875,13 +18836,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^7.2.0": - version: 7.2.0 - resolution: "commander@npm:7.2.0" - checksum: 10/9973af10727ad4b44f26703bf3e9fdc323528660a7590efe3aa9ad5042b4584c0deed84ba443f61c9d6f02dade54a5a5d3c95e306a1e1630f8374ae6db16c06d - languageName: node - linkType: hard - "commander@npm:^8.3.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -19454,16 +19408,6 @@ __metadata: languageName: node linkType: hard -"css-tree@npm:^2.3.1": - version: 2.3.1 - resolution: "css-tree@npm:2.3.1" - dependencies: - mdn-data: "npm:2.0.30" - source-map-js: "npm:^1.0.1" - checksum: 10/e5e39b82eb4767c664fa5c2cd9968c8c7e6b7fd2c0079b52680a28466d851e2826d5e64699c449d933c0e8ca0554beca43c41a9fcb09fb6a46139d462dbdf0df - languageName: node - linkType: hard - "css-tree@npm:^3.0.0": version: 3.0.1 resolution: "css-tree@npm:3.0.1" @@ -19474,6 +19418,16 @@ __metadata: languageName: node linkType: hard +"css-tree@npm:^3.0.1": + version: 3.2.1 + resolution: "css-tree@npm:3.2.1" + dependencies: + mdn-data: "npm:2.27.1" + source-map-js: "npm:^1.2.1" + checksum: 10/9945b387bdec756738c34d64b8287f05ca6645f51d1c8abaaa5822ec3e74533604103aaad164b8100afd8495e92120be7c1c6afbe5be89f867acc5b456ddd79c + languageName: node + linkType: hard + "css-tree@npm:~2.2.0": version: 2.2.1 resolution: "css-tree@npm:2.2.1" @@ -19517,64 +19471,64 @@ __metadata: languageName: node linkType: hard -"cssnano-preset-default@npm:^7.0.7": - version: 7.0.7 - resolution: "cssnano-preset-default@npm:7.0.7" +"cssnano-preset-default@npm:^7.0.15": + version: 7.0.15 + resolution: "cssnano-preset-default@npm:7.0.15" dependencies: - browserslist: "npm:^4.24.5" + browserslist: "npm:^4.28.2" css-declaration-sorter: "npm:^7.2.0" - cssnano-utils: "npm:^5.0.1" + cssnano-utils: "npm:^5.0.2" postcss-calc: "npm:^10.1.1" - postcss-colormin: "npm:^7.0.3" - postcss-convert-values: "npm:^7.0.5" - postcss-discard-comments: "npm:^7.0.4" - postcss-discard-duplicates: "npm:^7.0.2" - postcss-discard-empty: "npm:^7.0.1" - postcss-discard-overridden: "npm:^7.0.1" - postcss-merge-longhand: "npm:^7.0.5" - postcss-merge-rules: "npm:^7.0.5" - postcss-minify-font-values: "npm:^7.0.1" - postcss-minify-gradients: "npm:^7.0.1" - postcss-minify-params: "npm:^7.0.3" - postcss-minify-selectors: "npm:^7.0.5" - postcss-normalize-charset: "npm:^7.0.1" - postcss-normalize-display-values: "npm:^7.0.1" - postcss-normalize-positions: "npm:^7.0.1" - postcss-normalize-repeat-style: "npm:^7.0.1" - postcss-normalize-string: "npm:^7.0.1" - postcss-normalize-timing-functions: "npm:^7.0.1" - postcss-normalize-unicode: "npm:^7.0.3" - postcss-normalize-url: "npm:^7.0.1" - postcss-normalize-whitespace: "npm:^7.0.1" - postcss-ordered-values: "npm:^7.0.2" - postcss-reduce-initial: "npm:^7.0.3" - postcss-reduce-transforms: "npm:^7.0.1" - postcss-svgo: "npm:^7.0.2" - postcss-unique-selectors: "npm:^7.0.4" - peerDependencies: - postcss: ^8.4.32 - checksum: 10/1ca9b739531acc2dff66347cc1b6195da0549058b5b00b9d36c3f241535ad67476218f61201cfb15e8b460357ec42414aa53bf78a7f01ee26ac26b7852e6c244 - languageName: node - linkType: hard - -"cssnano-utils@npm:^5.0.1": - version: 5.0.1 - resolution: "cssnano-utils@npm:5.0.1" + postcss-colormin: "npm:^7.0.9" + postcss-convert-values: "npm:^7.0.11" + postcss-discard-comments: "npm:^7.0.7" + postcss-discard-duplicates: "npm:^7.0.3" + postcss-discard-empty: "npm:^7.0.2" + postcss-discard-overridden: "npm:^7.0.2" + postcss-merge-longhand: "npm:^7.0.6" + postcss-merge-rules: "npm:^7.0.10" + postcss-minify-font-values: "npm:^7.0.2" + postcss-minify-gradients: "npm:^7.0.4" + postcss-minify-params: "npm:^7.0.8" + postcss-minify-selectors: "npm:^7.1.0" + postcss-normalize-charset: "npm:^7.0.2" + postcss-normalize-display-values: "npm:^7.0.2" + postcss-normalize-positions: "npm:^7.0.3" + postcss-normalize-repeat-style: "npm:^7.0.3" + postcss-normalize-string: "npm:^7.0.2" + postcss-normalize-timing-functions: "npm:^7.0.2" + postcss-normalize-unicode: "npm:^7.0.8" + postcss-normalize-url: "npm:^7.0.2" + postcss-normalize-whitespace: "npm:^7.0.2" + postcss-ordered-values: "npm:^7.0.3" + postcss-reduce-initial: "npm:^7.0.8" + postcss-reduce-transforms: "npm:^7.0.2" + postcss-svgo: "npm:^7.1.2" + postcss-unique-selectors: "npm:^7.0.6" + peerDependencies: + postcss: ^8.5.10 + checksum: 10/97c8a7007d85c546c4b8102211fc2c1bc885d1b8f2aabdb9b3496d5695589362d7721a5b299ea26f833a2efbe6e8037fbbe7c47f9be37e8c044ecbd557005c50 + languageName: node + linkType: hard + +"cssnano-utils@npm:^5.0.2": + version: 5.0.2 + resolution: "cssnano-utils@npm:5.0.2" peerDependencies: - postcss: ^8.4.32 - checksum: 10/cdf37315d3cf9726e10ce842b18e148e4df1d1d18d292540e724d5a96994901abc631c8894328c39ab70c864449a8a83f8fc117114fdcbade204e5e65898af90 + postcss: ^8.5.10 + checksum: 10/1f980d7f94e221168a6ecc42cac43f3ed1e87aeb39affb0456ad7180feb161672f5f894bcc153f0bc878951633cfe95b3409a5918f8bf7a99ef100f85205bc69 languageName: node linkType: hard -"cssnano@npm:^7.0.7": - version: 7.0.7 - resolution: "cssnano@npm:7.0.7" +"cssnano@npm:^7.1.7": + version: 7.1.7 + resolution: "cssnano@npm:7.1.7" dependencies: - cssnano-preset-default: "npm:^7.0.7" + cssnano-preset-default: "npm:^7.0.15" lilconfig: "npm:^3.1.3" peerDependencies: - postcss: ^8.4.32 - checksum: 10/c5b3123757834537f818e0f3eb6b20da51a194fefed599632f7ddd600c9e25d38abe38a22582a579660a49368a146c294e2096b2837cbeeda51ddfc85b108601 + postcss: ^8.5.10 + checksum: 10/94b38a509b1f5e4b73a9f485197802fdb570fe119ee19c45da131be47c2946106e8d60175b7e7048b495f1c11a740a2da4361803a8648c7aed3aedabb0e45427 languageName: node linkType: hard @@ -22103,6 +22057,15 @@ __metadata: languageName: node linkType: hard +"events-universal@npm:^1.0.0": + version: 1.0.1 + resolution: "events-universal@npm:1.0.1" + dependencies: + bare-events: "npm:^2.7.0" + checksum: 10/71b2e6079b4dc030c613ef73d99f1acb369dd3ddb6034f49fd98b3e2c6632cde9f61c15fb1351004339d7c79672252a4694ecc46a6124dc794b558be50a83867 + languageName: node + linkType: hard + "events@npm:3.3.0, events@npm:^3.2.0, events@npm:^3.3.0": version: 3.3.0 resolution: "events@npm:3.3.0" @@ -22849,17 +22812,10 @@ __metadata: languageName: node linkType: hard -"flatted@npm:^3.1.0, flatted@npm:^3.3.1": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 - languageName: node - linkType: hard - -"flatted@npm:^3.2.9": - version: 3.3.3 - resolution: "flatted@npm:3.3.3" - checksum: 10/8c96c02fbeadcf4e8ffd0fa24983241e27698b0781295622591fc13585e2f226609d95e422bcf2ef044146ffacb6b68b1f20871454eddf75ab3caa6ee5f4a1fe +"flatted@npm:3.4.2": + version: 3.4.2 + resolution: "flatted@npm:3.4.2" + checksum: 10/a9e78fe5c2c1fcd98209a015ccee3a6caa953e01729778e83c1fe92e68601a63e1e69cd4e573010ca99eaf585a581b80ccf1018b99283e6cbc2117bcba1e030f languageName: node linkType: hard @@ -22928,6 +22884,16 @@ __metadata: languageName: node linkType: hard +"foreground-child@npm:^3.3.1": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10/427b33f997a98073c0424e5c07169264a62cda806d8d2ded159b5b903fdfc8f0a1457e06b5fc35506497acb3f1e353f025edee796300209ac6231e80edece835 + languageName: node + linkType: hard + "fork-ts-checker-webpack-plugin@npm:^8.0.0": version: 8.0.0 resolution: "fork-ts-checker-webpack-plugin@npm:8.0.0" @@ -23064,15 +23030,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: "npm:^3.0.0" - checksum: 10/03191781e94bc9a54bd376d3146f90fe8e082627c502185dbf7b9b3032f66b0b142c1115f3b2cc5936575fc1b44845ce903dd4c21bec2a8d69f3bd56f9cee9ec - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -23331,23 +23288,9 @@ __metadata: languageName: node linkType: hard -"glob@npm:7.2.0": - version: 7.2.0 - resolution: "glob@npm:7.2.0" - dependencies: - fs.realpath: "npm:^1.0.0" - inflight: "npm:^1.0.4" - inherits: "npm:2" - minimatch: "npm:^3.0.4" - once: "npm:^1.3.0" - path-is-absolute: "npm:^1.0.0" - checksum: 10/bc78b6ea0735b6e23d20678aba4ae6a4760e8c9527e3c4683ac25b14e70f55f9531245dcf25959b70cbc4aa3dcce1fc37ab65fd026a4cbd70aa3a44880bd396b - languageName: node - linkType: hard - -"glob@npm:^10.0.0, glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": - version: 10.4.5 - resolution: "glob@npm:10.4.5" +"glob@npm:10.5.0": + version: 10.5.0 + resolution: "glob@npm:10.5.0" dependencies: foreground-child: "npm:^3.1.0" jackspeak: "npm:^3.1.2" @@ -23357,23 +23300,37 @@ __metadata: path-scurry: "npm:^1.11.1" bin: glob: dist/esm/bin.mjs - checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac + checksum: 10/ab3bccfefcc0afaedbd1f480cd0c4a2c0e322eb3f0aa7ceaa31b3f00b825069f17cf0f1fc8b6f256795074b903f37c0ade37ddda6a176aa57f1c2bbfe7240653 languageName: node linkType: hard -"glob@npm:^11.0.0": - version: 11.0.0 - resolution: "glob@npm:11.0.0" +"glob@npm:11.1.0": + version: 11.1.0 + resolution: "glob@npm:11.1.0" dependencies: - foreground-child: "npm:^3.1.0" - jackspeak: "npm:^4.0.1" - minimatch: "npm:^10.0.0" + foreground-child: "npm:^3.3.1" + jackspeak: "npm:^4.1.1" + minimatch: "npm:^10.1.1" minipass: "npm:^7.1.2" package-json-from-dist: "npm:^1.0.0" path-scurry: "npm:^2.0.0" bin: glob: dist/esm/bin.mjs - checksum: 10/e66939201d11ae30fe97e3364ac2be5c59d6c9bfce18ac633edfad473eb6b46a7553f6f73658f67caaf6cccc1df1ae336298a45e9021fa5695fd78754cc1603e + checksum: 10/da4501819633daff8822c007bb3f93d5c4d2cbc7b15a8e886660f4497dd251a1fb4f53a85fba1e760b31704eff7164aeb2c7a82db10f9f2c362d12c02fe52cf3 + languageName: node + linkType: hard + +"glob@npm:7.2.0": + version: 7.2.0 + resolution: "glob@npm:7.2.0" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10/bc78b6ea0735b6e23d20678aba4ae6a4760e8c9527e3c4683ac25b14e70f55f9531245dcf25959b70cbc4aa3dcce1fc37ab65fd026a4cbd70aa3a44880bd396b languageName: node linkType: hard @@ -24488,10 +24445,10 @@ __metadata: languageName: node linkType: hard -"immutable@npm:^5.0.2": - version: 5.0.2 - resolution: "immutable@npm:5.0.2" - checksum: 10/89b1117c610024b7a9214eade8b9f1ed38b00c82235f119515cfa5eaf26270eccbc803296d4c3c12f53e50802f042f84d811998910b866363913720da768472e +"immutable@npm:5.1.5": + version: 5.1.5 + resolution: "immutable@npm:5.1.5" + checksum: 10/7aec2740239772ec8e92e793c991bd809203a97694f4ff3a18e50e28f9a6b02393ad033d87b458037bdf8c0ea37d4446d640e825f6171df3405cf6cf300ce028 languageName: node linkType: hard @@ -24967,13 +24924,6 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 10/93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - "is-map@npm:^2.0.2, is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" @@ -25470,16 +25420,12 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^4.0.1": - version: 4.0.1 - resolution: "jackspeak@npm:4.0.1" +"jackspeak@npm:^4.1.1": + version: 4.2.3 + resolution: "jackspeak@npm:4.2.3" dependencies: - "@isaacs/cliui": "npm:^8.0.2" - "@pkgjs/parseargs": "npm:^0.11.0" - dependenciesMeta: - "@pkgjs/parseargs": - optional: true - checksum: 10/b20dc0df0dbb2903e4d540ae68308ec7d1dd60944b130e867e218c98b5d77481d65ea734b6c81c812d481500076e8b3fdfccfb38fc81cb1acf165e853da3e26c + "@isaacs/cliui": "npm:^9.0.0" + checksum: 10/b88e3fe5fa04d34f0f939a15b7cef4a8589999b7a366ef89a3e0f2c45d2a7666066b67cbf46d57c3a4796a76d27b9d869b23d96a803dd834200d222c2a70de7e languageName: node linkType: hard @@ -26129,17 +26075,17 @@ __metadata: languageName: node linkType: hard -"jest-qase-reporter@npm:^2.1.4": - version: 2.1.4 - resolution: "jest-qase-reporter@npm:2.1.4" +"jest-qase-reporter@npm:^2.4.0": + version: 2.4.0 + resolution: "jest-qase-reporter@npm:2.4.0" dependencies: lodash.get: "npm:^4.4.2" lodash.has: "npm:^4.5.2" - qase-javascript-commons: "npm:~2.4.16" + qase-javascript-commons: "npm:~2.7.0" uuid: "npm:^9.0.1" peerDependencies: jest: ">=28.0.0" - checksum: 10/45c9e3606205786f014523e77a6f0818906b2d953da92fda86396486c1ce836ca6a99d29993b1e8d631ce16eb9ebc0e9094f29ad099d1c35d917c3a9d21e41e1 + checksum: 10/6adfa860752d66deea9d13b4a0dc258dec29d555b612f7386c59f2d6f713a8a869f6bb4ff7382215184933c5b86c1b49bdf30bbe58c8ca23fe5f48003c54390e languageName: node linkType: hard @@ -26876,11 +26822,11 @@ __metadata: languageName: node linkType: hard -"jsonwebtoken@npm:9.0.2, jsonwebtoken@npm:^9.0.0": - version: 9.0.2 - resolution: "jsonwebtoken@npm:9.0.2" +"jsonwebtoken@npm:9.0.3, jsonwebtoken@npm:^9.0.2": + version: 9.0.3 + resolution: "jsonwebtoken@npm:9.0.3" dependencies: - jws: "npm:^3.2.2" + jws: "npm:^4.0.1" lodash.includes: "npm:^4.3.0" lodash.isboolean: "npm:^3.0.3" lodash.isinteger: "npm:^4.0.4" @@ -26890,15 +26836,15 @@ __metadata: lodash.once: "npm:^4.0.0" ms: "npm:^2.1.1" semver: "npm:^7.5.4" - checksum: 10/6e9b6d879cec2b27f2f3a88a0c0973edc7ba956a5d9356b2626c4fddfda969e34a3832deaf79c3e1c6c9a525bc2c4f2c2447fa477f8ac660f0017c31a59ae96b + checksum: 10/a67a276db41fbfb458ebdc4938d5d7b01d4743e16bda0f25ac01996fe5b5819d66656153f6cfce19b4680b79ae9f9ca185965defc22e77e0abddf443573238d6 languageName: node linkType: hard -"jsonwebtoken@npm:^9.0.2": - version: 9.0.3 - resolution: "jsonwebtoken@npm:9.0.3" +"jsonwebtoken@npm:^9.0.0": + version: 9.0.2 + resolution: "jsonwebtoken@npm:9.0.2" dependencies: - jws: "npm:^4.0.1" + jws: "npm:^3.2.2" lodash.includes: "npm:^4.3.0" lodash.isboolean: "npm:^3.0.3" lodash.isinteger: "npm:^4.0.4" @@ -26908,7 +26854,7 @@ __metadata: lodash.once: "npm:^4.0.0" ms: "npm:^2.1.1" semver: "npm:^7.5.4" - checksum: 10/a67a276db41fbfb458ebdc4938d5d7b01d4743e16bda0f25ac01996fe5b5819d66656153f6cfce19b4680b79ae9f9ca185965defc22e77e0abddf443573238d6 + checksum: 10/6e9b6d879cec2b27f2f3a88a0c0973edc7ba956a5d9356b2626c4fddfda969e34a3832deaf79c3e1c6c9a525bc2c4f2c2447fa477f8ac660f0017c31a59ae96b languageName: node linkType: hard @@ -26953,25 +26899,14 @@ __metadata: languageName: node linkType: hard -"jwa@npm:^1.4.1": - version: 1.4.1 - resolution: "jwa@npm:1.4.1" - dependencies: - buffer-equal-constant-time: "npm:1.0.1" - ecdsa-sig-formatter: "npm:1.0.11" - safe-buffer: "npm:^5.0.1" - checksum: 10/0bc002b71dd70480fedc7d442a4d2b9185a9947352a027dcb4935864ad2323c57b5d391adf968a3622b61e940cef4f3484d5813b95864539272d41cac145d6f3 - languageName: node - linkType: hard - -"jwa@npm:^2.0.0": - version: 2.0.0 - resolution: "jwa@npm:2.0.0" +"jwa@npm:^1.4.2": + version: 1.4.2 + resolution: "jwa@npm:1.4.2" dependencies: - buffer-equal-constant-time: "npm:1.0.1" + buffer-equal-constant-time: "npm:^1.0.1" ecdsa-sig-formatter: "npm:1.0.11" safe-buffer: "npm:^5.0.1" - checksum: 10/ab983f6685d99d13ddfbffef9b1c66309a536362a8412d49ba6e687d834a1240ce39290f30ac7dbe241e0ab6c76fee7ff795776ce534e11d148158c9b7193498 + checksum: 10/a46c9ddbcc226d9e85e13ef96328c7d331abddd66b5a55ec44bcf4350464a6125385ac9c1e64faa0fae8d586d90a14d6b5e96c73f0388970a3918d5252efb0f3 languageName: node linkType: hard @@ -26986,27 +26921,17 @@ __metadata: languageName: node linkType: hard -"jws@npm:^3.2.2": - version: 3.2.2 - resolution: "jws@npm:3.2.2" - dependencies: - jwa: "npm:^1.4.1" - safe-buffer: "npm:^5.0.1" - checksum: 10/70b016974af8a76d25030c80a0097b24ed5b17a9cf10f43b163c11cb4eb248d5d04a3fe48c0d724d2884c32879d878ccad7be0663720f46b464f662f7ed778fe - languageName: node - linkType: hard - -"jws@npm:^4.0.0": - version: 4.0.0 - resolution: "jws@npm:4.0.0" +"jws@npm:3.2.3": + version: 3.2.3 + resolution: "jws@npm:3.2.3" dependencies: - jwa: "npm:^2.0.0" + jwa: "npm:^1.4.2" safe-buffer: "npm:^5.0.1" - checksum: 10/1d15f4cdea376c6bd6a81002bd2cb0bf3d51d83da8f0727947b5ba3e10cf366721b8c0d099bf8c1eb99eb036e2c55e5fd5efd378ccff75a2b4e0bd10002348b9 + checksum: 10/707387dd1cabcc3d9c2818f773cfaac7ede66e79ca11bbd159285a88cf5d8e8f355afcb8ee373e7bb0fcf9b7a2df015b22c50f27842f2c77453f04cd9f8f4009 languageName: node linkType: hard -"jws@npm:^4.0.1": +"jws@npm:4.0.1, jws@npm:^4.0.1": version: 4.0.1 resolution: "jws@npm:4.0.1" dependencies: @@ -27832,26 +27757,6 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" - dependencies: - "@npmcli/agent": "npm:^2.0.0" - cacache: "npm:^18.0.0" - http-cache-semantics: "npm:^4.1.1" - is-lambda: "npm:^1.0.1" - minipass: "npm:^7.0.2" - minipass-fetch: "npm:^3.0.0" - minipass-flush: "npm:^1.0.5" - minipass-pipeline: "npm:^1.2.4" - negotiator: "npm:^0.6.3" - proc-log: "npm:^4.2.0" - promise-retry: "npm:^2.0.1" - ssri: "npm:^10.0.0" - checksum: 10/11bae5ad6ac59b654dbd854f30782f9de052186c429dfce308eda42374528185a100ee40ac9ffdc36a2b6c821ecaba43913e4730a12f06f15e895ea9cb23fa59 - languageName: node - linkType: hard - "make-fetch-happen@npm:^14.0.3": version: 14.0.3 resolution: "make-fetch-happen@npm:14.0.3" @@ -28085,13 +27990,6 @@ __metadata: languageName: node linkType: hard -"mdn-data@npm:2.0.30": - version: 2.0.30 - resolution: "mdn-data@npm:2.0.30" - checksum: 10/e4944322bf3e0461a2daa2aee7e14e208960a036289531e4ef009e53d32bd41528350c070c4a33be867980443fe4c0523518d99318423cffa7c825fe7b1154e2 - languageName: node - linkType: hard - "mdn-data@npm:2.12.1": version: 2.12.1 resolution: "mdn-data@npm:2.12.1" @@ -28099,6 +27997,13 @@ __metadata: languageName: node linkType: hard +"mdn-data@npm:2.27.1": + version: 2.27.1 + resolution: "mdn-data@npm:2.27.1" + checksum: 10/5046dc83a961b8ea82a5d6d8331d07df6b15faec61519ce2f83e49766702358e7e6af96413be977ff89080534be6762c1d5963b5dd1180c208a47c0a663226b2 + languageName: node + linkType: hard + "mdurl@npm:^2.0.0": version: 2.0.0 resolution: "mdurl@npm:2.0.0" @@ -28473,34 +28378,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:4.2.1": - version: 4.2.1 - resolution: "minimatch@npm:4.2.1" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10/27e49fb720116face9588c29634404edc0c6677e5448ba01b4ec6179002461cc4fabc842497a0537edc5aa87bc93e65cfb0fe6dc32b850563429a64836dd1d54 - languageName: node - linkType: hard - -"minimatch@npm:^10.0.0": - version: 10.0.1 - resolution: "minimatch@npm:10.0.1" - dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/082e7ccbc090d5f8c4e4e029255d5a1d1e3af37bda837da2b8b0085b1503a1210c91ac90d9ebfe741d8a5f286ece820a1abb4f61dc1f82ce602a055d461d93f3 - languageName: node - linkType: hard - -"minimatch@npm:^10.2.2": - version: 10.2.4 - resolution: "minimatch@npm:10.2.4" - dependencies: - brace-expansion: "npm:^5.0.2" - checksum: 10/aea4874e521c55bb60744685bbffe3d152e5460f84efac3ea936e6bbe2ceba7deb93345fec3f9bb17f7b6946776073a64d40ae32bf5f298ad690308121068a1f - languageName: node - linkType: hard - -"minimatch@npm:^10.2.5": +"minimatch@npm:10.2.5, minimatch@npm:^10.1.1, minimatch@npm:^10.2.5": version: 10.2.5 resolution: "minimatch@npm:10.2.5" dependencies: @@ -28509,16 +28387,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.0, minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10/e0b25b04cd4ec6732830344e5739b13f8690f8a012d73445a4a19fbc623f5dd481ef7a5827fde25954cd6026fede7574cc54dc4643c99d6c6b653d6203f94634 - languageName: node - linkType: hard - -"minimatch@npm:^3.1.5": +"minimatch@npm:3.1.5, minimatch@npm:^3.1.5": version: 3.1.5 resolution: "minimatch@npm:3.1.5" dependencies: @@ -28527,39 +28396,39 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^5.1.0": - version: 5.1.6 - resolution: "minimatch@npm:5.1.6" +"minimatch@npm:4.2.6": + version: 4.2.6 + resolution: "minimatch@npm:4.2.6" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/126b36485b821daf96d33b5c821dac600cc1ab36c87e7a532594f9b1652b1fa89a1eebcaad4dff17c764dce1a7ac1531327f190fed5f97d8f6e5f889c116c429 + brace-expansion: "npm:^1.1.7" + checksum: 10/2f68ec7fe10196740f0e07304b54e1ed539b00977c23443e0efda2d70f5fe1208c36cca3eadeac6c2ef71474e3ba4b0ae121bfe0a7f46d3e3106d1c785fac930 languageName: node linkType: hard -"minimatch@npm:^7.4.6": - version: 7.4.6 - resolution: "minimatch@npm:7.4.6" +"minimatch@npm:5.1.9": + version: 5.1.9 + resolution: "minimatch@npm:5.1.9" dependencies: brace-expansion: "npm:^2.0.1" - checksum: 10/0046ba1161ac6414bde1b07c440792ebcdb2ed93e6714c85c73974332b709b7e692801550bc9da22028a8613407b3f13861e17dd0dd44f4babdeacd44950430b + checksum: 10/23b4feb64dcb77ba93b70a72be551eb2e2677ac02178cf1ed3d38836cc4cd84802d90b77f60ef87f2bac64d270d2d8eba242e428f0554ea4e36bfdb7e9d25d0c languageName: node linkType: hard -"minimatch@npm:^9.0.4": - version: 9.0.5 - resolution: "minimatch@npm:9.0.5" +"minimatch@npm:7.4.9": + version: 7.4.9 + resolution: "minimatch@npm:7.4.9" dependencies: - brace-expansion: "npm:^2.0.1" - checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348 + brace-expansion: "npm:^2.0.2" + checksum: 10/9bc60b593dafb71d68b1a671a0c1a4bb9a71ef2f8daa8ed4b8b6199bb2d522163fb2e94d82ca40518eaa3b00218f587ad7ab2ed40e56e4c57a8bddb6c2bd1d27 languageName: node linkType: hard -"minimatch@npm:~3.0.4": - version: 3.0.8 - resolution: "minimatch@npm:3.0.8" +"minimatch@npm:9.0.9": + version: 9.0.9 + resolution: "minimatch@npm:9.0.9" dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10/6df5373cb1ea79020beb6887ff5576c58cfabcfd32c5a65c2cf58f326e4ee8eae84f129e5fa50b8a4347fa1d1e583f931285c9fb3040d984bdfb5109ef6607ec + brace-expansion: "npm:^2.0.2" + checksum: 10/b91fad937deaffb68a45a2cb731ff3cff1c3baf9b6469c879477ed16f15c8f4ce39d63a3f75c2455107c2fdff0f3ab597d97dc09e2e93b883aafcf926ef0c8f9 languageName: node linkType: hard @@ -28590,21 +28459,6 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.5 - resolution: "minipass-fetch@npm:3.0.5" - dependencies: - encoding: "npm:^0.1.13" - minipass: "npm:^7.0.3" - minipass-sized: "npm:^1.0.3" - minizlib: "npm:^2.1.2" - dependenciesMeta: - encoding: - optional: true - checksum: 10/c669948bec1373313aaa8f104b962a3ced9f45c49b26366a4b0ae27ccdfa9c5740d72c8a84d3f8623d7a61c5fc7afdfda44789008c078f61a62441142efc4a97 - languageName: node - linkType: hard - "minipass-fetch@npm:^4.0.0": version: 4.0.0 resolution: "minipass-fetch@npm:4.0.0" @@ -28656,13 +28510,6 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 10/61682162d29f45d3152b78b08bab7fb32ca10899bc5991ffe98afc18c9e9543bd1e3be94f8b8373ba6262497db63607079dc242ea62e43e7b2270837b7347c93 - languageName: node - linkType: hard - "minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" @@ -28670,16 +28517,6 @@ __metadata: languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" - dependencies: - minipass: "npm:^3.0.0" - yallist: "npm:^4.0.0" - checksum: 10/ae0f45436fb51344dcb87938446a32fbebb540d0e191d63b35e1c773d47512e17307bf54aa88326cc6d176594d00e4423563a091f7266c2f9a6872cdc1e234d1 - languageName: node - linkType: hard - "minizlib@npm:^3.0.1": version: 3.0.1 resolution: "minizlib@npm:3.0.1" @@ -28690,6 +28527,15 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.1.0": + version: 3.1.0 + resolution: "minizlib@npm:3.1.0" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10/f47365cc2cb7f078cbe7e046eb52655e2e7e97f8c0a9a674f4da60d94fb0624edfcec9b5db32e8ba5a99a5f036f595680ae6fe02a262beaa73026e505cc52f99 + languageName: node + linkType: hard + "mkdirp-classic@npm:^0.5.2, mkdirp-classic@npm:^0.5.3": version: 0.5.3 resolution: "mkdirp-classic@npm:0.5.3" @@ -28708,7 +28554,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": +"mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -28717,15 +28563,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^3.0.1": - version: 3.0.1 - resolution: "mkdirp@npm:3.0.1" - bin: - mkdirp: dist/cjs/src/bin.js - checksum: 10/16fd79c28645759505914561e249b9a1f5fe3362279ad95487a4501e4467abeb714fd35b95307326b8fd03f3c7719065ef11a6f97b7285d7888306d1bd2232ba - languageName: node - linkType: hard - "mocha@npm:^9.2.2": version: 9.2.2 resolution: "mocha@npm:9.2.2" @@ -29107,7 +28944,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:0.6.3, negotiator@npm:^0.6.3": +"negotiator@npm:0.6.3": version: 0.6.3 resolution: "negotiator@npm:0.6.3" checksum: 10/2723fb822a17ad55c93a588a4bc44d53b22855bf4be5499916ca0cab1e7165409d0b288ba2577d7b029f10ce18cf2ed8e703e5af31c984e1e2304277ef979837 @@ -29199,21 +29036,21 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" +"node-addon-api@npm:^7.0.0": + version: 7.1.1 + resolution: "node-addon-api@npm:7.1.1" dependencies: node-gyp: "npm:latest" - checksum: 10/595f59ffb4630564f587c502119cbd980d302e482781021f3b479f5fc7e41cf8f2f7280fdc2795f32d148e4f3259bd15043c52d4a3442796aa6f1ae97b959636 + checksum: 10/ee1e1ed6284a2f8cd1d59ac6175ecbabf8978dcf570345e9a8095a9d0a2b9ced591074ae77f9009287b00c402352b38aa9322a34f2199cdc9f567b842a636b94 languageName: node linkType: hard -"node-addon-api@npm:^7.0.0": - version: 7.1.1 - resolution: "node-addon-api@npm:7.1.1" +"node-addon-api@npm:^8.3.0": + version: 8.7.0 + resolution: "node-addon-api@npm:8.7.0" dependencies: node-gyp: "npm:latest" - checksum: 10/ee1e1ed6284a2f8cd1d59ac6175ecbabf8978dcf570345e9a8095a9d0a2b9ced591074ae77f9009287b00c402352b38aa9322a34f2199cdc9f567b842a636b94 + checksum: 10/a384774d04f019fc32745b9168fab8d4b91df2d7558a57c91e6d87e00acab3c9a08292c074a3c0efb5d4f4adaf1b79cb65c002a3fbcafd8d3d5b3dc91d0ac495 languageName: node linkType: hard @@ -29264,30 +29101,41 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:1.3.2": - version: 1.3.2 - resolution: "node-forge@npm:1.3.2" - checksum: 10/dcc54aaffe0cf52367214a20c0032aa9b209d9095dd14526504f1972d1900a07e96046b3684cb0c8d0cc3d48744dd18e02b7b447ab28fac615ffb850beeabf18 +"node-forge@npm:1.4.0": + version: 1.4.0 + resolution: "node-forge@npm:1.4.0" + checksum: 10/d70fd769768e646eda73343d4d4105ccb6869315d975905a22117431c04ae5b6df6c488e34ed275b1a66b50195a09b84b5c8aeca3b8605c20605fcb8e9f109d9 languageName: node linkType: hard -"node-gyp@npm:^10.2.0": - version: 10.3.1 - resolution: "node-gyp@npm:10.3.1" +"node-gyp-build@npm:^4.8.4": + version: 4.8.4 + resolution: "node-gyp-build@npm:4.8.4" + bin: + node-gyp-build: bin.js + node-gyp-build-optional: optional.js + node-gyp-build-test: build-test.js + checksum: 10/6a7d62289d1afc419fc8fc9bd00aa4e554369e50ca0acbc215cb91446148b75ff7e2a3b53c2c5b2c09a39d416d69f3d3237937860373104b5fe429bf30ad9ac5 + languageName: node + linkType: hard + +"node-gyp@npm:^11.0.0": + version: 11.5.0 + resolution: "node-gyp@npm:11.5.0" dependencies: env-paths: "npm:^2.2.0" exponential-backoff: "npm:^3.1.1" - glob: "npm:^10.3.10" graceful-fs: "npm:^4.2.6" - make-fetch-happen: "npm:^13.0.0" - nopt: "npm:^7.0.0" - proc-log: "npm:^4.1.0" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" semver: "npm:^7.3.5" - tar: "npm:^6.2.1" - which: "npm:^4.0.0" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" bin: node-gyp: bin/node-gyp.js - checksum: 10/d3004f648559e42d7ec8791ea75747fe8a163a6061c202e311e5d7a5f6266baa9a5f5c6fde7be563974c88b030c5d0855fd945364f52fcd230d2a2ceee7be80d + checksum: 10/15a600b626116e1e528c49f73027c5ff84dbf6986df77b0fb61d6eb079ab4230c39f245295cb67f0590e6541a848cbd267e00c5769e8fb8bf88a5cca3701b551 languageName: node linkType: hard @@ -29357,17 +29205,17 @@ __metadata: languageName: node linkType: hard -"nodemailer@npm:7.0.9": - version: 7.0.9 - resolution: "nodemailer@npm:7.0.9" - checksum: 10/88883c58afe356d2b4c24b1e976c04857e8a7a7145e1752dab69072900b0cc2e3daa0964a08c653e692fb64382453e1cfcee3d863828844c8d6f6239727b9023 +"nodemailer@npm:7.0.13": + version: 7.0.13 + resolution: "nodemailer@npm:7.0.13" + checksum: 10/4ae37bfb6896f1555de150c1098a7c1b28eb1da240a4c7adede81a8af0dcc184298cfbf804930599c076ea574428e0c18c6b28f0dc2072cebb30c1da5fd0b688 languageName: node linkType: hard -"nodemailer@npm:^8.0.5": - version: 8.0.5 - resolution: "nodemailer@npm:8.0.5" - checksum: 10/84d44afb0cd20ce02d5e4f0f8465b02aa0af0e11c1b0d40a4e9658d07321655a8ea528533840a38f213a45ca7865ec85f0aed6dc3ac3038d7b2c9405db6cd353 +"nodemailer@npm:8.0.7": + version: 8.0.7 + resolution: "nodemailer@npm:8.0.7" + checksum: 10/f0afea43af7f7deb55913811362b5d255e9d70c87024eb8b5161acd8a3a3c765454a52eefbfe40a5fe79ff0475b5445acafd20cb187826222b895dee15470c8f languageName: node linkType: hard @@ -29382,17 +29230,6 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" - dependencies: - abbrev: "npm:^2.0.0" - bin: - nopt: bin/nopt.js - checksum: 10/95a1f6dec8a81cd18cdc2fed93e6f0b4e02cf6bdb4501c848752c6e34f9883d9942f036a5e3b21a699047d8a448562d891e67492df68ec9c373e6198133337ae - languageName: node - linkType: hard - "nopt@npm:^8.0.0": version: 8.1.0 resolution: "nopt@npm:8.1.0" @@ -30029,15 +29866,6 @@ __metadata: languageName: node linkType: hard -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: "npm:^3.0.0" - checksum: 10/7ba4a2b1e24c05e1fc14bbaea0fc6d85cf005ae7e9c9425d4575550f37e2e584b1af97bcde78eacd7559208f20995988d52881334db16cf77bc1bcf68e48ed7c - languageName: node - linkType: hard - "p-map@npm:^7.0.2": version: 7.0.3 resolution: "p-map@npm:7.0.3" @@ -30713,16 +30541,16 @@ __metadata: languageName: node linkType: hard -"playwright-qase-reporter@npm:~2.1.7": - version: 2.1.7 - resolution: "playwright-qase-reporter@npm:2.1.7" +"playwright-qase-reporter@npm:~2.5.0": + version: 2.5.0 + resolution: "playwright-qase-reporter@npm:2.5.0" dependencies: chalk: "npm:^4.1.2" - qase-javascript-commons: "npm:~2.4.16" + qase-javascript-commons: "npm:~2.7.0" uuid: "npm:^9.0.1" peerDependencies: "@playwright/test": ">=1.16.3" - checksum: 10/038bbd9d9fc06aec2dc8c67e797a0aee395bdeef3fd36661024a05d52cecbc850813f75e57e759b1309419ebeb43491c9a9dd158f91eb145c9a53682a2670bca + checksum: 10/23f5dde4ba042c3bf9140a1bdbeacebecc404384f2f48cb9d706b984b42d89071d275ee361e68e446e84ca6cc264a5d42c6324fcf2a16e67efeb2c53448eb4f3 languageName: node linkType: hard @@ -30809,29 +30637,29 @@ __metadata: languageName: node linkType: hard -"postcss-colormin@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-colormin@npm:7.0.3" +"postcss-colormin@npm:^7.0.9": + version: 7.0.9 + resolution: "postcss-colormin@npm:7.0.9" dependencies: - browserslist: "npm:^4.24.5" + "@colordx/core": "npm:^5.2.0" + browserslist: "npm:^4.28.2" caniuse-api: "npm:^3.0.0" - colord: "npm:^2.9.3" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/b9016d205eaf61a25efb187264a2ce35cb59aa1734b946268abcd747b5796e0d855c081b460ead4042a17c6806e011b57ee543b9e1f6312620f8daf661a7e40c + postcss: ^8.5.10 + checksum: 10/7ee98cff08d1204d1f5b12a38d07ceb384402c7dcc60060c46593ee8deb53012dd92c877aa991ad1b984fda881313188dc56e5ae0b81bb4e808d271bf4cda319 languageName: node linkType: hard -"postcss-convert-values@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-convert-values@npm:7.0.5" +"postcss-convert-values@npm:^7.0.11": + version: 7.0.11 + resolution: "postcss-convert-values@npm:7.0.11" dependencies: - browserslist: "npm:^4.24.5" + browserslist: "npm:^4.28.2" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/67920f9ba823a6f6aa3b46c3a098c2d4a7a2a32349971cfa6ce986e08e7cbae6badeb23de680d36d1439e7d3f2cdbf26f5ee080a66f2823931c1d3f8146bc2a6 + postcss: ^8.5.10 + checksum: 10/d71c8eda5af861f685cd61e637a6f7599bbf7fde82b85d88936d74c12201e264b04adee12573a9dc930f7dc484c363aa84d7c2696af0b68823ee25e153f9f2d0 languageName: node linkType: hard @@ -30874,41 +30702,41 @@ __metadata: languageName: node linkType: hard -"postcss-discard-comments@npm:^7.0.4": - version: 7.0.4 - resolution: "postcss-discard-comments@npm:7.0.4" +"postcss-discard-comments@npm:^7.0.7": + version: 7.0.7 + resolution: "postcss-discard-comments@npm:7.0.7" dependencies: - postcss-selector-parser: "npm:^7.1.0" + postcss-selector-parser: "npm:^7.1.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/a09ac248bfbd6f2baa72b84873a876f4113df0fb5e9dd10808f6bbb310473fcd7905cc4639dbfd3ad8a5444053d42f7bb644a6934e95305820bdedc731d3c80a + postcss: ^8.5.10 + checksum: 10/c626da7055d6a35ca7c0fb20f67e6013dde2d7bd722e544378e920bd62efb71b8e6322a4870820f2d3c8d9152222e83ed8b5a77fbb639ea2414a646ddf054c9c languageName: node linkType: hard -"postcss-discard-duplicates@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-discard-duplicates@npm:7.0.2" +"postcss-discard-duplicates@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-discard-duplicates@npm:7.0.3" peerDependencies: - postcss: ^8.4.32 - checksum: 10/2da841b5c0117528e56e1ccda28924339c03fdb93dab61b767cebb9a9e4a2a077498d00e0c97c9ec36a534f98d6f358e6236f30913c184f90d51f6d302f4f0f6 + postcss: ^8.5.10 + checksum: 10/6b8b9291768745bbe23f9c6c7b185d80f7195f6c5831bbe4a67817e81edf6d3e52532a90d5c314c0aa93a55b164439592a93e7843eadcc8904ba9fa2de12a4c1 languageName: node linkType: hard -"postcss-discard-empty@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-discard-empty@npm:7.0.1" +"postcss-discard-empty@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-discard-empty@npm:7.0.2" peerDependencies: - postcss: ^8.4.32 - checksum: 10/39977000657e78202da891ae6300593e40e1c8a756f1d9707087390e47a410739c394c35e902130556efb5808e6701b3b34b89facf7a9e56533d617dd9597049 + postcss: ^8.5.10 + checksum: 10/81b691ea940dfef0f217b0391443ea8d3cfa5b46bf0b79ca271b212eb259a66f00cc8ccfa1a20e47ef39a867cf470e4c821d60d1c512ce1cd7595674797e538a languageName: node linkType: hard -"postcss-discard-overridden@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-discard-overridden@npm:7.0.1" +"postcss-discard-overridden@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-discard-overridden@npm:7.0.2" peerDependencies: - postcss: ^8.4.32 - checksum: 10/a0e67314b696591396e6bb371cdd57537e06f63e9fa0d742fe678decf600bed0cdcfa481487bce91b3732bdd7c46338f9102ccc8180c41032811e99962883715 + postcss: ^8.5.10 + checksum: 10/4b15dc21b35372cfb15c3375cffd81c370713869ccd1884c00d4f5094e50b556cf287f028122178ff7acf2e175d4b90b228cc079480a9286e8e6db31922edadf languageName: node linkType: hard @@ -31028,78 +30856,80 @@ __metadata: languageName: node linkType: hard -"postcss-merge-longhand@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-merge-longhand@npm:7.0.5" +"postcss-merge-longhand@npm:^7.0.6": + version: 7.0.6 + resolution: "postcss-merge-longhand@npm:7.0.6" dependencies: postcss-value-parser: "npm:^4.2.0" - stylehacks: "npm:^7.0.5" + stylehacks: "npm:^7.0.10" peerDependencies: - postcss: ^8.4.32 - checksum: 10/3378fc3a196082dfdb9acff94efbfa0de95ed86bf87f485285e775fd3c21218e5a243e363ad80b96237edb454776f7c1deea28c37afb8b96ddfaf5cfe8bd606b + postcss: ^8.5.10 + checksum: 10/5dad711b13c25a1c9120944ec9bcc0b2c7bb436ffea4a46560b30fe7971aaa07e697751d312b9fe01edaa3762a3928040683d3965ba2acba53e57a7000c03fa1 languageName: node linkType: hard -"postcss-merge-rules@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-merge-rules@npm:7.0.5" +"postcss-merge-rules@npm:^7.0.10": + version: 7.0.10 + resolution: "postcss-merge-rules@npm:7.0.10" dependencies: - browserslist: "npm:^4.24.5" + browserslist: "npm:^4.28.2" caniuse-api: "npm:^3.0.0" - cssnano-utils: "npm:^5.0.1" - postcss-selector-parser: "npm:^7.1.0" + cssnano-utils: "npm:^5.0.2" + postcss-selector-parser: "npm:^7.1.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/fa490791ea5e907e4498701593252ce33df468a821e5f3acf5f126f73c8262189c13ca7a0c1645ae3d66a46a03cf930048e10d808182a3e9bec78af30a02893a + postcss: ^8.5.10 + checksum: 10/e3c42c9ee5b458baa8b9cc48127437bffd22b1c8ed54acf20d38f92ce601bdf1f930948e2304193a6d8817e8b0134f8618c9f3d249b183979df66121a39cd3b5 languageName: node linkType: hard -"postcss-minify-font-values@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-minify-font-values@npm:7.0.1" +"postcss-minify-font-values@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-minify-font-values@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/6578a1fd293e202e738ce38d91d71c08ba970f4a998edff48022cb21ec23ef26bf7d284ddb41d6e51bf20b5b5676fe142de1bd092a76d2ef982d5ee1d6b00190 + postcss: ^8.5.10 + checksum: 10/853f0bcf604aa03fc36a36cfb3fe80e5d4c89734ff08e6ddd0c1e43ad5a0dda7454fad547f7b371bf8939d68f0a2f79324f9b2bf156e0558aabb95bcfebfdffa languageName: node linkType: hard -"postcss-minify-gradients@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-minify-gradients@npm:7.0.1" +"postcss-minify-gradients@npm:^7.0.4": + version: 7.0.4 + resolution: "postcss-minify-gradients@npm:7.0.4" dependencies: - colord: "npm:^2.9.3" - cssnano-utils: "npm:^5.0.1" + "@colordx/core": "npm:^5.2.0" + cssnano-utils: "npm:^5.0.2" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/4aa782331c5d1826e549b3940eefb54e2d51f5c5a2c5f5537384bfe6eac45bfe7ba4535c03cd1642d8a27ab088f56c3682b55f5dd2c3f7969b715692e0c1102b + postcss: ^8.5.10 + checksum: 10/faa52003e9b1df59bbeb691013e0ad385d98d16b06c01166176d583c8076da37c1f20e04efba565908307bd6f06f427e4bf0abdbc2435a6334ab36944ba25047 languageName: node linkType: hard -"postcss-minify-params@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-minify-params@npm:7.0.3" +"postcss-minify-params@npm:^7.0.8": + version: 7.0.8 + resolution: "postcss-minify-params@npm:7.0.8" dependencies: - browserslist: "npm:^4.24.5" - cssnano-utils: "npm:^5.0.1" + browserslist: "npm:^4.28.2" + cssnano-utils: "npm:^5.0.2" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/97de22d6ba0310685d33b530dbfeefa930f7ac48effe623fc8a4a59d2b98bed221d0d2edad4f2e1f4590322240d0e1e94bdb162069c40b5d7ae00c58637c90c9 + postcss: ^8.5.10 + checksum: 10/7d2e6b335ad653f23d90d8cb8c94a12bf478af986792b88d0b35a970c5a7a13cec508090a4ecedf57076df85e952d20f59611c7344625798711e2a27461458a4 languageName: node linkType: hard -"postcss-minify-selectors@npm:^7.0.5": - version: 7.0.5 - resolution: "postcss-minify-selectors@npm:7.0.5" +"postcss-minify-selectors@npm:^7.1.0": + version: 7.1.0 + resolution: "postcss-minify-selectors@npm:7.1.0" dependencies: + browserslist: "npm:^4.28.1" + caniuse-api: "npm:^3.0.0" cssesc: "npm:^3.0.0" - postcss-selector-parser: "npm:^7.1.0" + postcss-selector-parser: "npm:^7.1.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/12580d9a17c146c9e9bb604b4887085d897554317590cee91e0f28e2a4757c18e09299365a44eae25e848e65d53b845928dfa56a9d0199d0e159d525732fbf89 + postcss: ^8.5.10 + checksum: 10/948236e37ebaae30ede227188fac6e9277b985f2b8c338890ccc325f9eb218b18e3838147ddb36323edfc87d1c50bf49313423bf8c9cfba44552b5e3b3705131 languageName: node linkType: hard @@ -31199,136 +31029,136 @@ __metadata: languageName: node linkType: hard -"postcss-normalize-charset@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-charset@npm:7.0.1" +"postcss-normalize-charset@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-charset@npm:7.0.2" peerDependencies: - postcss: ^8.4.32 - checksum: 10/bcec822491e3421b009c688473433164b5c80bbef48af4e47f704bee68f0b7ba2009aaf46788e698dd233d5f4e1cf444a4f59a901623c73f8458c2227b15db57 + postcss: ^8.5.10 + checksum: 10/a80b41424e49b572566dd66b768d2092ae0c758395656588f4e60e7625d13bcfc0db871b5e0d93e147c5e87db4db7301a1fc7eca168f8d971842c4b00fb5e718 languageName: node linkType: hard -"postcss-normalize-display-values@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-display-values@npm:7.0.1" +"postcss-normalize-display-values@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-display-values@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/53f341c17a5487639e6f7c917ad695e059bf4aff66b3c971e008163f774337444753310def9f38dd26066ea96b136422592fc74077c38c40b3bfdfaa338d5b58 + postcss: ^8.5.10 + checksum: 10/572b5e81f89f2161e07dff46d5a8b2469a3572463da35cb257aa0b2f8d1340eb8a9206c0aade4de230b1fcbaa3a2967c0377b4c353392042ae0967975dd8203e languageName: node linkType: hard -"postcss-normalize-positions@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-positions@npm:7.0.1" +"postcss-normalize-positions@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-normalize-positions@npm:7.0.3" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/72b23ab87c97c155d2ec475fba8a8b968f7c7b42d055a79b267449d570c328d5ea4cb0002428cf26e9daa70c58655e0b931d2a5801cc407554d3f03a21ac041b + postcss: ^8.5.10 + checksum: 10/a05033036d9f734567b491b37ee0f7ea757d710ae73235ee2d04d22d49d5a94b5145da3ee94c6c668670510d6b83c58eb2311b28a448f23d9af78c9c2481ef26 languageName: node linkType: hard -"postcss-normalize-repeat-style@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-repeat-style@npm:7.0.1" +"postcss-normalize-repeat-style@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-normalize-repeat-style@npm:7.0.3" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/db677bceec8c00a1860b64932b99af937e7674b3e5c5ac333c95efb090e9abd747eca4ad51855f0fe73fbe544c3d21e58d06b39e03fd525945309743e31ec235 + postcss: ^8.5.10 + checksum: 10/f3b9395712b6404888127069de7f9fb7ed831707845ceec39e8d3db8df5d5a2d914fffbab20eb221acaf9610081143f4c8dd520a72f88e31d90f52e2edb1295e languageName: node linkType: hard -"postcss-normalize-string@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-string@npm:7.0.1" +"postcss-normalize-string@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-string@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/48df2eaca6f5365af31ad46fd60a32dc7b714cc5ec8ba80980e65855ddc47c03ac82077ce7ca04c90898f73d173410d1d6a104754ff487e7e5a59e3eae8325b3 + postcss: ^8.5.10 + checksum: 10/1534725a6260e265feecb10696a9d9b364b7e7cbe38a7a7be774a5fb4fd27790dba2702c5954dbff18b33c2ef4234535ec85a3125130e548a84d0dc6be1f9475 languageName: node linkType: hard -"postcss-normalize-timing-functions@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-timing-functions@npm:7.0.1" +"postcss-normalize-timing-functions@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-timing-functions@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/31fb88489244334295918fa7d6af2d76c310a83abd20be0a7f1c408c54ac0c0f81b0ae7877698bf66de1f76495766e159c8871387407dfcafa0cb1a53f5f0460 + postcss: ^8.5.10 + checksum: 10/b97932b267ba9a23feec40e1ad6c428d0fdf4e8183d3e672ac649ed38fc72fe388f05d23de4c0f6a8b268ee30f441a3a86ccccc4b08aba4c34adf21e4906ee5b languageName: node linkType: hard -"postcss-normalize-unicode@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-normalize-unicode@npm:7.0.3" +"postcss-normalize-unicode@npm:^7.0.8": + version: 7.0.8 + resolution: "postcss-normalize-unicode@npm:7.0.8" dependencies: - browserslist: "npm:^4.24.5" + browserslist: "npm:^4.28.2" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/fc10205655f77d6467da811fbd26aa607c519cbf162ae2ba40821cf64227233445490881119c820c6988c0943cb2f4dc755abe94cb30637001ca35cce5d07b61 + postcss: ^8.5.10 + checksum: 10/25131e2c2ebb7a1b03a40fd2f0241b9ad959be1d6adca844c34085184e4dcfc62c7fd964f499229ea7b9ba2249f9554c054cc1d9fccee4ad620892dad9023446 languageName: node linkType: hard -"postcss-normalize-url@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-url@npm:7.0.1" +"postcss-normalize-url@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-url@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/975dd0d1b55b637d45756ec57e554b2134f77368dd3ae09be9fa6636f2f41e72422505409d7fca75c635b9b1b8ec8ec2607d84c6c85497bbfd4e7748a2992882 + postcss: ^8.5.10 + checksum: 10/611e13fa7275f70ef9d07de6ded637d6b4346ce7a17a2f3814b9cbb19c7c296d00aaf6bfc7d2046aab17df1e933c15f6ea71f45ab1172dc652165b868cba80b5 languageName: node linkType: hard -"postcss-normalize-whitespace@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-normalize-whitespace@npm:7.0.1" +"postcss-normalize-whitespace@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-normalize-whitespace@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/05a0fa74f4c8e93243053b9cc865cbddddb309b2ccb08271ca9c38ea7ece2ff43d5faa12cce87f06e40cbcf22c94443c9fa2b74ed0c6b94d72a9e67ea0381626 + postcss: ^8.5.10 + checksum: 10/a862bd2ec56d9e63cec94809b4264d602b59cc2ceea64a505143b9d1bc5074c3d8878c79a1c6d69ddf02f9d475760787fa94bb40c3570fc384da5cd4db1a13ca languageName: node linkType: hard -"postcss-ordered-values@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-ordered-values@npm:7.0.2" +"postcss-ordered-values@npm:^7.0.3": + version: 7.0.3 + resolution: "postcss-ordered-values@npm:7.0.3" dependencies: - cssnano-utils: "npm:^5.0.1" + cssnano-utils: "npm:^5.0.2" postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/be8fb13639fb0e1ffd7d4e9bb4824d3a283c8a63a8b0dd1a654435fff1e019007c79be877940bb101bb9ebd8ba3ac18bcffd144e939890bedeb40044dcc2b9cc + postcss: ^8.5.10 + checksum: 10/9fd6063afb4c715262c3afb9e5a1f9fec8361128d4e244acc86a143e9ed58a255fba1ebfc49fb3ea8ddf3319c319fd3860a56f282cd4d9b8d55725f980404230 languageName: node linkType: hard -"postcss-reduce-initial@npm:^7.0.3": - version: 7.0.3 - resolution: "postcss-reduce-initial@npm:7.0.3" +"postcss-reduce-initial@npm:^7.0.8": + version: 7.0.8 + resolution: "postcss-reduce-initial@npm:7.0.8" dependencies: - browserslist: "npm:^4.24.5" + browserslist: "npm:^4.28.2" caniuse-api: "npm:^3.0.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/8fd9ff4b49a2f7e1b7c51b7da637578e32a178363e3e932c80565241454dca306658dacd390ad3d73647d55dace8be8fe29278668afa32fd9d872ee7026bdbf7 + postcss: ^8.5.10 + checksum: 10/ac4cdb42b50a4b1c8ea7530c6ddee39cbee430ef3dbca10f60ec252c94f0e9371c5513eddc11bb19ed531ca1f4b21b3641034f316bf0b914f0f47cf8407b5689 languageName: node linkType: hard -"postcss-reduce-transforms@npm:^7.0.1": - version: 7.0.1 - resolution: "postcss-reduce-transforms@npm:7.0.1" +"postcss-reduce-transforms@npm:^7.0.2": + version: 7.0.2 + resolution: "postcss-reduce-transforms@npm:7.0.2" dependencies: postcss-value-parser: "npm:^4.2.0" peerDependencies: - postcss: ^8.4.32 - checksum: 10/a22d07559859b9d4313d579104a25aa254695bc37dec5134de1064d1bd52b9d1f33f050fbf330170ef1105ede9aad7741bbcf9cad2221a6a5c8d529fd3cf0259 + postcss: ^8.5.10 + checksum: 10/f58b6a146915f8aff29c2134cc10d7c04387fb14ea8322658ff27403156a8fc5b858ad022e11a68a0d080517dd5c59a2daeec427770edaa86b054daec55d2a74 languageName: node linkType: hard @@ -31378,7 +31208,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^7.0.0, postcss-selector-parser@npm:^7.1.0": +"postcss-selector-parser@npm:^7.0.0": version: 7.1.0 resolution: "postcss-selector-parser@npm:7.1.0" dependencies: @@ -31388,6 +31218,16 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:^7.1.1": + version: 7.1.1 + resolution: "postcss-selector-parser@npm:7.1.1" + dependencies: + cssesc: "npm:^3.0.0" + util-deprecate: "npm:^1.0.2" + checksum: 10/bb3c6455b20af26a556e3021e21101d8470252644e673c1612f7348ff8dd41b11321329f0694cf299b5b94863f823480b72d3e2f4bd3a89dc43e2d8c0dbad341 + languageName: node + linkType: hard + "postcss-sorting@npm:^8.0.2": version: 8.0.2 resolution: "postcss-sorting@npm:8.0.2" @@ -31397,26 +31237,26 @@ __metadata: languageName: node linkType: hard -"postcss-svgo@npm:^7.0.2": - version: 7.0.2 - resolution: "postcss-svgo@npm:7.0.2" +"postcss-svgo@npm:^7.1.2": + version: 7.1.2 + resolution: "postcss-svgo@npm:7.1.2" dependencies: postcss-value-parser: "npm:^4.2.0" - svgo: "npm:^3.3.2" + svgo: "npm:^4.0.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/8615877dffbac2bb2b971fb0e8c882ebff479c2529a0fc20937d09623fcaf35a2d934c4046188bae2534729aba1de5a1ba227630aaf96a800b6f2acdbfbf1d32 + postcss: ^8.5.10 + checksum: 10/8e25440ea9030c437a8af86602ea0ca4361abdb8549322dcbc1243dfb532c982a55736122f6ea8faac2b354cd8652758f26a964aec8f7052f2e69328532cf630 languageName: node linkType: hard -"postcss-unique-selectors@npm:^7.0.4": - version: 7.0.4 - resolution: "postcss-unique-selectors@npm:7.0.4" +"postcss-unique-selectors@npm:^7.0.6": + version: 7.0.6 + resolution: "postcss-unique-selectors@npm:7.0.6" dependencies: - postcss-selector-parser: "npm:^7.1.0" + postcss-selector-parser: "npm:^7.1.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/b880f96fdb20037b16ae21b48f5240a4cf8585bf3133c7894dd869711b14f3a1a82bbdecd36adc78f8c34553a46fc2199ed3e92d5031b0267ff6f43894fc00f7 + postcss: ^8.5.10 + checksum: 10/8b63a065bc86c633dc69eb75ed8f3ba45fb5c93ac61fb814f96125cf5d3eed5da550916fdb9f69b8ad424ab562d618329180a14413c8d15e7eddc759ed684601 languageName: node linkType: hard @@ -31651,13 +31491,6 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 10/4e1394491b717f6c1ade15c570ecd4c2b681698474d3ae2d303c1e4b6ab9455bd5a81566211e82890d5a5ae9859718cc6954d5150bb18b09b72ecb297beae90a - languageName: node - linkType: hard - "proc-log@npm:^5.0.0": version: 5.0.0 resolution: "proc-log@npm:5.0.0" @@ -31955,11 +31788,11 @@ __metadata: languageName: node linkType: hard -"qase-javascript-commons@npm:~2.4.16": - version: 2.4.16 - resolution: "qase-javascript-commons@npm:2.4.16" +"qase-javascript-commons@npm:~2.7.0": + version: 2.7.0 + resolution: "qase-javascript-commons@npm:2.7.0" dependencies: - ajv: "npm:^8.17.1" + ajv: "npm:^8.18.0" async-mutex: "npm:~0.5.0" chalk: "npm:^4.1.2" env-schema: "npm:^5.2.1" @@ -31972,7 +31805,7 @@ __metadata: qase-api-v2-client: "npm:~1.0.4" strip-ansi: "npm:^6.0.1" uuid: "npm:^9.0.1" - checksum: 10/28881ec2909cf29d6d365e3a96a08061eb183b3492ee7529f66a07ef466347025bba91f8f70233c0b38cca95362c142f3e2b498efce76469799ab244784b894e + checksum: 10/c2cf147ded3a793edbcb767a73825c8fabb86140c66410bb0bb1cdd8683f6757c74e97de1a8e7a39a4b1a808e0a33ca1b3274623b10add3e88b1762bead6cdbb languageName: node linkType: hard @@ -33487,7 +33320,7 @@ __metadata: "@types/stream-buffers": "npm:^3.0.8" eslint: "npm:~9.39.4" eslint-plugin-you-dont-need-lodash-underscore: "npm:~6.14.0" - node-gyp: "npm:^10.2.0" + node-gyp: "npm:^11.0.0" ts-node: "npm:^10.9.2" turbo: "npm:2.8.21" typescript: "npm:~5.9.3" @@ -33518,7 +33351,7 @@ __metadata: "@types/node": "npm:~22.16.5" "@types/ws": "npm:^8.18.1" ajv: "npm:^8.17.1" - bcrypt: "npm:^5.1.1" + bcrypt: "npm:^6.0.0" body-parser: "npm:^1.20.4" colorette: "npm:^2.0.20" cookie: "npm:^0.7.2" @@ -33779,6 +33612,13 @@ __metadata: languageName: node linkType: hard +"sax@npm:^1.5.0": + version: 1.6.0 + resolution: "sax@npm:1.6.0" + checksum: 10/0909cedcd9f011ceeac80c0240a92d64ef712cf6c04e0f6ee236a8d812f86a59f61bee6bb5da28d75306db050b99e0593051ea77351795822253b984af6cf044 + languageName: node + linkType: hard + "saxes@npm:^6.0.0": version: 6.0.0 resolution: "saxes@npm:6.0.0" @@ -33923,21 +33763,21 @@ __metadata: languageName: node linkType: hard -"semver@npm:2 || 3 || 4 || 5, semver@npm:^5.6.0": - version: 5.7.1 - resolution: "semver@npm:5.7.1" +"semver@npm:5.7.2": + version: 5.7.2 + resolution: "semver@npm:5.7.2" bin: - semver: ./bin/semver - checksum: 10/fbc71cf00736480ca0dd67f2527cda6e0fde5447af00bd2ce06cb522d510216603a63ed0c6c87d8904507c1a4e8113e628a71424ebd9e0fd7d345ee8ed249690 + semver: bin/semver + checksum: 10/fca14418a174d4b4ef1fecb32c5941e3412d52a4d3d85165924ce3a47fbc7073372c26faf7484ceb4bbc2bde25880c6b97e492473dc7e9708fdfb1c6a02d546e languageName: node linkType: hard -"semver@npm:7.6.3": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:7.7.4, semver@npm:^7.7.4": + version: 7.7.4 + resolution: "semver@npm:7.7.4" bin: semver: bin/semver.js - checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 + checksum: 10/26bdc6d58b29528f4142d29afb8526bc335f4fc04c4a10f2b98b217f277a031c66736bf82d3d3bb354a2f6a3ae50f18fd62b053c4ac3f294a3d10a61f5075b75 languageName: node linkType: hard @@ -33950,42 +33790,6 @@ __metadata: languageName: node linkType: hard -"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, semver@npm:^7.6.2, semver@npm:^7.6.3, semver@npm:^7.7.1, semver@npm:^7.7.2": - version: 7.7.2 - resolution: "semver@npm:7.7.2" - bin: - semver: bin/semver.js - checksum: 10/7a24cffcaa13f53c09ce55e05efe25cd41328730b2308678624f8b9f5fc3093fc4d189f47950f0b811ff8f3c3039c24a2c36717ba7961615c682045bf03e1dda - languageName: node - linkType: hard - -"semver@npm:^7.7.3": - version: 7.7.3 - resolution: "semver@npm:7.7.3" - bin: - semver: bin/semver.js - checksum: 10/8dbc3168e057a38fc322af909c7f5617483c50caddba135439ff09a754b20bdd6482a5123ff543dad4affa488ecf46ec5fb56d61312ad20bb140199b88dfaea9 - languageName: node - linkType: hard - -"semver@npm:^7.7.4": - version: 7.7.4 - resolution: "semver@npm:7.7.4" - bin: - semver: bin/semver.js - checksum: 10/26bdc6d58b29528f4142d29afb8526bc335f4fc04c4a10f2b98b217f277a031c66736bf82d3d3bb354a2f6a3ae50f18fd62b053c4ac3f294a3d10a61f5075b75 - languageName: node - linkType: hard - -"semver@npm:~5.3.0": - version: 5.3.0 - resolution: "semver@npm:5.3.0" - bin: - semver: ./bin/semver - checksum: 10/ff3ac60aaa4855a723cc5784c43cf34674096b823037e0e7bb84aa7612acf9093c55c1b47c431f5ebb0ba74299e6d555e89ade74f2e69c348e58eecbd6d61b5e - languageName: node - linkType: hard - "send@npm:0.19.0": version: 0.19.0 resolution: "send@npm:0.19.0" @@ -34747,15 +34551,6 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.6 - resolution: "ssri@npm:10.0.6" - dependencies: - minipass: "npm:^7.0.3" - checksum: 10/f92c1b3cc9bfd0a925417412d07d999935917bc87049f43ebec41074661d64cf720315661844106a77da9f8204b6d55ae29f9514e673083cae39464343af2a8b - languageName: node - linkType: hard - "ssri@npm:^12.0.0": version: 12.0.0 resolution: "ssri@npm:12.0.0" @@ -34930,7 +34725,18 @@ __metadata: languageName: node linkType: hard -"streamx@npm:^2.15.0, streamx@npm:^2.20.0": +"streamx@npm:^2.12.5, streamx@npm:^2.25.0": + version: 2.25.0 + resolution: "streamx@npm:2.25.0" + dependencies: + events-universal: "npm:^1.0.0" + fast-fifo: "npm:^1.3.2" + text-decoder: "npm:^1.1.0" + checksum: 10/d00dd38a1b73e4dac5225344aee421eb12ba9dded3f0ee3427d358d663677af185bc2310f46cb85ff3da31e032a50514d6f66348ba756154fe8a89b845273a3c + languageName: node + linkType: hard + +"streamx@npm:^2.15.0": version: 2.20.1 resolution: "streamx@npm:2.20.1" dependencies: @@ -35272,15 +35078,15 @@ __metadata: languageName: node linkType: hard -"stylehacks@npm:^7.0.5": - version: 7.0.5 - resolution: "stylehacks@npm:7.0.5" +"stylehacks@npm:^7.0.10": + version: 7.0.10 + resolution: "stylehacks@npm:7.0.10" dependencies: - browserslist: "npm:^4.24.5" - postcss-selector-parser: "npm:^7.1.0" + browserslist: "npm:^4.28.2" + postcss-selector-parser: "npm:^7.1.1" peerDependencies: - postcss: ^8.4.32 - checksum: 10/798ac0f92ff4489c251550d64b903f1aa8b5946e5b09b33ebf68290b5a345257cecf98c989526a5d462b560081194fead38c4f804ec016ceb8b1b3f17ec74fc5 + postcss: ^8.5.10 + checksum: 10/875553118587863a67cf54e521e11602c282964db33866771b112c81ddb1e1db5dd13c457d5b04014833817f8e83948c8ec93eac49f498f2ea7d84e8fd8abd14 languageName: node linkType: hard @@ -35483,20 +35289,20 @@ __metadata: languageName: node linkType: hard -"svgo@npm:^3.3.2": - version: 3.3.2 - resolution: "svgo@npm:3.3.2" +"svgo@npm:^4.0.1": + version: 4.0.1 + resolution: "svgo@npm:4.0.1" dependencies: - "@trysound/sax": "npm:0.2.0" - commander: "npm:^7.2.0" + commander: "npm:^11.1.0" css-select: "npm:^5.1.0" - css-tree: "npm:^2.3.1" + css-tree: "npm:^3.0.1" css-what: "npm:^6.1.0" csso: "npm:^5.0.5" - picocolors: "npm:^1.0.0" + picocolors: "npm:^1.1.1" + sax: "npm:^1.5.0" bin: - svgo: ./bin/svgo - checksum: 10/82fdea9b938884d808506104228e4d3af0050d643d5b46ff7abc903ff47a91bbf6561373394868aaf07a28f006c4057b8fbf14bbd666298abdd7cc590d4f7700 + svgo: ./bin/svgo.js + checksum: 10/8791aa12f3d1a5b3da12a67c2f880917512eaf32dad40563ae474deefff0630a4ce2259e06730f02150756ac77cc8b06598d30fb3ed3f02f085e6cbfbd344fb6 languageName: node linkType: hard @@ -35629,24 +35435,24 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:^2.0.0": - version: 2.1.1 - resolution: "tar-fs@npm:2.1.1" +"tar-fs@npm:2.1.4": + version: 2.1.4 + resolution: "tar-fs@npm:2.1.4" dependencies: chownr: "npm:^1.1.1" mkdirp-classic: "npm:^0.5.2" pump: "npm:^3.0.0" tar-stream: "npm:^2.1.4" - checksum: 10/526deae025453e825f87650808969662fbb12eb0461d033e9b447de60ec951c6c4607d0afe7ce057defe9d4e45cf80399dd74bc15f9d9e0773d5e990a78ce4ac + checksum: 10/bdf7e3cb039522e39c6dae3084b1bca8d7bcc1de1906eae4a1caea6a2250d22d26dcc234118bf879b345d91ebf250a744b196e379334a4abcbb109a78db7d3be languageName: node linkType: hard -"tar-fs@npm:^3.0.6": - version: 3.0.6 - resolution: "tar-fs@npm:3.0.6" +"tar-fs@npm:3.0.10": + version: 3.0.10 + resolution: "tar-fs@npm:3.0.10" dependencies: - bare-fs: "npm:^2.1.1" - bare-path: "npm:^2.1.0" + bare-fs: "npm:^4.0.1" + bare-path: "npm:^3.0.0" pump: "npm:^3.0.0" tar-stream: "npm:^3.1.5" dependenciesMeta: @@ -35654,7 +35460,7 @@ __metadata: optional: true bare-path: optional: true - checksum: 10/277f9ba707928ed7396f582b7f9648617f7683a84ac7a97d66404b0811c9c9e55136a6b88e3ba72515c2761b50aebfd428598d2770ea6ba95fda3e06e75380c7 + checksum: 10/0a18701d015ed3db2762db716d4836c0f253d2f8a6fe5e28ded05e1f4ca4f9f29729b7eca1a0d00a5a1629f26a8618c3cbb4a4816e73e570cf381728112117b9 languageName: node linkType: hard @@ -35682,31 +35488,16 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.2.1": - version: 6.2.1 - resolution: "tar@npm:6.2.1" - dependencies: - chownr: "npm:^2.0.0" - fs-minipass: "npm:^2.0.0" - minipass: "npm:^5.0.0" - minizlib: "npm:^2.1.1" - mkdirp: "npm:^1.0.3" - yallist: "npm:^4.0.0" - checksum: 10/bfbfbb2861888077fc1130b84029cdc2721efb93d1d1fb80f22a7ac3a98ec6f8972f29e564103bbebf5e97be67ebc356d37fa48dbc4960600a1eb7230fbd1ea0 - languageName: node - linkType: hard - -"tar@npm:^7.4.3": - version: 7.4.3 - resolution: "tar@npm:7.4.3" +"tar@npm:7.5.13": + version: 7.5.13 + resolution: "tar@npm:7.5.13" dependencies: "@isaacs/fs-minipass": "npm:^4.0.0" chownr: "npm:^3.0.0" minipass: "npm:^7.1.2" - minizlib: "npm:^3.0.1" - mkdirp: "npm:^3.0.1" + minizlib: "npm:^3.1.0" yallist: "npm:^5.0.0" - checksum: 10/12a2a4fc6dee23e07cc47f1aeb3a14a1afd3f16397e1350036a8f4cdfee8dcac7ef5978337a4e7b2ac2c27a9a6d46388fc2088ea7c80cb6878c814b1425f8ecf + checksum: 10/2bc2b6f0349038a6621dbba1c4522d45752d5071b2994692257113c2050cd23fafc30308f820e5f8ad6fda3f7d7f92adc9a432aa733daa04c42af2061c021c3f languageName: node linkType: hard @@ -35732,6 +35523,15 @@ __metadata: languageName: node linkType: hard +"teex@npm:^1.0.1": + version: 1.0.1 + resolution: "teex@npm:1.0.1" + dependencies: + streamx: "npm:^2.12.5" + checksum: 10/36bf7ce8bb5eb428ad7b14b695ee7fb0a02f09c1a9d8181cc42531208543a920b299d711bf78dad4ff9bcf36ac437ae8e138053734746076e3e0e7d6d76eef64 + languageName: node + linkType: hard + "template-file@npm:^6.0.1": version: 6.0.1 resolution: "template-file@npm:6.0.1" @@ -35943,23 +35743,23 @@ __metadata: languageName: node linkType: hard -"tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": - version: 0.2.15 - resolution: "tinyglobby@npm:0.2.15" +"tinyglobby@npm:^0.2.12, tinyglobby@npm:^0.2.16": + version: 0.2.16 + resolution: "tinyglobby@npm:0.2.16" dependencies: fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.3" - checksum: 10/d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2 + picomatch: "npm:^4.0.4" + checksum: 10/5c2c41b572ada38449e7c86a5fe034f204a1dbba577225a761a14f29f48dc3f2fc0d81a6c56fcc67c5a742cc3aa9fb5e2ca18dbf22b610b0bc0e549b34d5a0f8 languageName: node linkType: hard -"tinyglobby@npm:^0.2.16": - version: 0.2.16 - resolution: "tinyglobby@npm:0.2.16" +"tinyglobby@npm:^0.2.14, tinyglobby@npm:^0.2.15": + version: 0.2.15 + resolution: "tinyglobby@npm:0.2.15" dependencies: fdir: "npm:^6.5.0" - picomatch: "npm:^4.0.4" - checksum: 10/5c2c41b572ada38449e7c86a5fe034f204a1dbba577225a761a14f29f48dc3f2fc0d81a6c56fcc67c5a742cc3aa9fb5e2ca18dbf22b610b0bc0e549b34d5a0f8 + picomatch: "npm:^4.0.3" + checksum: 10/d72bd826a8b0fa5fa3929e7fe5ba48fceb2ae495df3a231b6c5408cd7d8c00b58ab5a9c2a76ba56a62ee9b5e083626f1f33599734bed1ffc4b792406408f0ca2 languageName: node linkType: hard @@ -36884,15 +36684,6 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" - dependencies: - unique-slug: "npm:^4.0.0" - checksum: 10/8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df - languageName: node - linkType: hard - "unique-filename@npm:^4.0.0": version: 4.0.0 resolution: "unique-filename@npm:4.0.0" @@ -36902,15 +36693,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" - dependencies: - imurmurhash: "npm:^0.1.4" - checksum: 10/40912a8963fc02fb8b600cf50197df4a275c602c60de4cac4f75879d3c48558cfac48de08a25cc10df8112161f7180b3bbb4d662aadb711568602f9eddee54f0 - languageName: node - linkType: hard - "unique-slug@npm:^5.0.0": version: 5.0.0 resolution: "unique-slug@npm:5.0.0" From 5b291c38600757482aaf261a02487abdf5f14007 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 22:02:07 +0200 Subject: [PATCH 09/69] fix: imported fixes 04-04-26 (#40410) Co-authored-by: Julio Araujo Co-authored-by: Ricardo Garim Co-authored-by: Pierre Lehnen --- .changeset/hot-spoons-heal.md | 5 + .changeset/rich-doodles-grow.md | 9 ++ apps/meteor/.mocharc.js | 1 + .../app/file-upload/server/lib/FileUpload.ts | 2 +- .../server/methods/sendFileMessage.spec.ts | 111 ++++++++++++++ .../server/methods/sendFileMessage.ts | 10 +- .../definition/IServiceProviderOptions.ts | 2 + .../server/definition/SAMLEnvelope.ts | 43 ++++++ .../meteor-accounts-saml/server/lib/SAML.ts | 56 ++++--- .../server/lib/ServiceProvider.ts | 58 +++----- .../meteor-accounts-saml/server/lib/Utils.ts | 28 ++-- .../server/lib/getSAMLEnvelope.ts | 120 +++++++++++++++ .../server/lib/parsers/LogoutRequest.ts | 19 ++- .../server/lib/parsers/LogoutResponse.ts | 19 ++- .../server/lib/parsers/Response.ts | 16 +- .../server/lib/settings.ts | 37 ++++- .../lib/signature/signatureAlgorithms.ts | 38 +++++ .../signature/validateRedirectSignature.ts | 44 ++++++ .../meteor-accounts-saml/server/listener.ts | 12 +- .../server/loginHandler.ts | 10 +- .../server/lib/cas/loginHandler.spec.ts | 56 +++++++ apps/meteor/server/lib/cas/loginHandler.ts | 4 +- apps/meteor/server/oauth2-server/oauth.ts | 44 ++++-- .../tests/e2e/containers/saml/Dockerfile | 5 +- .../saml/config/simplesamlphp/config.php | 1 + .../simplesamlphp/saml20-idp-hosted.php | 23 +++ .../config/simplesamlphp/saml20-sp-remote.php | 6 +- apps/meteor/tests/e2e/saml.spec.ts | 137 +++++++++++++++++- apps/meteor/tests/e2e/utils/saveSettings.ts | 20 +++ .../tests/end-to-end/api/oauth-server.ts | 31 ++++ .../unit/app/meteor-accounts-saml/data.ts | 4 +- .../unit/app/meteor-accounts-saml/helpers.ts | 47 ++++++ .../meteor-accounts-saml/loginHandler.spec.ts | 74 ++++++++++ .../app/meteor-accounts-saml/server.tests.ts | 85 ++++++----- .../src/ILoginServiceConfiguration.ts | 4 +- packages/i18n/src/locales/en.i18n.json | 3 + .../src/models/IBaseUploadsModel.ts | 8 +- packages/models/src/models/BaseUploadModel.ts | 10 +- .../models/src/models/OAuthAccessTokens.ts | 4 +- packages/models/src/models/OAuthApps.ts | 6 + packages/models/src/models/OAuthAuthCodes.ts | 3 + .../models/src/models/OAuthRefreshTokens.ts | 3 + 42 files changed, 1061 insertions(+), 157 deletions(-) create mode 100644 .changeset/hot-spoons-heal.md create mode 100644 .changeset/rich-doodles-grow.md create mode 100644 apps/meteor/app/file-upload/server/methods/sendFileMessage.spec.ts create mode 100644 apps/meteor/app/meteor-accounts-saml/server/definition/SAMLEnvelope.ts create mode 100644 apps/meteor/app/meteor-accounts-saml/server/lib/getSAMLEnvelope.ts create mode 100644 apps/meteor/app/meteor-accounts-saml/server/lib/signature/signatureAlgorithms.ts create mode 100644 apps/meteor/app/meteor-accounts-saml/server/lib/signature/validateRedirectSignature.ts create mode 100644 apps/meteor/server/lib/cas/loginHandler.spec.ts create mode 100644 apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-idp-hosted.php create mode 100644 apps/meteor/tests/e2e/utils/saveSettings.ts create mode 100644 apps/meteor/tests/unit/app/meteor-accounts-saml/helpers.ts create mode 100644 apps/meteor/tests/unit/app/meteor-accounts-saml/loginHandler.spec.ts diff --git a/.changeset/hot-spoons-heal.md b/.changeset/hot-spoons-heal.md new file mode 100644 index 0000000000000..6bcdabec83e39 --- /dev/null +++ b/.changeset/hot-spoons-heal.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Disables SAML login when it is set to validate signatures without the proper configuration for it diff --git a/.changeset/rich-doodles-grow.md b/.changeset/rich-doodles-grow.md new file mode 100644 index 0000000000000..3699a28550a66 --- /dev/null +++ b/.changeset/rich-doodles-grow.md @@ -0,0 +1,9 @@ +--- +'@rocket.chat/model-typings': patch +'@rocket.chat/core-typings': patch +'@rocket.chat/models': patch +'@rocket.chat/i18n': patch +'@rocket.chat/meteor': patch +--- + +Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/apps/meteor/.mocharc.js b/apps/meteor/.mocharc.js index 11d408b22a601..298f6dcc7c9d1 100644 --- a/apps/meteor/.mocharc.js +++ b/apps/meteor/.mocharc.js @@ -11,6 +11,7 @@ module.exports = { exit: true, spec: [ 'server/lib/callbacks.spec.ts', + 'server/lib/cas/*.spec.ts', 'server/lib/ldap/*.spec.ts', 'server/lib/ldap/**/*.spec.ts', 'server/lib/dataExport/**/*.spec.ts', diff --git a/apps/meteor/app/file-upload/server/lib/FileUpload.ts b/apps/meteor/app/file-upload/server/lib/FileUpload.ts index 89878e783a413..a368d28586c0c 100644 --- a/apps/meteor/app/file-upload/server/lib/FileUpload.ts +++ b/apps/meteor/app/file-upload/server/lib/FileUpload.ts @@ -94,7 +94,7 @@ const defaults: Record Partial> = { return { collection: UserDataFiles, getPath(file: IUpload) { - return `${settings.get('uniqueID')}/uploads/userData/${file.userId}`; + return `${settings.get('uniqueID')}/uploads/userData/${file.userId}/${file._id}`; }, onValidate: FileUpload.uploadsOnValidate, async onRead(_fileId: string, file: IUpload, req: http.IncomingMessage, res: http.ServerResponse) { diff --git a/apps/meteor/app/file-upload/server/methods/sendFileMessage.spec.ts b/apps/meteor/app/file-upload/server/methods/sendFileMessage.spec.ts new file mode 100644 index 0000000000000..3a73c375d5d9a --- /dev/null +++ b/apps/meteor/app/file-upload/server/methods/sendFileMessage.spec.ts @@ -0,0 +1,111 @@ +import { expect } from 'chai'; +import { describe, it, beforeEach } from 'mocha'; +import proxyquire from 'proxyquire'; +import sinon from 'sinon'; + +const findOneByIdAndUserIdAndRoomId = sinon.stub(); +const updateFileMetadata = sinon.stub().resolves(); +const getPath = sinon.stub().returns('/path/to/file.txt'); +const isImagePreviewSupported = sinon.stub().returns(false); +const getFileExtension = sinon.stub().returns('txt'); + +const { parseFileIntoMessageAttachments } = proxyquire.noCallThru().load('./sendFileMessage', { + '@rocket.chat/models': { + Uploads: { findOneByIdAndUserIdAndRoomId, updateFileMetadata }, + Rooms: { findOneById: sinon.stub() }, + Users: { findOneById: sinon.stub() }, + }, + 'meteor/check': { + check: sinon.stub(), + Match: { + Maybe: sinon.stub(), + Optional: sinon.stub(), + ObjectIncluding: sinon.stub(), + }, + }, + 'meteor/meteor': { + Meteor: { + Error: class Error extends global.Error {}, + methods: sinon.stub(), + }, + }, + '../lib/FileUpload': { + FileUpload: { getPath }, + }, + './isImagePreviewSupported': { isImagePreviewSupported }, + '../../../../lib/utils/getFileExtension': { getFileExtension }, + '../../../../server/lib/callbacks': { callbacks: { runAsync: sinon.stub() } }, + '../../../../server/lib/logger/system': { SystemLogger: { error: sinon.stub() } }, + '../../../authorization/server/functions/canAccessRoom': { canAccessRoomAsync: sinon.stub().resolves(true) }, + '../../../lib/server/methods/sendMessage': { executeSendMessage: sinon.stub().resolves({}) }, +}); + +describe('sendFileMessage - Mass Assignment & Type Pollution Prevention', () => { + const mockUser = { _id: 'user123' }; + const roomId = 'room123'; + + beforeEach(() => { + findOneByIdAndUserIdAndRoomId.reset(); + updateFileMetadata.reset(); + + findOneByIdAndUserIdAndRoomId.resolves({ _id: 'file123' }); + }); + + it('should filter out invalid types, nulls, and malicious fields before updating the database', async () => { + const maliciousFilePayload = { + _id: 'file123', + name: null, // invalid type, must be ignored + type: 'text/plain', + size: 1024, + description: 12345, // invalid type, must be ignored + typeGroup: 'image', // only valid field + content: null, // invalid type, must be ignored + maliciousRoleAssignment: 'admin', // mass assignment, must be ignored + $set: { bypassSecurity: true }, // mongo injection, must be ignored + }; + + await parseFileIntoMessageAttachments(maliciousFilePayload as any, roomId, mockUser as any); + + expect(updateFileMetadata.calledOnce).to.equal(true); + + const [fileId, userId, safeMetadata] = updateFileMetadata.getCall(0).args; + + expect(fileId).to.equal('file123'); + expect(userId).to.equal('user123'); + + expect(safeMetadata).to.deep.equal({ + typeGroup: 'image', + }); + }); + + it('should pass valid fields correctly to the database', async () => { + const validFilePayload = { + _id: 'file123', + name: 'picture.jpg', + type: 'image/jpeg', + size: 2048, + description: 'Description', + typeGroup: 'image', + content: { + algorithm: 'rc.v1.aes-sha2', + ciphertext: 'test', + }, + }; + + await parseFileIntoMessageAttachments(validFilePayload as any, roomId, mockUser as any); + + expect(updateFileMetadata.calledOnce).to.equal(true); + + const [, , safeMetadata] = updateFileMetadata.getCall(0).args; + + expect(safeMetadata).to.deep.equal({ + name: 'picture.jpg', + description: 'Description', + typeGroup: 'image', + content: { + algorithm: 'rc.v1.aes-sha2', + ciphertext: 'test', + }, + }); + }); +}); diff --git a/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts b/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts index 17aceed6deb31..ec08a5d835a74 100644 --- a/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts +++ b/apps/meteor/app/file-upload/server/methods/sendFileMessage.ts @@ -15,7 +15,6 @@ import { Meteor } from 'meteor/meteor'; import { isImagePreviewSupported } from './isImagePreviewSupported'; import { getFileExtension } from '../../../../lib/utils/getFileExtension'; -import { omit } from '../../../../lib/utils/omit'; import { callbacks } from '../../../../server/lib/callbacks'; import { SystemLogger } from '../../../../server/lib/logger/system'; import { canAccessRoomAsync } from '../../../authorization/server/functions/canAccessRoom'; @@ -46,7 +45,14 @@ export const parseFileIntoMessageAttachments = async ( }); } - await Uploads.updateFileComplete(file._id, user._id, omit(file, '_id')); + const safeMetadata = { + ...(typeof file.name === 'string' && { name: file.name }), + ...(typeof file.description === 'string' && { description: file.description }), + ...(typeof file.typeGroup === 'string' && { typeGroup: file.typeGroup }), + ...(file.content && typeof file.content === 'object' && { content: file.content }), + }; + + await Uploads.updateFileMetadata(file._id, user._id, safeMetadata); const fileUrl = FileUpload.getPath(`${file._id}/${encodeURI(file.name || '')}`); diff --git a/apps/meteor/app/meteor-accounts-saml/server/definition/IServiceProviderOptions.ts b/apps/meteor/app/meteor-accounts-saml/server/definition/IServiceProviderOptions.ts index e00c967288024..673486d0a3dfe 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/definition/IServiceProviderOptions.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/definition/IServiceProviderOptions.ts @@ -14,6 +14,8 @@ export interface IServiceProviderOptions { defaultUserRole: string; allowedClockDrift: number; signatureValidationType: string; + validateLogoutRequestSignature: boolean; + validateLogoutResponseSignature: boolean; identifierFormat: string; nameIDPolicyTemplate: string; authnContextTemplate: string; diff --git a/apps/meteor/app/meteor-accounts-saml/server/definition/SAMLEnvelope.ts b/apps/meteor/app/meteor-accounts-saml/server/definition/SAMLEnvelope.ts new file mode 100644 index 0000000000000..35378aa450c15 --- /dev/null +++ b/apps/meteor/app/meteor-accounts-saml/server/definition/SAMLEnvelope.ts @@ -0,0 +1,43 @@ +// Other binding values are not supported: HTTP-Artifact, URI, SOAP, PAOS +export type SAMLBinding = 'HTTP-Redirect' | 'HTTP-POST'; + +export type SAMLDocumentType = 'SAMLRequest' | 'SAMLResponse'; + +export type SAMLBaseEnvelope = { + binding: SAMLBinding; + /** + * encodedDocument is the document in the exact format we received it + * */ + encodedDocument: string; + /** + * decodedDocument is the raw XML file; processed according to the binding specification + * */ + decodedDocument: string; + type: T; + relayState?: string; +}; + +/** + * HTTP-Redirect envelope + * For this binding, the document must be a Deflated XML file that is then base64 encoded + **/ +export type SAMLRedirectEnvelope = SAMLBaseEnvelope & { + binding: 'HTTP-Redirect'; + sigAlg?: string; + signature?: string; + + /** + * signedContent is the complete string value that must be matched by the signature + * */ + signedContent?: string; +}; + +/** + * HTTP-POST envelope + * For this binding, the document must be a regular XML file that is base64 encoded + **/ +export type SAMLPOSTEnvelope = SAMLBaseEnvelope & { + binding: 'HTTP-POST'; +}; + +export type SAMLEnvelope = SAMLRedirectEnvelope | SAMLPOSTEnvelope; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts index cac4a5ae0376d..7dd58f35bed3e 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/SAML.ts @@ -9,6 +9,7 @@ import { Meteor } from 'meteor/meteor'; import { SAMLServiceProvider } from './ServiceProvider'; import { SAMLUtils } from './Utils'; +import { getSAMLEnvelope } from './getSAMLEnvelope'; import { ensureArray } from '../../../../lib/utils/arrayUtils'; import { SystemLogger } from '../../../../server/lib/logger/system'; import { addUserToRoom } from '../../../lib/server/functions/addUserToRoom'; @@ -283,11 +284,21 @@ export class SAML { } private static async processLogoutRequest(req: IIncomingMessage, res: ServerResponse, service: IServiceProviderOptions): Promise { + const errorHandler = (err: unknown) => { + SystemLogger.error({ err }); + throw new Meteor.Error('Unable to Validate Logout Request'); + }; + + const envelope = await getSAMLEnvelope(req, 'SAMLRequest', 'HTTP-Redirect').catch(errorHandler); + if (!envelope) { + errorHandler('No envelope found for SAML Logout Request'); + return; + } + const serviceProvider = new SAMLServiceProvider(service); - await serviceProvider.validateLogoutRequest(req.query.SAMLRequest, async (err, result) => { + await serviceProvider.validateLogoutRequest(envelope, async (err, result) => { if (err) { - SystemLogger.error({ err }); - throw new Meteor.Error('Unable to Validate Logout Request'); + errorHandler(err); } if (!result?.nameID || !result?.idpSession) { @@ -350,15 +361,16 @@ export class SAML { } private static async processLogoutResponse(req: IIncomingMessage, res: ServerResponse, service: IServiceProviderOptions): Promise { - if (!req.query.SAMLResponse) { + const envelope = await getSAMLEnvelope(req, 'SAMLResponse', 'HTTP-Redirect'); + if (!envelope) { SAMLUtils.error({ msg: 'Invalid LogoutResponse received: missing SAMLResponse parameter.', query: req.query }); throw new Error('Invalid LogoutResponse received.'); } const serviceProvider = new SAMLServiceProvider(service); - await serviceProvider.validateLogoutResponse(req.query.SAMLResponse, async (err, inResponseTo) => { + await serviceProvider.validateLogoutResponse(envelope, async (err, inResponseTo) => { if (err) { - return; + throw new Error('Logout Response Validation failed'); } if (!inResponseTo) { @@ -460,15 +472,29 @@ export class SAML { res.end(); } - private static processValidateAction( + private static async processValidateAction( req: IIncomingMessage, res: ServerResponse, service: IServiceProviderOptions, _samlObject: ISAMLAction, - ): void { + ): Promise { + const redirect = (url?: string) => { + res.writeHead(302, { + Location: url ?? Meteor.absoluteUrl(), + }); + res.end(); + }; + + const envelope = await getSAMLEnvelope(req, 'SAMLResponse', 'HTTP-POST').catch((err) => SAMLUtils.error(err)); + + if (!envelope) { + SAMLUtils.error({ msg: 'No envelope found for SAML Response' }); + return redirect(); + } + const serviceProvider = new SAMLServiceProvider(service); - SAMLUtils.relayState = req.body.RelayState; - serviceProvider.validateResponse(req.body.SAMLResponse, async (err, profile /* , loggedOut*/) => { + SAMLUtils.relayState = envelope.relayState ?? null; + serviceProvider.validateResponse(envelope, async (err, profile /* , loggedOut*/) => { try { if (err) { SAMLUtils.error(err); @@ -490,16 +516,10 @@ export class SAML { await this.storeCredential(credentialToken, loginResult); const url = Meteor.absoluteUrl(SAMLUtils.getValidationActionRedirectPath(credentialToken)); - res.writeHead(302, { - Location: url, - }); - res.end(); + redirect(url); } catch (err) { SAMLUtils.error({ err }); - res.writeHead(302, { - Location: Meteor.absoluteUrl(), - }); - res.end(); + redirect(); } }); } diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts index f60b65952d67e..824b7ec684dcc 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/ServiceProvider.ts @@ -17,13 +17,8 @@ import { ServiceProviderMetadata } from './generators/ServiceProviderMetadata'; import { LogoutRequestParser } from './parsers/LogoutRequest'; import { LogoutResponseParser } from './parsers/LogoutResponse'; import { ResponseParser } from './parsers/Response'; - -const signatureAlgorithms = { - 'RSA-SHA1': 'http://www.w3.org/2000/09/xmldsig#rsa-sha1', - 'RSA-SHA256': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', - 'RSA-SHA384': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384', - 'RSA-SHA512': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512', -} as const; +import type { SAMLPOSTEnvelope, SAMLRedirectEnvelope } from '../definition/SAMLEnvelope'; +import { getSigAlgKeyIfSupported, type SigAlgKey, signatureAlgorithms } from './signature/signatureAlgorithms'; export class SAMLServiceProvider { serviceProviderOptions: IServiceProviderOptions; @@ -36,14 +31,9 @@ export class SAMLServiceProvider { this.serviceProviderOptions = serviceProviderOptions; } - private getSignatureAlgorithm(): keyof typeof signatureAlgorithms { + private getSignatureAlgorithm(): SigAlgKey { const algorithm = `RSA-${this.serviceProviderOptions.signatureAlgorithm}`; - - if (algorithm in signatureAlgorithms) { - return algorithm as keyof typeof signatureAlgorithms; - } - - return 'RSA-SHA256'; + return getSigAlgKeyIfSupported(algorithm) || 'RSA-SHA256'; } private maybeSignRequest(samlObject: Record): Record { @@ -180,37 +170,25 @@ export class SAMLServiceProvider { return this.requestToUrl(request, 'authorize'); } - public async validateLogoutRequest(samlRequest: string, callback: ILogoutRequestValidateCallback): Promise { - await SAMLUtils.inflateXml( - samlRequest, - async (xml: string) => { - const parser = new LogoutRequestParser(this.serviceProviderOptions); - return parser.validate(xml, callback); - }, - async (err: string | object | null) => { - await callback(err, null); - }, - ); + public async validateLogoutRequest( + envelope: SAMLRedirectEnvelope<'SAMLRequest'>, + callback: ILogoutRequestValidateCallback, + ): Promise { + const parser = new LogoutRequestParser(this.serviceProviderOptions); + return parser.validate(envelope, callback); } - public async validateLogoutResponse(samlResponse: string, callback: ILogoutResponseValidateCallback): Promise { - await SAMLUtils.inflateXml( - samlResponse, - async (xml: string) => { - const parser = new LogoutResponseParser(this.serviceProviderOptions); - return parser.validate(xml, callback); - }, - async (err: string | object | null) => { - await callback(err, null); - }, - ); + public async validateLogoutResponse( + envelope: SAMLRedirectEnvelope<'SAMLResponse'>, + callback: ILogoutResponseValidateCallback, + ): Promise { + const parser = new LogoutResponseParser(this.serviceProviderOptions); + return parser.validate(envelope, callback); } - public validateResponse(samlResponse: string, callback: IResponseValidateCallback): void { - const xml = Buffer.from(samlResponse, 'base64').toString('utf8'); - + public validateResponse(envelope: SAMLPOSTEnvelope<'SAMLResponse'>, callback: IResponseValidateCallback): void { const parser = new ResponseParser(this.serviceProviderOptions); - return parser.validate(xml, callback); + return parser.validate(envelope, callback); } public generateServiceProviderMetadata(): string { diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts index ec8924c69a7f4..8d99fa18b70ae 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/Utils.ts @@ -50,6 +50,10 @@ export class SAMLUtils { relayState = value; } + public static get logger(): Logger | undefined { + return logger; + } + public static getServiceProviderOptions(providerName: string): IServiceProviderOptions | undefined { this.log({ providerName, providerList }); @@ -145,25 +149,19 @@ export class SAMLUtils { } } - public static async inflateXml( - base64Data: string, - successCallback: (xml: string) => Promise, - errorCallback: (err: string | object | null) => Promise, - ): Promise { + public static async inflateXml(deflatedXml: Buffer): Promise> { return new Promise((resolve, reject) => { - const buffer = Buffer.from(base64Data, 'base64'); - zlib.inflateRaw(buffer, (err, decoded) => { + zlib.inflateRaw(deflatedXml, (err, inflatedXml) => { if (err) { this.log({ msg: 'Error while inflating.', err }); - return reject(errorCallback(err)); + return reject(err); } - if (!decoded) { - return reject(errorCallback('Failed to extract request data')); + if (!inflatedXml) { + return reject(new Error('Failed to extract request data')); } - const xmlString = this.convertArrayBufferToString(decoded); - return resolve(successCallback(xmlString)); + resolve(Buffer.from(inflatedXml)); }); }); } @@ -367,7 +365,7 @@ export class SAMLUtils { } } - if (mapping.regex && mainValue && mainValue.match) { + if (mapping.regex && mainValue?.match) { let regexValue; const match = mainValue.match(new RegExp(mapping.regex)); if (match?.length) { @@ -393,10 +391,6 @@ export class SAMLUtils { return mainValue; } - public static convertArrayBufferToString(buffer: Buffer, encoding: BufferEncoding = 'utf8'): string { - return Buffer.from(buffer).toString(encoding); - } - public static normalizeUsername(name: string): string { const { globalSettings } = this; diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/getSAMLEnvelope.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/getSAMLEnvelope.ts new file mode 100644 index 0000000000000..6e54417e7de00 --- /dev/null +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/getSAMLEnvelope.ts @@ -0,0 +1,120 @@ +import type { IIncomingMessage } from '@rocket.chat/core-typings'; + +import { SAMLUtils } from './Utils'; +import type { + SAMLEnvelope, + SAMLBinding, + SAMLDocumentType, + SAMLRedirectEnvelope, + SAMLPOSTEnvelope, + SAMLBaseEnvelope, +} from '../definition/SAMLEnvelope'; + +function getStringAttribute(params: Record, attributeName: string): string | null { + if (!(attributeName in params)) { + return null; + } + + if (typeof params[attributeName] !== 'string') { + return null; + } + + return params[attributeName]; +} + +async function performBindingSpecificDecoding(binding: SAMLBinding, buffer: Buffer): Promise> { + switch (binding) { + case 'HTTP-Redirect': + return SAMLUtils.inflateXml(buffer); + default: + return buffer; + } +} + +async function decodeDocument(base64Data: string, binding: SAMLBinding): Promise { + const buffer = await performBindingSpecificDecoding(binding, Buffer.from(base64Data, 'base64')); + + return buffer.toString('utf8'); +} + +function getSignedContent(req: IIncomingMessage, documentType: SAMLDocumentType): string | null { + // We load the signed content directly from the query string, because: + // 1. We need the raw value, without running decodeURIComponent or any other processing/normalization + // 2. We need to respect the order the params came in (although the order should be fixed) + const rawUrl = req.url; + if (!rawUrl) { + return null; + } + + const queryString = rawUrl.split('?')[1]; + if (!queryString) { + return null; + } + const params = queryString.split('&'); + + const signedContent = params + .filter((p) => p.startsWith(`${documentType}=`) || p.startsWith(`RelayState=`) || p.startsWith('SigAlg=')) + .join('&'); + + return signedContent || null; +} + +export async function getSAMLEnvelope( + req: IIncomingMessage, + type: T, + binding: 'HTTP-Redirect', +): Promise | null>; +export async function getSAMLEnvelope( + req: IIncomingMessage, + type: T, + binding: 'HTTP-POST', +): Promise | null>; +export async function getSAMLEnvelope( + req: IIncomingMessage, + type: T, + binding: B, +): Promise | null> { + const params = binding === 'HTTP-Redirect' ? req.query : req.body; + + if (!params) { + return null; + } + + const encodedDocument = getStringAttribute(params, type); + + if (!encodedDocument) { + return null; + } + + const decodedDocument = await decodeDocument(encodedDocument, binding); + + const relayState = getStringAttribute(params, 'RelayState'); + + const envelope: SAMLBaseEnvelope = { + binding, + type, + encodedDocument, + decodedDocument, + ...(typeof relayState === 'string' && { relayState }), + }; + + if (envelope.binding !== 'HTTP-Redirect') { + return envelope; + } + + const signedContent = getSignedContent(req, type); + + const sigAlg = getStringAttribute(params, 'SigAlg'); + const signature = getStringAttribute(params, 'Signature'); + + if (sigAlg && signature && signedContent) { + return { + ...envelope, + sigAlg, + signature, + signedContent, + }; + } + + return envelope; +} diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts index c609328ea21bf..917d29acced87 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutRequest.ts @@ -1,8 +1,10 @@ import xmldom from '@xmldom/xmldom'; import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { SAMLRedirectEnvelope } from '../../definition/SAMLEnvelope'; import type { ILogoutRequestValidateCallback } from '../../definition/callbacks'; import { SAMLUtils } from '../Utils'; +import { validateRedirectSignature } from '../signature/validateRedirectSignature'; export class LogoutRequestParser { serviceProviderOptions: IServiceProviderOptions; @@ -11,9 +13,16 @@ export class LogoutRequestParser { this.serviceProviderOptions = serviceProviderOptions; } - public async validate(xmlString: string, callback: ILogoutRequestValidateCallback): Promise { + public async validate(envelope: SAMLRedirectEnvelope<'SAMLRequest'>, callback: ILogoutRequestValidateCallback): Promise { + const { decodedDocument: xmlString } = envelope; + SAMLUtils.log({ msg: 'Validating SAML Logout Request', xmlString }); + if (!this.verifySignature(envelope)) { + SAMLUtils.log({ msg: 'Failed to verify signature from Logout Request' }); + return callback('Signature validation failed'); + } + const doc = new xmldom.DOMParser().parseFromString(xmlString, 'text/xml'); if (!doc) { return callback('No Doc Found'); @@ -46,4 +55,12 @@ export class LogoutRequestParser { return callback(err instanceof Error ? err : String(err), null); } } + + private verifySignature(envelope: SAMLRedirectEnvelope<'SAMLRequest'>): boolean { + if (!this.serviceProviderOptions.validateLogoutRequestSignature) { + return true; + } + + return validateRedirectSignature(envelope, this.serviceProviderOptions.cert); + } } diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts index af9c176233cdf..fa62aa4e3f640 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/LogoutResponse.ts @@ -1,8 +1,10 @@ import xmldom from '@xmldom/xmldom'; import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { SAMLRedirectEnvelope } from '../../definition/SAMLEnvelope'; import type { ILogoutResponseValidateCallback } from '../../definition/callbacks'; import { SAMLUtils } from '../Utils'; +import { validateRedirectSignature } from '../signature/validateRedirectSignature'; export class LogoutResponseParser { serviceProviderOptions: IServiceProviderOptions; @@ -11,9 +13,16 @@ export class LogoutResponseParser { this.serviceProviderOptions = serviceProviderOptions; } - public async validate(xmlString: string, callback: ILogoutResponseValidateCallback): Promise { + public async validate(envelope: SAMLRedirectEnvelope<'SAMLResponse'>, callback: ILogoutResponseValidateCallback): Promise { + const { decodedDocument: xmlString } = envelope; + SAMLUtils.log({ msg: 'Validating SAML Logout Response', xmlString }); + if (!this.verifySignature(envelope)) { + SAMLUtils.log({ msg: 'Failed to verify signature from Logout Response' }); + return callback('Signature validation failed'); + } + const doc = new xmldom.DOMParser().parseFromString(xmlString, 'text/xml'); if (!doc) { return callback('No Doc Found'); @@ -46,4 +55,12 @@ export class LogoutResponseParser { return callback(null, inResponseTo); } + + private verifySignature(envelope: SAMLRedirectEnvelope<'SAMLResponse'>): boolean { + if (!this.serviceProviderOptions.validateLogoutResponseSignature) { + return true; + } + + return validateRedirectSignature(envelope, this.serviceProviderOptions.cert); + } } diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts index f4363278b3d6b..8fa5e28eb2841 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/parsers/Response.ts @@ -4,6 +4,7 @@ import xmlenc from 'xml-encryption'; import type { ISAMLAssertion } from '../../definition/ISAMLAssertion'; import type { IServiceProviderOptions } from '../../definition/IServiceProviderOptions'; +import type { SAMLPOSTEnvelope } from '../../definition/SAMLEnvelope'; import type { IResponseValidateCallback } from '../../definition/callbacks'; import { SAMLUtils } from '../Utils'; import { StatusCode } from '../constants'; @@ -17,7 +18,8 @@ export class ResponseParser { this.serviceProviderOptions = serviceProviderOptions; } - public validate(xml: string, callback: IResponseValidateCallback): void { + public validate(envelope: SAMLPOSTEnvelope<'SAMLResponse'>, callback: IResponseValidateCallback): void { + const { decodedDocument: xml } = envelope; // We currently use RelayState to save SAML provider SAMLUtils.log({ msg: 'Validating SAML Response', xml }); @@ -242,10 +244,6 @@ export class ResponseParser { } private verifySignatures(response: Element, assertionData: ISAMLAssertion, xml: string): void { - if (!this.serviceProviderOptions.cert) { - return; - } - const signatureType = this.serviceProviderOptions.signatureValidationType; const checkEither = signatureType === 'Either'; @@ -253,6 +251,14 @@ export class ResponseParser { const checkAssertion = signatureType === 'Assertion' || signatureType === 'All' || checkEither; let anyValidSignature = false; + if (!this.serviceProviderOptions.cert) { + if (checkResponse || checkAssertion) { + SAMLUtils.log('Missing Signature validation params'); + throw new Error('Unable to validate signature'); + } + return; + } + if (checkResponse) { SAMLUtils.log('Verify Document Signature'); if (!this.validateResponseSignature(xml, this.serviceProviderOptions.cert, response)) { diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts index dacdd014806e4..0316045acb5c8 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/settings.ts @@ -49,6 +49,8 @@ const getSamlConfigs = function (service: string): SAMLConfiguration { algorithm: settings.get(`${service}_signature_algorithm`) || 'SHA1', }, signatureValidationType: settings.get(`${service}_signature_validation_type`), + validateLogoutRequestSignature: settings.get(`${service}_validate_logout_request_signature`), + validateLogoutResponseSignature: settings.get(`${service}_validate_logout_response_signature`), userDataFieldMap: settings.get(`${service}_user_data_fieldmap`), allowedClockDrift: settings.get(`${service}_allowed_clock_drift`), customAuthnContext: defaultAuthnContext, @@ -69,6 +71,17 @@ const getSamlConfigs = function (service: string): SAMLConfiguration { return configs; }; +const isValidConfiguration = function (key: string, samlConfigs: SAMLConfiguration): boolean { + const needsCert = samlConfigs.signatureValidationType !== 'None'; + + if (!samlConfigs.secret.cert && needsCert) { + SAMLUtils.log({ msg: 'SAML Configuration missing Custom Certificate setting', key }); + return false; + } + + return true; +}; + const configureSamlService = function (samlConfigs: Record): IServiceProviderOptions { let privateCert = null; let privateKey = null; @@ -99,6 +112,8 @@ const configureSamlService = function (samlConfigs: Record): IServi defaultUserRole: samlConfigs.defaultUserRole, allowedClockDrift: parseInt(samlConfigs.allowedClockDrift) || 0, signatureValidationType: samlConfigs.signatureValidationType, + validateLogoutRequestSignature: samlConfigs.validateLogoutRequestSignature, + validateLogoutResponseSignature: samlConfigs.validateLogoutResponseSignature, identifierFormat: samlConfigs.identifierFormat, nameIDPolicyTemplate: samlConfigs.nameIDPolicyTemplate, authnContextTemplate: samlConfigs.authnContextTemplate, @@ -124,10 +139,15 @@ export const loadSamlServiceProviders = async function (): Promise { services.map(async ([key, value]) => { if (value === true) { const samlConfigs = getSamlConfigs(key); - SAMLUtils.log({ key }); - await LoginServiceConfiguration.createOrUpdateService(serviceName, samlConfigs); - void notifyOnLoginServiceConfigurationChangedByService(serviceName); - return configureSamlService(samlConfigs); + + if (isValidConfiguration(key, samlConfigs)) { + SAMLUtils.log({ msg: 'Loading SAML Provider', key }); + await LoginServiceConfiguration.createOrUpdateService(serviceName, samlConfigs); + void notifyOnLoginServiceConfigurationChangedByService(serviceName); + return configureSamlService(samlConfigs); + } + + SAMLUtils.logger?.warn({ msg: 'SAML Provider not loaded due to invalid configuration', key }); } const service = await LoginServiceConfiguration.findOneByService(serviceName, { projection: { _id: 1 } }); @@ -207,6 +227,7 @@ export const addSettings = async function (name: string): Promise { await this.add(`SAML_Custom_${name}_signature_validation_type`, 'All', { type: 'select', values: [ + { key: 'None', i18nLabel: 'SAML_Custom_signature_validation_none' }, { key: 'Response', i18nLabel: 'SAML_Custom_signature_validation_response' }, { key: 'Assertion', i18nLabel: 'SAML_Custom_signature_validation_assertion' }, { key: 'Either', i18nLabel: 'SAML_Custom_signature_validation_either' }, @@ -215,6 +236,14 @@ export const addSettings = async function (name: string): Promise { i18nLabel: 'SAML_Custom_signature_validation_type', i18nDescription: 'SAML_Custom_signature_validation_type_description', }); + await this.add(`SAML_Custom_${name}_validate_logout_request_signature`, true, { + type: 'boolean', + i18nLabel: 'SAML_Custom_validate_logout_request_signature', + }); + await this.add(`SAML_Custom_${name}_validate_logout_response_signature`, true, { + type: 'boolean', + i18nLabel: 'SAML_Custom_validate_logout_response_signature', + }); await this.add(`SAML_Custom_${name}_private_key`, '', { type: 'string', multiline: true, diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/signature/signatureAlgorithms.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/signature/signatureAlgorithms.ts new file mode 100644 index 0000000000000..90e0a60bf2629 --- /dev/null +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/signature/signatureAlgorithms.ts @@ -0,0 +1,38 @@ +export const signatureAlgorithms = { + 'RSA-SHA1': 'http://www.w3.org/2000/09/xmldsig#rsa-sha1', + 'RSA-SHA256': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', + 'RSA-SHA384': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha384', + 'RSA-SHA512': 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha512', +} as const; + +export type SigAlgKey = keyof typeof signatureAlgorithms; + +export type SigAlgURI = (typeof signatureAlgorithms)[SigAlgKey]; + +export function getSigAlgKeyIfSupported(key: SigAlgKey): SigAlgKey; +export function getSigAlgKeyIfSupported(key: string): SigAlgKey | null; +export function getSigAlgKeyIfSupported(key: string): SigAlgKey | null { + if (key in signatureAlgorithms) { + return key as keyof typeof signatureAlgorithms; + } + + return null; +} + +export function getSigAlgKeyByURI(algURI: SigAlgURI): SigAlgKey; +export function getSigAlgKeyByURI(algURI: string): SigAlgKey | null; +export function getSigAlgKeyByURI(algURI: string): SigAlgKey | null { + for (const [key, uri] of Object.entries(signatureAlgorithms)) { + if (uri === algURI) { + return key as SigAlgKey; + } + } + + return null; +} + +export function getSigAlgURIByKey(key: SigAlgKey): SigAlgURI; +export function getSigAlgURIByKey(key: string): SigAlgURI | null; +export function getSigAlgURIByKey(key: string): SigAlgURI | null { + return signatureAlgorithms[key as SigAlgKey] ?? null; +} diff --git a/apps/meteor/app/meteor-accounts-saml/server/lib/signature/validateRedirectSignature.ts b/apps/meteor/app/meteor-accounts-saml/server/lib/signature/validateRedirectSignature.ts new file mode 100644 index 0000000000000..9dd73052b8214 --- /dev/null +++ b/apps/meteor/app/meteor-accounts-saml/server/lib/signature/validateRedirectSignature.ts @@ -0,0 +1,44 @@ +import crypto from 'crypto'; + +import type { SAMLRedirectEnvelope } from '../../definition/SAMLEnvelope'; +import { SAMLUtils } from '../Utils'; +import { getSigAlgKeyByURI } from './signatureAlgorithms'; + +export function validateRedirectSignature(envelope: SAMLRedirectEnvelope, certificate: string): boolean { + try { + if (!envelope.sigAlg || !envelope.signature) { + SAMLUtils.log({ msg: 'Could not validate SAML Document Signature: Missing Signature params', type: envelope.type }); + return false; + } + + if (!envelope.signedContent) { + SAMLUtils.log({ msg: 'Could not validate SAML Document signature: signedContent is empty', type: envelope.type }); + return false; + } + + const algorithm = getSigAlgKeyByURI(envelope.sigAlg); + if (!algorithm) { + SAMLUtils.log({ msg: 'Could not validate SAML Document signature: invalid algorithm', type: envelope.type }); + return false; + } + + const cert = SAMLUtils.certToPEM(certificate); + + SAMLUtils.log({ + msg: 'Verifying Signatures for SAML Document', + algorithm, + cert, + type: envelope.type, + }); + const verifier = crypto.createVerify(algorithm); + + verifier.update(envelope.signedContent, 'utf8'); + verifier.end(); + + return verifier.verify(cert, envelope.signature, 'base64'); + } catch (err) { + SAMLUtils.error({ msg: 'Failed to validate SAML Document Signature', err }); + } + + return false; +} diff --git a/apps/meteor/app/meteor-accounts-saml/server/listener.ts b/apps/meteor/app/meteor-accounts-saml/server/listener.ts index 9af8c4d84c2d1..8747bd59a8714 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/listener.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/listener.ts @@ -66,11 +66,13 @@ const middleware = async function (req: express.Request, res: ServerResponse, ne // @ToDo: Ideally we should send some error message to the client, but there's no way to do it on a redirect right now. SystemLogger.error({ err }); - const url = Meteor.absoluteUrl('home'); - res.writeHead(302, { - Location: url, - }); - res.end(); + if (!res.headersSent) { + const url = Meteor.absoluteUrl('home'); + res.writeHead(302, { + Location: url, + }); + res.end(); + } } }; diff --git a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts b/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts index e9b861b4a511a..8b2059489931c 100644 --- a/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts +++ b/apps/meteor/app/meteor-accounts-saml/server/loginHandler.ts @@ -1,3 +1,4 @@ +import { CredentialTokens } from '@rocket.chat/models'; import { Accounts } from 'meteor/accounts-base'; import { Meteor } from 'meteor/meteor'; @@ -12,11 +13,18 @@ const makeError = (message: string): Record => ({ }); Accounts.registerLoginHandler('saml', async (loginRequest) => { - if (!loginRequest.saml || !loginRequest.credentialToken || typeof loginRequest.credentialToken !== 'string') { + if ( + !loginRequest.saml || + !loginRequest.credentialToken || + typeof loginRequest.credentialToken !== 'string' || + SAMLUtils.serviceProviders.length === 0 + ) { return undefined; } const loginResult = await SAML.retrieveCredential(loginRequest.credentialToken); + + await CredentialTokens.removeById(loginRequest.credentialToken); SAMLUtils.log({ msg: 'RESULT', loginResult }); if (!loginResult) { diff --git a/apps/meteor/server/lib/cas/loginHandler.spec.ts b/apps/meteor/server/lib/cas/loginHandler.spec.ts new file mode 100644 index 0000000000000..8ba620d2c7f54 --- /dev/null +++ b/apps/meteor/server/lib/cas/loginHandler.spec.ts @@ -0,0 +1,56 @@ +import { expect } from 'chai'; +import { describe, it, beforeEach } from 'mocha'; +import proxyquire from 'proxyquire'; +import sinon from 'sinon'; + +const findOneNotExpiredById = sinon.stub().resolves(null); +const removeById = sinon.stub().resolves(); +const findExistingCASUser = sinon.stub().resolves(null); +const settingsGet = sinon.stub().returns(true); + +const { loginHandlerCAS: handler } = proxyquire.noCallThru().load('./loginHandler', { + '@rocket.chat/models': { + CredentialTokens: { findOneNotExpiredById, removeById }, + Users: { updateOne: sinon.stub().resolves() }, + }, + 'meteor/accounts-base': { + Accounts: { + LoginCancelledError: { numericError: 403 }, + }, + }, + 'meteor/meteor': { + Meteor: { Error }, + }, + './createNewUser': { createNewUser: sinon.stub().resolves({ _id: 'newUserId' }) }, + './findExistingCASUser': { findExistingCASUser }, + './logger': { logger: { debug: sinon.stub(), error: sinon.stub() } }, + '../../../app/lib/server/functions/setRealName': { setRealName: sinon.stub().resolves() }, + '../../../app/settings/server': { settings: { get: settingsGet } }, +}); + +describe('loginHandlerCAS', () => { + beforeEach(() => { + findOneNotExpiredById.reset(); + removeById.reset(); + findExistingCASUser.reset(); + settingsGet.reset(); + settingsGet.returns(true); + }); + + it('should reject non-string credentialToken and never query the database (NoSQL injection prevention)', async () => { + expect(await handler({ cas: { credentialToken: { $gt: '' } } })).to.be.undefined; + expect(await handler({ cas: { credentialToken: { $ne: null } } })).to.be.undefined; + expect(await handler({ cas: { credentialToken: 123 } })).to.be.undefined; + expect(await handler({ cas: { credentialToken: ['a'] } })).to.be.undefined; + expect(await handler({ cas: { credentialToken: null } })).to.be.undefined; + + expect(findOneNotExpiredById.called).to.be.false; + }); + + it('should return undefined when CAS is disabled', async () => { + settingsGet.returns(false); + + expect(await handler({ cas: { credentialToken: 'valid-token' } })).to.be.undefined; + expect(findOneNotExpiredById.called).to.be.false; + }); +}); diff --git a/apps/meteor/server/lib/cas/loginHandler.ts b/apps/meteor/server/lib/cas/loginHandler.ts index 67411dc3eddbc..070a6834335bd 100644 --- a/apps/meteor/server/lib/cas/loginHandler.ts +++ b/apps/meteor/server/lib/cas/loginHandler.ts @@ -10,7 +10,7 @@ import { setRealName } from '../../../app/lib/server/functions/setRealName'; import { settings } from '../../../app/settings/server'; export const loginHandlerCAS = async (options: any): Promise => { - if (!options.cas) { + if (!settings.get('CAS_enabled') || !options.cas || typeof options.cas.credentialToken !== 'string') { return undefined; } @@ -20,6 +20,8 @@ export const loginHandlerCAS = async (options: any): Promise('CAS_Sync_User_Data_FieldMap').trim(); const casVersion = parseFloat(settings.get('CAS_version') ?? '1.0'); diff --git a/apps/meteor/server/oauth2-server/oauth.ts b/apps/meteor/server/oauth2-server/oauth.ts index e52e5fabfac4f..45886a2d80807 100644 --- a/apps/meteor/server/oauth2-server/oauth.ts +++ b/apps/meteor/server/oauth2-server/oauth.ts @@ -79,18 +79,40 @@ export class OAuth2Server { return next(); }; - this.app.all('/oauth/token', debugMiddleware, transformRequestsNotUsingFormUrlencodedType, async (req, res, next) => { - const request = new OAuthServer.Request(req); - const response = new OAuthServer.Response(res); - - try { - await oauth.token(request, response); - - handleResponse(res, response, next); - } catch (e: any) { - next(e); + const validateTokenPayload = function (req: Request, res: Response, next: NextFunction) { + const grantParams = ['client_id', 'client_secret', 'refresh_token', 'code', 'grant_type', 'scope', 'redirect_uri']; + + for (const param of grantParams) { + for (const source of [req.body, req.query]) { + if (source?.[param] !== undefined && typeof source[param] !== 'string') { + return res.status(400).send({ + error: 'invalid_request', + error_description: `Invalid parameter: ${param} must be a string`, + }); + } + } } - }); + return next(); + }; + + this.app.all( + '/oauth/token', + debugMiddleware, + transformRequestsNotUsingFormUrlencodedType, + validateTokenPayload, + async (req, res, next) => { + const request = new OAuthServer.Request(req); + const response = new OAuthServer.Response(res); + + try { + await oauth.token(request, response); + + handleResponse(res, response, next); + } catch (e: any) { + next(e); + } + }, + ); this.app.get('/oauth/authorize', debugMiddleware, async (req, res, next) => { if (typeof req.query.client_id !== 'string') { diff --git a/apps/meteor/tests/e2e/containers/saml/Dockerfile b/apps/meteor/tests/e2e/containers/saml/Dockerfile index bf997ae6aacf7..0401d7e09181a 100644 --- a/apps/meteor/tests/e2e/containers/saml/Dockerfile +++ b/apps/meteor/tests/e2e/containers/saml/Dockerfile @@ -1,4 +1,4 @@ -FROM php:7.3-apache +FROM php:7.4-apache # Utilities RUN apt-get update && \ @@ -6,7 +6,7 @@ RUN apt-get update && \ rm -r /var/lib/apt/lists/* # SimpleSAMLphp -ARG SIMPLESAMLPHP_VERSION=1.15.4 +ARG SIMPLESAMLPHP_VERSION=1.19.6 RUN curl -s -L -o /tmp/simplesamlphp.tar.gz https://github.com/simplesamlphp/simplesamlphp/releases/download/v$SIMPLESAMLPHP_VERSION/simplesamlphp-$SIMPLESAMLPHP_VERSION.tar.gz && \ tar xzf /tmp/simplesamlphp.tar.gz -C /tmp && \ rm -f /tmp/simplesamlphp.tar.gz && \ @@ -14,6 +14,7 @@ RUN curl -s -L -o /tmp/simplesamlphp.tar.gz https://github.com/simplesamlphp/sim touch /var/www/simplesamlphp/modules/exampleauth/enable COPY config/simplesamlphp/config.php /var/www/simplesamlphp/config COPY config/simplesamlphp/authsources.php /var/www/simplesamlphp/config +COPY config/simplesamlphp/saml20-idp-hosted.php /var/www/simplesamlphp/metadata COPY config/simplesamlphp/saml20-sp-remote.php /var/www/simplesamlphp/metadata COPY config/simplesamlphp/server_crt /var/www/simplesamlphp/cert/server.crt COPY config/simplesamlphp/server_pem /var/www/simplesamlphp/cert/server.pem diff --git a/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/config.php b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/config.php index ed9c74b2609f4..71b67214d2982 100644 --- a/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/config.php +++ b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/config.php @@ -44,6 +44,7 @@ 'session.cookie.path' => '/', 'session.cookie.domain' => null, 'session.cookie.secure' => false, + 'session.cookie.samesite' => 'Lax', 'enable.http_post' => false, 'session.phpsession.cookiename' => 'PHPSESSIDIDP', 'session.phpsession.savepath' => null, diff --git a/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-idp-hosted.php b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-idp-hosted.php new file mode 100644 index 0000000000000..c72fa97803cc9 --- /dev/null +++ b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-idp-hosted.php @@ -0,0 +1,23 @@ + 'http://localhost:3000/_saml/metadata/test-sp', + 'host' => '__DEFAULT__', + 'privatekey' => 'server.pem', + 'certificate' => 'server.crt', + 'auth' => 'example-userpass', + 'redirect.sign' => true, + + /* + * Force the NameID to be the raw email attribute value in emailAddress + * format, bypassing SimpleSAMLphp's default persistent (hashed) nameID + * generation. + */ + 'authproc' => [ + 100 => [ + 'class' => 'saml:AttributeNameID', + 'attribute' => 'email', + 'Format' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', + ], + ], +]; diff --git a/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-sp-remote.php b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-sp-remote.php index 7b0dd4b49eaba..4e306b29b97aa 100644 --- a/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-sp-remote.php +++ b/apps/meteor/tests/e2e/containers/saml/config/simplesamlphp/saml20-sp-remote.php @@ -22,9 +22,9 @@ ), 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', // Other settings that may be useful for testing, but are not compatible with the existing e2e tests - // 'privatekey' => 'server.pem', - // 'certificate' => 'server.crt', - // 'redirect.sign' => true, + 'privatekey' => 'server.pem', + 'certificate' => 'server.crt', + 'redirect.sign' => true, // 'redirect.validate' => true, // 'validate.logout' => true, // 'assertion.encryption' => true, diff --git a/apps/meteor/tests/e2e/saml.spec.ts b/apps/meteor/tests/e2e/saml.spec.ts index 50d59d1b8b402..d3239219e4a50 100644 --- a/apps/meteor/tests/e2e/saml.spec.ts +++ b/apps/meteor/tests/e2e/saml.spec.ts @@ -14,6 +14,7 @@ import { convertHexToRGB } from './utils/convertHexToRGB'; import { createCustomRole, deleteCustomRole } from './utils/custom-role'; import { getUserInfo } from './utils/getUserInfo'; import { parseMeteorResponse } from './utils/parseMeteorResponse'; +import { saveSettings } from './utils/saveSettings'; import { setSettingValueById } from './utils/setSettingValueById'; import type { BaseTest } from './utils/test'; import { test, expect } from './utils/test'; @@ -70,8 +71,12 @@ const resetTestData = async ({ api, cleanupOnly = false }: { api?: any; cleanupO { _id: 'SAML_Custom_Default_mail_overwrite', value: false }, { _id: 'SAML_Custom_Default_name_overwrite', value: false }, { _id: 'SAML_Custom_Default', value: false }, - { _id: 'SAML_Custom_Default_role_attribute_sync', value: true }, - { _id: 'SAML_Custom_Default_role_attribute_name', value: 'role' }, + ...(constants.IS_EE + ? [ + { _id: 'SAML_Custom_Default_role_attribute_sync', value: true }, + { _id: 'SAML_Custom_Default_role_attribute_name', value: 'role' }, + ] + : []), { _id: 'SAML_Custom_Default_user_data_fieldmap', value: '{"username":"username", "email":"email", "name": "cn"}' }, { _id: 'SAML_Custom_Default_provider', value: 'test-sp' }, { _id: 'SAML_Custom_Default_issuer', value: 'http://localhost:3000/_saml/metadata/test-sp' }, @@ -79,9 +84,34 @@ const resetTestData = async ({ api, cleanupOnly = false }: { api?: any; cleanupO { _id: 'SAML_Custom_Default_idp_slo_redirect_url', value: 'http://localhost:8080/simplesaml/saml2/idp/SingleLogoutService.php' }, { _id: 'SAML_Custom_Default_button_label_text', value: 'SAML test login button' }, { _id: 'SAML_Custom_Default_button_color', value: '#185925' }, + { _id: 'SAML_Custom_Default_signature_validation_type', value: 'All' }, + { _id: 'SAML_Custom_Default_validate_logout_request_signature', value: true }, + { _id: 'SAML_Custom_Default_validate_logout_response_signature', value: true }, + { + _id: 'SAML_Custom_Default_cert', + value: `MIIDXTCCAkWgAwIBAgIJALmVVuDWu4NYMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV +BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX +aWRnaXRzIFB0eSBMdGQwHhcNMTYxMjMxMTQzNDQ3WhcNNDgwNjI1MTQzNDQ3WjBF +MQswCQYDVQQGEwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50 +ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAzUCFozgNb1h1M0jzNRSCjhOBnR+uVbVpaWfXYIR+AhWDdEe5ryY+Cgav +Og8bfLybyzFdehlYdDRgkedEB/GjG8aJw06l0qF4jDOAw0kEygWCu2mcH7XOxRt+ +YAH3TVHa/Hu1W3WjzkobqqqLQ8gkKWWM27fOgAZ6GieaJBN6VBSMMcPey3HWLBmc ++TYJmv1dbaO2jHhKh8pfKw0W12VM8P1PIO8gv4Phu/uuJYieBWKixBEyy0lHjyix +YFCR12xdh4CA47q958ZRGnnDUGFVE1QhgRacJCOZ9bd5t9mr8KLaVBYTCJo5ERE8 +jymab5dPqe5qKfJsCZiqWglbjUo9twIDAQABo1AwTjAdBgNVHQ4EFgQUxpuwcs/C +YQOyui+r1G+3KxBNhxkwHwYDVR0jBBgwFoAUxpuwcs/CYQOyui+r1G+3KxBNhxkw +DAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAAiWUKs/2x/viNCKi3Y6b +lEuCtAGhzOOZ9EjrvJ8+COH3Rag3tVBWrcBZ3/uhhPq5gy9lqw4OkvEws99/5jFs +X1FJ6MKBgqfuy7yh5s1YfM0ANHYczMmYpZeAcQf2CGAaVfwTTfSlzNLsF2lW/ly7 +yapFzlYSJLGoVE+OHEu8g5SlNACUEfkXw+5Eghh+KzlIN7R6Q7r2ixWNFBC/jWf7 +NKUfJyX8qIG5md1YUeT6GBW9Bm2/1/RiO24JTaYlfLdKK9TYb8sG5B+OLab2DImG +99CJ25RkAcSobWNF5zD0O6lgOo3cEdB/ksCq3hmtlC/DlLZ/D8CJ+7VuZnS1rR2n +aQ==`, + }, ]; - await Promise.all(settings.map(({ _id, value }) => setSettingValueById(api, _id, value))); + await saveSettings(api, settings); }; const setupCustomRole = async (api: BaseTest['api']) => { @@ -238,6 +268,10 @@ test.describe('SAML', () => { }); }); + const doChangeSetting = async (api: any, settingId: string, settingValue: any) => { + await expect((await setSettingValueById(api, settingId, settingValue)).status()).toBe(200); + }; + const doLoginStep = async (page: Page, username: string, redirectUrl: string | null = '/home') => { await test.step('expect successful login', async () => { await poRegistration.btnLoginWithSaml.click(); @@ -321,6 +355,20 @@ test.describe('SAML', () => { }); }); + test('Logout - From IdP', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + // This should trigger a logout request from the IdP, with a redirect to our home on success + await page.goto('http://localhost:8080/simplesaml/saml2/idp/SingleLogoutService.php?ReturnTo=http://localhost:3000'); + + await test.step('expect user to be logged out from Rocket.Chat', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).not.toBeVisible(); + await expect(poRegistration.btnLoginWithSaml).toBeVisible(); + }); + }); + test('User Merge - By Email', async ({ page, api }) => { await test.step('Configure SAML to identify users by email', async () => { await expect((await setSettingValueById(api, 'SAML_Custom_Default_immutable_property', 'EMail')).status()).toBe(200); @@ -576,8 +624,87 @@ test.describe('SAML', () => { // Test user merge with a custom identifier configured in the fieldmap }); - test.fixme('Signature Validation', async () => { - // Test login with signed responses + test.describe('Logout Request Signature Validation', () => { + // This is a valid logout request for user samluser1 + const logoutRequest = + 'http://localhost:3000/_saml/logout/test-sp/?SAMLRequest=lZJBi9swEIX%2FitE9sWRbTiIS00AoBLa7bVN66CWMpVHXYEuuNIb8%2FMpOF7YtXehNPM379GZG%2BwhDP6oH%2F91P9Bl%2FTBgpuw29i2q5ObApOOUhdlE5GDAq0upy%2FPCgijVXY%2FDkte%2FZK8vbDogRA3Xesex8OrBrKTd8V1UaWiNbu%2BPSbrmQtUCorN5IgwWgMHYDBcu%2BYojJeWAJlOwxTnh2kcBRknhRr7hc8eqLqBUvlRTfWHZK3XQOaHE9E40qz3uvoX%2F2kVTJOc%2Bvc%2BYkzv3nlOpXccxZ9ujpyT2FoyUMf9G3C73Zz1a15AjNW%2FQBCQwQvPD3%2BWvnHfOYRnU%2BZZeP8%2BHTBH1nu%2Fnp%2F%2BGy7L0PA9C%2FVyDWYlE6s7JLqcIBuv5oTMAYWTNjp7Qh8Q5vMIw9rrUffsW9J7zHHdUl1aexnp3BW3MtSmnLtkBbbrGuQYPQG2NbY2SlUeykgLLd6dYU8g77w%2F8i%2FvYNm58%3D&RelayState=_658ecfea419894f995dd3d5bc1dedc511ab252a0ad&SigAlg=http%3A%2F%2Fwww.w3.org%2F2001%2F04%2Fxmldsig-more%23rsa-sha256'; + const logoutRequestSignature = + 'MM9fh6cesrjADYxkq9dr0aoyRxjG%2Fsi7lFyqjNex0F80sosmjZedwx%2FZC4iIr1DfK9ac7EuloXpp2sn%2BgLbLrsoo2kqY3AS5%2FQ6zQVpIdg%2BhAk5CcpGXmY%2B8CqvL2QsUnMv9nHuemXzgoSjwnvGeTlpBiuGCHFmcfFFBUVgq1sZO4JM43d5JUojhVI4nEAGPhbOiHFSvKB09pE1pOu6sDhSepb6sAbBIrRfZPW7DLcSGe1DoY1x6vRw%2F3hV88Z9WwZJmogJ69lhQOuv%2BbZwC%2BEWVIgre38GnbLkXOiifMUJnkxkHcCvku7ALhUD%2BPwPEaslFwjIb2eIN0PJUZcKJCg%3D%3D'; + + test.describe('Require Signature', () => { + test.beforeAll(async ({ api }) => { + await doChangeSetting(api, 'SAML_Custom_Default_validate_logout_request_signature', true); + }); + + test('Reject Invalid Signature on Logout Request', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + await page.goto(`${logoutRequest}&Signature=invalid`); + + await test.step('expect to be redirected back to rocket.chat without being logged out', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).toBeVisible(); + }); + }); + + test('Reject Missing Signature on Logout Request', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + await page.goto(logoutRequest); + + await test.step('expect to be redirected back to rocket.chat without being logged out', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).toBeVisible(); + }); + }); + + test('Accept Valid Signature on Logout Request', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + await page.goto(`${logoutRequest}&Signature=${logoutRequestSignature}`); + + await test.step('expect user to be logged out from Rocket.Chat', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).not.toBeVisible(); + await expect(poRegistration.btnLoginWithSaml).toBeVisible(); + }); + }); + }); + + test.describe('Do not require Signature', () => { + test.beforeAll(async ({ api }) => { + await doChangeSetting(api, 'SAML_Custom_Default_validate_logout_request_signature', false); + }); + + test('Ignore Invalid Signature on Logout Request', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + await page.goto(`${logoutRequest}&Signature=invalid`); + + await test.step('expect user to be logged out from Rocket.Chat', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).not.toBeVisible(); + await expect(poRegistration.btnLoginWithSaml).toBeVisible(); + }); + }); + + test('Ignore Missing Signature on Logout Request', async ({ page }) => { + await page.goto('/home'); + await doLoginStep(page, 'samluser1'); + + await page.goto(logoutRequest); + + await test.step('expect user to be logged out from Rocket.Chat', async () => { + await expect(page).toHaveURL('/home'); + await expect(page.getByRole('button', { name: 'User menu' })).not.toBeVisible(); + await expect(poRegistration.btnLoginWithSaml).toBeVisible(); + }); + }); + }); }); test.fixme('Login - User without username', async () => { diff --git a/apps/meteor/tests/e2e/utils/saveSettings.ts b/apps/meteor/tests/e2e/utils/saveSettings.ts new file mode 100644 index 0000000000000..db44ea6ff8915 --- /dev/null +++ b/apps/meteor/tests/e2e/utils/saveSettings.ts @@ -0,0 +1,20 @@ +import type { APIResponse } from '@playwright/test'; +import type { ISetting } from '@rocket.chat/core-typings'; + +import type { BaseTest } from './test'; + +export const saveSettings = ( + api: BaseTest['api'], + changes: { + _id: ISetting['_id']; + value: ISetting['value']; + }[], +): Promise => + api.post('/method.call/saveSettings', { + message: JSON.stringify({ + msg: 'method', + id: '1', + method: 'saveSettings', + params: [changes], + }), + }); diff --git a/apps/meteor/tests/end-to-end/api/oauth-server.ts b/apps/meteor/tests/end-to-end/api/oauth-server.ts index 4a0121734c247..44a9af2be7323 100644 --- a/apps/meteor/tests/end-to-end/api/oauth-server.ts +++ b/apps/meteor/tests/end-to-end/api/oauth-server.ts @@ -106,6 +106,37 @@ describe('[OAuth Server]', () => { }); }); + it('should return bad request if payload has non string parameters in refresh_token grant', async () => { + await request + .post(`/oauth/token`) + .send({ + grant_type: 'refresh_token', + client_id: { $ne: null }, + client_secret: { $ne: null }, + refresh_token: { $ne: null }, + }) + .expect((res: Response) => { + expect(res.status).to.be.equal(400); + expect(res.body).to.have.property('error').that.is.a('string').and.equal('invalid_request'); + }); + }); + + it('should return bad request if payload has non string parameters in authorization_code grant', async () => { + await request + .post(`/oauth/token`) + .send({ + grant_type: 'authorization_code', + client_id: { $ne: null }, + client_secret: { $ne: null }, + code: { $ne: null }, + redirect_uri: { $ne: null }, + }) + .expect((res: Response) => { + expect(res.status).to.be.equal(400); + expect(res.body).to.have.property('error').that.is.a('string').and.equal('invalid_request'); + }); + }); + it('should be able to refresh the access_token', async () => { await request .post(`/oauth/token`) diff --git a/apps/meteor/tests/unit/app/meteor-accounts-saml/data.ts b/apps/meteor/tests/unit/app/meteor-accounts-saml/data.ts index ab145dbbc0f15..7a0c41c7667cc 100644 --- a/apps/meteor/tests/unit/app/meteor-accounts-saml/data.ts +++ b/apps/meteor/tests/unit/app/meteor-accounts-saml/data.ts @@ -13,7 +13,9 @@ export const serviceProviderOptions: IServiceProviderOptions = { authnContextComparison: 'Whatever', defaultUserRole: 'user', allowedClockDrift: 0, - signatureValidationType: 'All', + signatureValidationType: 'None', + validateLogoutRequestSignature: true, + validateLogoutResponseSignature: true, identifierFormat: 'email', nameIDPolicyTemplate: '', authnContextTemplate: '__authnContext__', diff --git a/apps/meteor/tests/unit/app/meteor-accounts-saml/helpers.ts b/apps/meteor/tests/unit/app/meteor-accounts-saml/helpers.ts new file mode 100644 index 0000000000000..be2c1ba020270 --- /dev/null +++ b/apps/meteor/tests/unit/app/meteor-accounts-saml/helpers.ts @@ -0,0 +1,47 @@ +import type { + SAMLDocumentType, + SAMLPOSTEnvelope, + SAMLRedirectEnvelope, +} from '../../../../app/meteor-accounts-saml/server/definition/SAMLEnvelope'; + +export function makeLogoutEnvelope( + type: T, + xml: string, + signedContent?: string, + signature?: string, +): SAMLRedirectEnvelope { + return { + binding: 'HTTP-Redirect', + encodedDocument: xml, + decodedDocument: xml, + type, + relayState: 'relayState', + ...(signedContent && { signedContent }), + ...(signature && { + signature, + sigAlg: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', + }), + }; +} + +export function makeLogoutRequestEnvelope(xml: string, signedContent?: string, signature?: string) { + return makeLogoutEnvelope('SAMLRequest', xml, signedContent, signature); +} + +export function makeLogoutResponseEnvelope(xml: string, signedContent?: string, signature?: string) { + return makeLogoutEnvelope('SAMLResponse', xml, signedContent, signature); +} + +export function makeLoginEnvelope(type: T, xml: string): SAMLPOSTEnvelope { + return { + binding: 'HTTP-POST', + encodedDocument: xml, + decodedDocument: xml, + type, + relayState: 'relayState', + }; +} + +export function makeLoginResponseEnvelope(xml: string) { + return makeLoginEnvelope('SAMLResponse', xml); +} diff --git a/apps/meteor/tests/unit/app/meteor-accounts-saml/loginHandler.spec.ts b/apps/meteor/tests/unit/app/meteor-accounts-saml/loginHandler.spec.ts new file mode 100644 index 0000000000000..42e3ba8cde170 --- /dev/null +++ b/apps/meteor/tests/unit/app/meteor-accounts-saml/loginHandler.spec.ts @@ -0,0 +1,74 @@ +import { expect } from 'chai'; +import { describe, it, beforeEach } from 'mocha'; +import proxyquire from 'proxyquire'; +import sinon from 'sinon'; + +const retrieveCredential = sinon.stub().resolves(null); +const removeById = sinon.stub().resolves(); +const samlUtilsMock = { + serviceProviders: [{ provider: 'test-saml' }] as any[], + log: sinon.stub(), + mapProfileToUserObject: sinon.stub(), + events: { emit: sinon.stub() }, +}; + +const handler = sinon.stub(); +proxyquire.noCallThru().load('../../../../app/meteor-accounts-saml/server/loginHandler', { + '@rocket.chat/models': { + CredentialTokens: { removeById }, + }, + 'meteor/accounts-base': { + Accounts: { + LoginCancelledError: { numericError: 403 }, + registerLoginHandler: (_name: string, fn: any) => { + handler.callsFake(fn); + }, + }, + }, + 'meteor/meteor': { + Meteor: { Error }, + }, + './lib/SAML': { + SAML: { retrieveCredential }, + }, + './lib/Utils': { + SAMLUtils: samlUtilsMock, + }, + '../../../server/lib/i18n': { i18n: { t: sinon.stub().returns('') } }, + '../../../server/lib/logger/system': { SystemLogger: { error: sinon.stub() } }, +}); + +describe('SAML loginHandler', () => { + beforeEach(() => { + retrieveCredential.reset(); + retrieveCredential.resolves(null); + removeById.reset(); + removeById.resolves(); + samlUtilsMock.serviceProviders = [{ provider: 'test-saml' }]; + }); + + it('should reject non-string credentialToken and never query the database (NoSQL injection prevention)', async () => { + expect(await handler({ saml: true, credentialToken: { $gt: '' } })).to.be.undefined; + expect(await handler({ saml: true, credentialToken: { $ne: null } })).to.be.undefined; + expect(await handler({ saml: true, credentialToken: { $not: { $eq: '__nonexistent__' } } })).to.be.undefined; + expect(await handler({ saml: true, credentialToken: 123 })).to.be.undefined; + expect(await handler({ saml: true, credentialToken: ['a'] })).to.be.undefined; + expect(await handler({ saml: true, credentialToken: null })).to.be.undefined; + + expect(retrieveCredential.called).to.be.false; + }); + + it('should return undefined when no SAML providers are configured', async () => { + samlUtilsMock.serviceProviders = []; + + expect(await handler({ saml: true, credentialToken: 'valid-token' })).to.be.undefined; + expect(retrieveCredential.called).to.be.false; + }); + + it('should delete the credential token after retrieval', async () => { + await handler({ saml: true, credentialToken: 'token-to-delete' }); + + expect(removeById.calledOnce).to.be.true; + expect(removeById.calledWith('token-to-delete')).to.be.true; + }); +}); diff --git a/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts b/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts index effb3bee3a00f..fb972157db7ce 100644 --- a/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts +++ b/apps/meteor/tests/unit/app/meteor-accounts-saml/server.tests.ts @@ -28,6 +28,7 @@ import { privateKeyCert, privateKey, } from './data'; +import { makeLoginResponseEnvelope, makeLogoutRequestEnvelope, makeLogoutResponseEnvelope } from './helpers'; import { SAMLUtils } from '../../../../app/meteor-accounts-saml/server/lib/Utils'; import { AuthorizeRequest } from '../../../../app/meteor-accounts-saml/server/lib/generators/AuthorizeRequest'; import { LogoutRequest } from '../../../../app/meteor-accounts-saml/server/lib/generators/LogoutRequest'; @@ -140,7 +141,7 @@ describe('SAML', () => { it('should extract the idpSession and nameID from the request', () => { const parser = new LogoutRequestParser(serviceProviderOptions); - void parser.validate(simpleLogoutRequest, async (err, data) => { + void parser.validate(makeLogoutRequestEnvelope(simpleLogoutRequest), async (err, data) => { expect(err).to.be.null; expect(data).to.be.an('object'); expect(data).to.have.property('idpSession'); @@ -154,7 +155,7 @@ describe('SAML', () => { it('should fail to parse an invalid xml', () => { const parser = new LogoutRequestParser(serviceProviderOptions); - void parser.validate(invalidXml, async (err, data) => { + void parser.validate(makeLogoutRequestEnvelope(invalidXml), async (err, data) => { expect(err).to.exist; expect(data).to.not.exist; }); @@ -162,7 +163,7 @@ describe('SAML', () => { it('should fail to parse a xml without any LogoutRequest tag', () => { const parser = new LogoutRequestParser(serviceProviderOptions); - void parser.validate(randomXml, async (err, data) => { + void parser.validate(makeLogoutRequestEnvelope(randomXml), async (err, data) => { expect(err).to.be.equal('No Request Found'); expect(data).to.not.exist; }); @@ -171,7 +172,7 @@ describe('SAML', () => { it('should fail to parse a request with no NameId', () => { const parser = new LogoutRequestParser(serviceProviderOptions); - void parser.validate(invalidLogoutRequest, async (err, data) => { + void parser.validate(makeLogoutRequestEnvelope(invalidLogoutRequest), async (err, data) => { expect(err).to.be.an('error').that.has.property('message').equal('SAML Logout Request: No NameID node found'); expect(data).to.not.exist; }); @@ -212,7 +213,7 @@ describe('SAML', () => { const logoutResponse = simpleLogoutResponse.replace('[STATUSCODE]', 'urn:oasis:names:tc:SAML:2.0:status:Success'); const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(logoutResponse, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(logoutResponse), async (err, inResponseTo) => { expect(err).to.be.null; expect(inResponseTo).to.be.equal('_id-6530db3fcd23dc42a31c'); }); @@ -222,7 +223,7 @@ describe('SAML', () => { const logoutResponse = simpleLogoutResponse.replace('[STATUSCODE]', 'Anything'); const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(logoutResponse, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(logoutResponse), async (err, inResponseTo) => { expect(err).to.be.equal('Error. Logout not confirmed by IDP'); expect(inResponseTo).to.be.null; }); @@ -230,7 +231,7 @@ describe('SAML', () => { it('should fail to parse an invalid xml', () => { const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(invalidXml, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(invalidXml), async (err, inResponseTo) => { expect(err).to.exist; expect(inResponseTo).to.not.exist; }); @@ -238,7 +239,7 @@ describe('SAML', () => { it('should fail to parse a xml without any LogoutResponse tag', () => { const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(randomXml, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(randomXml), async (err, inResponseTo) => { expect(err).to.be.equal('No Response Found'); expect(inResponseTo).to.not.exist; }); @@ -252,7 +253,7 @@ describe('SAML', () => { .replace('InResponseTo=', 'SomethingElse='); const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(logoutResponse, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(logoutResponse), async (err, inResponseTo) => { expect(err).to.be.equal('Unexpected Response from IDP'); expect(inResponseTo).to.not.exist; }); @@ -261,7 +262,7 @@ describe('SAML', () => { it('should reject a response with no status tag', () => { const parser = new LogoutResponseParser(serviceProviderOptions); - void parser.validate(invalidLogoutResponse, async (err, inResponseTo) => { + void parser.validate(makeLogoutResponseEnvelope(invalidLogoutResponse), async (err, inResponseTo) => { expect(err).to.be.equal('Error. Logout not confirmed by IDP'); expect(inResponseTo).to.be.null; }); @@ -303,7 +304,7 @@ describe('SAML', () => { .replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(serviceProviderOptions); - parser.validate(response, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, profile, loggedOut) => { expect(err).to.be.null; expect(profile).to.be.an('object'); expect(profile).to.have.property('inResponseToId').equal('[INRESPONSETO]'); @@ -325,7 +326,7 @@ describe('SAML', () => { const response = samlResponse.replace('[NOTBEFORE]', notBefore.toISOString()).replace('[NOTONORAFTER]', new Date().toISOString()); const parser = new ResponseParser(serviceProviderOptions); - parser.validate(response, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, profile, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(profile).to.be.null; expect(loggedOut).to.be.false; @@ -342,7 +343,7 @@ describe('SAML', () => { const response = samlResponse.replace('[NOTBEFORE]', notBefore.toISOString()).replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(serviceProviderOptions); - parser.validate(response, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, profile, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(profile).to.be.null; expect(loggedOut).to.be.false; @@ -351,7 +352,7 @@ describe('SAML', () => { it('should fail to parse an invalid xml', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(invalidXml, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(invalidXml), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Unknown SAML response message'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -360,7 +361,7 @@ describe('SAML', () => { it('should fail to parse a xml without any Response tag', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(randomXml, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(randomXml), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Unknown SAML response message'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -369,7 +370,7 @@ describe('SAML', () => { it('should reject a xml with multiple responses', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(duplicatedSamlResponse, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(duplicatedSamlResponse), (err, data, loggedOut) => { expect(err).to.be.an('error'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -378,7 +379,7 @@ describe('SAML', () => { it('should fail to parse a reponse with no Status tag', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(samlResponseMissingStatus, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseMissingStatus), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Missing StatusCode'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -387,7 +388,7 @@ describe('SAML', () => { it('should fail to parse a reponse with a failed status', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(samlResponseFailedStatus, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseFailedStatus), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Status is: Failed'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -396,7 +397,7 @@ describe('SAML', () => { it('should reject a response with multiple assertions', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(samlResponseMultipleAssertions, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseMultipleAssertions), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Too many SAML assertions'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -405,7 +406,7 @@ describe('SAML', () => { it('should reject a response with no assertions', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(samlResponseMissingAssertion, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseMissingAssertion), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Missing SAML assertion'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -430,7 +431,7 @@ describe('SAML', () => { .replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(providerOptions); - parser.validate(response, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('No valid SAML Signature found'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -439,7 +440,7 @@ describe('SAML', () => { it('should reject a document with multiple issuers', () => { const parser = new ResponseParser(serviceProviderOptions); - parser.validate(samlResponseMultipleIssuers, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseMultipleIssuers), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Too many Issuers'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -454,7 +455,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(options); - parser.validate(encryptedResponse, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(encryptedResponse), (err, profile, loggedOut) => { // No way to change the assertion conditions on an encrypted response ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -468,10 +469,11 @@ describe('SAML', () => { privateCert: privateKeyCert, signatureValidationType: 'All', privateKey, + cert: certificate, }; const parser = new ResponseParser(options); - parser.validate(encryptedResponse, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(encryptedResponse), (err, profile, loggedOut) => { // No way to change the assertion conditions on an encrypted response ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -499,7 +501,7 @@ describe('SAML', () => { .replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(providerOptions); - parser.validate(response, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Invalid Assertion signature'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -524,7 +526,7 @@ describe('SAML', () => { .replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(providerOptions); - parser.validate(response, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Invalid Signature'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -547,7 +549,7 @@ describe('SAML', () => { const response = samlResponse.replace('[NOTBEFORE]', notBefore.toISOString()).replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(providerOptions); - parser.validate(response, (err, data, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, data, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Invalid Assertion signature'); expect(data).to.not.exist; expect(loggedOut).to.be.false; @@ -562,7 +564,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidAssertionSignature, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidAssertionSignature), (err, profile, loggedOut) => { // To have a valid signature, we can't change the assertion conditions ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -570,6 +572,21 @@ describe('SAML', () => { }); }); + it('should reject an assertion with a valid signature if the certificate is not configured', () => { + const providerOptions = { + ...serviceProviderOptions, + signatureValidationType: 'Assertion', + }; + + const parser = new ResponseParser(providerOptions); + parser.validate(makeLoginResponseEnvelope(samlResponseValidAssertionSignature), (err, profile, loggedOut) => { + // To have a valid signature, we can't change the assertion conditions ¯\_(ツ)_/¯ + expect(err).to.be.an('error').that.has.property('message').that.is.equal('Unable to validate signature'); + expect(loggedOut).to.be.false; + expect(profile).to.be.null; + }); + }); + it('should accept a document with a valid response signature', () => { const providerOptions = { ...serviceProviderOptions, @@ -578,7 +595,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidSignatures, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidSignatures), (err, profile, loggedOut) => { // To have a valid signature, we can't change the assertion conditions ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -594,7 +611,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidAssertionSignature, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidAssertionSignature), (err, profile, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Invalid Signature'); expect(loggedOut).to.be.false; expect(profile).to.be.null; @@ -609,7 +626,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidSignatures, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidSignatures), (err, profile, loggedOut) => { // To have a valid signature, we can't change the assertion conditions ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -625,7 +642,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidAssertionSignature, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidAssertionSignature), (err, profile, loggedOut) => { expect(err).to.be.an('error').that.has.property('message').that.is.equal('Invalid Signature'); expect(loggedOut).to.be.false; expect(profile).to.be.null; @@ -640,7 +657,7 @@ describe('SAML', () => { }; const parser = new ResponseParser(providerOptions); - parser.validate(samlResponseValidAssertionSignature, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(samlResponseValidAssertionSignature), (err, profile, loggedOut) => { // To have a valid signature, we can't change the assertion conditions ¯\_(ツ)_/¯ expect(err).to.be.an('error').that.has.property('message').that.is.equal('NotBefore / NotOnOrAfter assertion failed'); expect(loggedOut).to.be.false; @@ -952,7 +969,7 @@ describe('SAML', () => { .replace('[NOTONORAFTER]', notOnOrAfter.toISOString()); const parser = new ResponseParser(serviceProviderOptions); - parser.validate(response, (err, profile, loggedOut) => { + parser.validate(makeLoginResponseEnvelope(response), (err, profile, loggedOut) => { expect(profile).to.be.an('object'); expect(err).to.be.null; expect(loggedOut).to.be.false; diff --git a/packages/core-typings/src/ILoginServiceConfiguration.ts b/packages/core-typings/src/ILoginServiceConfiguration.ts index 74d2841f036dc..76a4779e806e9 100644 --- a/packages/core-typings/src/ILoginServiceConfiguration.ts +++ b/packages/core-typings/src/ILoginServiceConfiguration.ts @@ -88,7 +88,9 @@ export type SAMLConfiguration = { cert: string; algorithm: SAMLSignatureAlgorithm; }; - signatureValidationType: 'All' | 'Response' | 'Assertion' | 'Either'; + signatureValidationType: 'All' | 'Response' | 'Assertion' | 'Either' | 'None'; + validateLogoutRequestSignature: boolean; + validateLogoutResponseSignature: boolean; userDataFieldMap: string; allowedClockDrift: number; channelsAttributeUpdate: boolean; diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 2abb096ac43b2..a3be2284546ae 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -4672,6 +4672,7 @@ "SAML_Custom_signature_validation_all": "Validate All Signatures", "SAML_Custom_signature_validation_assertion": "Validate Assertion Signature", "SAML_Custom_signature_validation_either": "Validate Either Signature", + "SAML_Custom_signature_validation_none": "Don't Validate Signatures", "SAML_Custom_signature_validation_response": "Validate Response Signature", "SAML_Custom_signature_validation_type": "Signature Validation Type", "SAML_Custom_signature_validation_type_description": "This setting will be ignored if no Custom Certificate is provided.", @@ -4679,6 +4680,8 @@ "SAML_Custom_user_data_custom_fieldmap_description": "Configure how user custom fields are populated from a record in SAML (once found).", "SAML_Custom_user_data_fieldmap": "User Data Field Map", "SAML_Custom_user_data_fieldmap_description": "Configure how user account fields (like email) are populated from a record in SAML (once found). \nAs an example, `{\"name\":\"cn\", \"email\":\"mail\"}` will choose a person's human readable name from the cn attribute, and their email from the mail attribute. \nAvailable fields in Rocket.Chat: `name`, `email` and `username`, everything else will be discarted. \n`{\"email\": \"mail\",\"username\": {\"fieldName\": \"mail\",\"regex\": \"(.*)@.+$\",\"template\": \"user-regex\"}, \"name\": { \"fieldNames\": [\"firstName\", \"lastName\"], \"template\": \"{{firstName}} {{lastName}}\"}, \"{{identifier}}\": \"uid\"}`", + "SAML_Custom_validate_logout_request_signature": "Verify Logout Request Signature", + "SAML_Custom_validate_logout_response_signature": "Verify Logout Response Signature", "SAML_Default_User_Role": "Default User Role", "SAML_Default_User_Role_Description": "You can specify multiple roles, separating them with commas.", "SAML_Description": "Security Assertion Markup Language used for exchanging authentication and authorization data.", diff --git a/packages/model-typings/src/models/IBaseUploadsModel.ts b/packages/model-typings/src/models/IBaseUploadsModel.ts index de47c9a7d8b02..be8698e2bef84 100644 --- a/packages/model-typings/src/models/IBaseUploadsModel.ts +++ b/packages/model-typings/src/models/IBaseUploadsModel.ts @@ -1,4 +1,4 @@ -import type { IUpload } from '@rocket.chat/core-typings'; +import type { EncryptedContent, IUpload } from '@rocket.chat/core-typings'; import type { DeleteResult, UpdateResult, ClientSession, Document, InsertOneResult, WithId, FindCursor, FindOptions } from 'mongodb'; import type { IBaseModel } from './IBaseModel'; @@ -23,4 +23,10 @@ export interface IBaseUploadsModel extends IBaseModel { deleteFile(fileId: string, options?: { session?: ClientSession }): Promise; findOneByIdAndUserIdAndRoomId(fileId: string, userId: string, rid: string, options?: FindOptions): Promise; + + updateFileMetadata( + fileId: string, + userId: string, + metadata: { name?: string; description?: string; typeGroup?: string; content?: EncryptedContent }, + ): Promise; } diff --git a/packages/models/src/models/BaseUploadModel.ts b/packages/models/src/models/BaseUploadModel.ts index 055f9c1db483a..a9a8483c231ee 100644 --- a/packages/models/src/models/BaseUploadModel.ts +++ b/packages/models/src/models/BaseUploadModel.ts @@ -1,4 +1,4 @@ -import type { IUpload } from '@rocket.chat/core-typings'; +import type { EncryptedContent, IUpload } from '@rocket.chat/core-typings'; import type { IBaseUploadsModel } from '@rocket.chat/model-typings'; import type { DeleteResult, @@ -138,4 +138,12 @@ export abstract class BaseUploadModelRaw extends BaseRaw implements IBaseUplo async findOneByIdAndUserIdAndRoomId(fileId: string, userId: string, rid: string, options?: FindOptions): Promise { return this.findOne({ _id: fileId, userId, rid }, options); } + + async updateFileMetadata( + fileId: string, + userId: string, + metadata: { name?: string; description?: string; typeGroup?: string; content?: EncryptedContent }, + ): Promise { + return this.updateOne({ _id: fileId, userId }, { $set: metadata }); + } } diff --git a/packages/models/src/models/OAuthAccessTokens.ts b/packages/models/src/models/OAuthAccessTokens.ts index 5adca5f964e9a..d7d9e77000eed 100644 --- a/packages/models/src/models/OAuthAccessTokens.ts +++ b/packages/models/src/models/OAuthAccessTokens.ts @@ -19,14 +19,14 @@ export class OAuthAccessTokensRaw extends BaseRaw implements } async findOneByAccessToken(accessToken: string, options?: FindOptions): Promise { - if (!accessToken) { + if (typeof accessToken !== 'string' || !accessToken) { return null; } return this.findOne({ accessToken }, options); } async findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise { - if (!refreshToken) { + if (typeof refreshToken !== 'string' || !refreshToken) { return null; } return this.findOne({ refreshToken }, options); diff --git a/packages/models/src/models/OAuthApps.ts b/packages/models/src/models/OAuthApps.ts index 0f0d412365023..ccac7c15eee16 100644 --- a/packages/models/src/models/OAuthApps.ts +++ b/packages/models/src/models/OAuthApps.ts @@ -28,6 +28,9 @@ export class OAuthAppsRaw extends BaseRaw implements IOAuthAppsModel } findOneActiveByClientId(clientId: string, options?: FindOptions): Promise { + if (typeof clientId !== 'string' || !clientId) { + return Promise.resolve(null); + } return this.findOne( { active: true, @@ -42,6 +45,9 @@ export class OAuthAppsRaw extends BaseRaw implements IOAuthAppsModel clientSecret: string, options?: FindOptions, ): Promise { + if (typeof clientId !== 'string' || !clientId || typeof clientSecret !== 'string' || !clientSecret) { + return Promise.resolve(null); + } return this.findOne( { active: true, diff --git a/packages/models/src/models/OAuthAuthCodes.ts b/packages/models/src/models/OAuthAuthCodes.ts index 852f3ac4cb1ee..30124f488686c 100644 --- a/packages/models/src/models/OAuthAuthCodes.ts +++ b/packages/models/src/models/OAuthAuthCodes.ts @@ -14,6 +14,9 @@ export class OAuthAuthCodesRaw extends BaseRaw implements IOAuth } findOneByAuthCode(authCode: string, options?: FindOptions): Promise { + if (typeof authCode !== 'string' || !authCode) { + return Promise.resolve(null); + } return this.findOne({ authCode }, options); } } diff --git a/packages/models/src/models/OAuthRefreshTokens.ts b/packages/models/src/models/OAuthRefreshTokens.ts index 2693cb61ebe6f..031dc0fa9dd75 100644 --- a/packages/models/src/models/OAuthRefreshTokens.ts +++ b/packages/models/src/models/OAuthRefreshTokens.ts @@ -14,6 +14,9 @@ export class OAuthRefreshTokensRaw extends BaseRaw implement } findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise { + if (typeof refreshToken !== 'string' || !refreshToken) { + return Promise.resolve(null); + } return this.findOne({ refreshToken }, options); } } From 7d9f86856c5dbc6c25a657ab6ba9d926362c573c Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 14:25:07 +0200 Subject: [PATCH 10/69] chore: bump Node to 22.22.2 (#40453) Co-authored-by: Guilherme Gazzo Co-authored-by: Matheus Cardoso --- .../workflows/update-version-durability.yml | 2 +- apps/meteor/.docker-mongo/Dockerfile | 2 +- apps/meteor/.docker/Dockerfile.alpine | 4 +- apps/meteor/.docker/Dockerfile.debian | 2 +- apps/meteor/ee/server/services/Dockerfile | 4 +- apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- ee/apps/account-service/Dockerfile | 4 +- ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/Dockerfile | 4 +- ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/Dockerfile | 4 +- ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/Dockerfile | 4 +- ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/Dockerfile | 4 +- ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/Dockerfile | 4 +- ee/apps/queue-worker/package.json | 2 +- ee/packages/abac/package.json | 2 +- ee/packages/federation-matrix/package.json | 2 +- ee/packages/network-broker/package.json | 2 +- ee/packages/omnichannel-services/package.json | 2 +- ee/packages/presence/package.json | 2 +- package.json | 6 +-- packages/apps-engine/package.json | 2 +- packages/message-parser/jest.config.ts | 7 ++- packages/message-parser/package.json | 4 +- packages/peggy-loader/package.json | 2 +- packages/release-action/package.json | 2 +- packages/release-changelog/package.json | 2 +- yarn.lock | 46 +++++++++---------- 32 files changed, 70 insertions(+), 65 deletions(-) diff --git a/.github/workflows/update-version-durability.yml b/.github/workflows/update-version-durability.yml index 6b4190af35f03..5bd2b83c02079 100644 --- a/.github/workflows/update-version-durability.yml +++ b/.github/workflows/update-version-durability.yml @@ -23,7 +23,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: - node-version: 22.16.0 + node-version: 22.22.2 - name: Install dependencies run: | diff --git a/apps/meteor/.docker-mongo/Dockerfile b/apps/meteor/.docker-mongo/Dockerfile index ee02a4101800c..f9f899be75d18 100644 --- a/apps/meteor/.docker-mongo/Dockerfile +++ b/apps/meteor/.docker-mongo/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.14.0-bullseye-slim +FROM node:22.22.2-bullseye-slim LABEL maintainer="buildmaster@rocket.chat" diff --git a/apps/meteor/.docker/Dockerfile.alpine b/apps/meteor/.docker/Dockerfile.alpine index bcea47623c3ba..dcfed47e1c5f7 100644 --- a/apps/meteor/.docker/Dockerfile.alpine +++ b/apps/meteor/.docker/Dockerfile.alpine @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ENV LANG=C.UTF-8 @@ -20,7 +20,7 @@ RUN cd /app/bundle/programs/server \ && find /app/bundle/programs/server/npm/node_modules -type f -name '*.map' -delete \ && find /app/bundle/programs/web.browser -type f -name '*.map' -delete -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 LABEL maintainer="buildmaster@rocket.chat" diff --git a/apps/meteor/.docker/Dockerfile.debian b/apps/meteor/.docker/Dockerfile.debian index 51fd4e429bcf0..8938efd52db18 100644 --- a/apps/meteor/.docker/Dockerfile.debian +++ b/apps/meteor/.docker/Dockerfile.debian @@ -2,7 +2,7 @@ ARG DENO_VERSION="1.37.1" FROM denoland/deno:bin-${DENO_VERSION} as deno -FROM node:22.14.0-bullseye-slim +FROM node:22.22.2-bullseye-slim LABEL maintainer="buildmaster@rocket.chat" diff --git a/apps/meteor/ee/server/services/Dockerfile b/apps/meteor/ee/server/services/Dockerfile index f492c98a5fa8f..b54724597ffad 100644 --- a/apps/meteor/ee/server/services/Dockerfile +++ b/apps/meteor/ee/server/services/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 as build +FROM node:22.22.2-alpine3.22 as build WORKDIR /app @@ -28,7 +28,7 @@ RUN yarn install RUN yarn workspace @rocket.chat/core-typings run build \ && yarn workspace @rocket.chat/rest-typings run build -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 80078f10605e7..77b26bef19a64 100644 --- a/apps/meteor/ee/server/services/package.json +++ b/apps/meteor/ee/server/services/package.json @@ -53,7 +53,7 @@ "@types/ejson": "^2.2.2", "@types/express": "^4.17.25", "@types/fibers": "^3.1.4", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/ws": "^8.18.1", "npm-run-all": "^4.1.5", "pino-pretty": "13.1.3", diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 357f99edac4d7..debd0726ff56b 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -378,7 +378,7 @@ "@types/meteor-collection-hooks": "^0.8.9", "@types/mkdirp": "^1.0.2", "@types/mocha": "github:whitecolor/mocha-types", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/node-rsa": "^1.1.4", "@types/nodemailer": "^8.0.0", "@types/oauth2-server": "^3.0.18", diff --git a/ee/apps/account-service/Dockerfile b/ee/apps/account-service/Dockerfile index dc5f9b1e6c5c2..3c4dd3b6f3dd9 100644 --- a/ee/apps/account-service/Dockerfile +++ b/ee/apps/account-service/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -88,7 +88,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index f6d89df98c517..e31f7a1c992ff 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -30,7 +30,7 @@ "@rocket.chat/string-helpers": "~0.32.0", "@rocket.chat/tools": "workspace:^", "@rocket.chat/tracing": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "bcrypt": "^6.0.0", "ejson": "^2.2.3", "eventemitter3": "^5.0.4", diff --git a/ee/apps/authorization-service/Dockerfile b/ee/apps/authorization-service/Dockerfile index d238054966a16..747b9793bb66e 100644 --- a/ee/apps/authorization-service/Dockerfile +++ b/ee/apps/authorization-service/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -94,7 +94,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index 7888df0cafd33..e8a30772c68e6 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -30,7 +30,7 @@ "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "~0.32.0", "@rocket.chat/tracing": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "ejson": "^2.2.3", "eventemitter3": "^5.0.4", "mem": "^8.1.1", diff --git a/ee/apps/ddp-streamer/Dockerfile b/ee/apps/ddp-streamer/Dockerfile index 824528c516c04..bc489a5a24a21 100644 --- a/ee/apps/ddp-streamer/Dockerfile +++ b/ee/apps/ddp-streamer/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -91,7 +91,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index b276bc6c5a2c4..00293a9451da9 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -54,7 +54,7 @@ "@rocket.chat/jest-presets": "workspace:*", "@types/ejson": "^2.2.2", "@types/jest": "~30.0.0", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/polka": "^0.5.8", "@types/prometheus-gc-stats": "^0.6.4", "@types/underscore": "^1.13.0", diff --git a/ee/apps/omnichannel-transcript/Dockerfile b/ee/apps/omnichannel-transcript/Dockerfile index 92417b332d944..9425aaeb9cf7a 100644 --- a/ee/apps/omnichannel-transcript/Dockerfile +++ b/ee/apps/omnichannel-transcript/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -101,7 +101,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index cc2eff1222df8..bfad54193420d 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -32,7 +32,7 @@ "@rocket.chat/pdf-worker": "workspace:^", "@rocket.chat/tools": "workspace:^", "@rocket.chat/tracing": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", "eventemitter3": "^5.0.4", diff --git a/ee/apps/presence-service/Dockerfile b/ee/apps/presence-service/Dockerfile index b97ffea482812..4bdb808180d23 100644 --- a/ee/apps/presence-service/Dockerfile +++ b/ee/apps/presence-service/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -89,7 +89,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index 5f74808539f66..f181146320eac 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -29,7 +29,7 @@ "@rocket.chat/presence": "workspace:^", "@rocket.chat/string-helpers": "~0.32.0", "@rocket.chat/tracing": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "ejson": "^2.2.3", "eventemitter3": "^5.0.4", "mem": "^8.1.1", diff --git a/ee/apps/queue-worker/Dockerfile b/ee/apps/queue-worker/Dockerfile index 92417b332d944..9425aaeb9cf7a 100644 --- a/ee/apps/queue-worker/Dockerfile +++ b/ee/apps/queue-worker/Dockerfile @@ -1,4 +1,4 @@ -FROM node:22.16.0-alpine3.22 AS builder +FROM node:22.22.2-alpine3.22 AS builder ARG SERVICE @@ -101,7 +101,7 @@ WORKDIR /app/ee/apps/${SERVICE} RUN yarn workspaces focus --production -FROM node:22.16.0-alpine3.22 +FROM node:22.22.2-alpine3.22 ARG SERVICE diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index fd1c637fb6d5e..d1ba5b797aa56 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -28,7 +28,7 @@ "@rocket.chat/network-broker": "workspace:^", "@rocket.chat/omnichannel-services": "workspace:^", "@rocket.chat/tracing": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", "eventemitter3": "^5.0.4", diff --git a/ee/packages/abac/package.json b/ee/packages/abac/package.json index b1394287390e4..44d0db08a735b 100644 --- a/ee/packages/abac/package.json +++ b/ee/packages/abac/package.json @@ -40,7 +40,7 @@ "devDependencies": { "@rocket.chat/tsconfig": "workspace:*", "@types/jest": "~30.0.0", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "jest": "~30.2.0", "mongodb-memory-server": "^10.1.4", diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index ac7bec883108e..8bfc8f954acbc 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -43,7 +43,7 @@ "@rocket.chat/ddp-client": "workspace:^", "@types/emojione": "^2.2.9", "@types/lodash.debounce": "^4.0.9", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/sanitize-html": "~2.16.1", "eslint": "~9.39.4", "jest": "~30.2.0", diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json index d89965748ddfe..b7eb298176ea5 100644 --- a/ee/packages/network-broker/package.json +++ b/ee/packages/network-broker/package.json @@ -25,7 +25,7 @@ "@rocket.chat/tsconfig": "workspace:*", "@types/chai": "~4.3.20", "@types/ejson": "^2.2.2", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/sinon": "^10.0.20", "chai": "^4.5.0", "eslint": "~9.39.4", diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index b2da4d32a07ea..ce32a970cb410 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -29,7 +29,7 @@ "@rocket.chat/rest-typings": "workspace:^", "@rocket.chat/string-helpers": "~0.32.0", "@rocket.chat/tools": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "date-fns": "~4.1.0", "ejson": "^2.2.3", "emoji-toolkit": "^7.0.1", diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index b004ee26b1a72..d9fff7da45563 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -24,7 +24,7 @@ "devDependencies": { "@rocket.chat/apps-engine": "workspace:^", "@rocket.chat/rest-typings": "workspace:^", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "jest": "~30.2.0", "typescript": "~5.9.3" diff --git a/package.json b/package.json index 500aca7945e9b..1940198cad91f 100644 --- a/package.json +++ b/package.json @@ -159,7 +159,7 @@ "@rocket.chat/eslint-config": "workspace:~", "@types/chart.js": "^2.9.41", "@types/js-yaml": "^4.0.9", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "eslint-plugin-you-dont-need-lodash-underscore": "~6.14.0", "ts-node": "^10.9.2", @@ -168,11 +168,11 @@ }, "packageManager": "yarn@4.12.0", "engines": { - "node": "22.16.0", + "node": "22.22.2", "yarn": "4.12.0" }, "volta": { - "node": "22.16.0", + "node": "22.22.2", "yarn": "4.12.0" }, "houston": { diff --git a/packages/apps-engine/package.json b/packages/apps-engine/package.json index 15a53cde7cfc8..f443d1dadef1f 100644 --- a/packages/apps-engine/package.json +++ b/packages/apps-engine/package.json @@ -94,7 +94,7 @@ "@types/adm-zip": "^0.5.8", "@types/debug": "^4.1.13", "@types/lodash.clonedeep": "^4.5.9", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "@types/semver": "^7.5.8", "@types/stack-trace": "0.0.33", "@types/uuid": "~10.0.0", diff --git a/packages/message-parser/jest.config.ts b/packages/message-parser/jest.config.ts index 3b5a3f5d7af89..cf51860fc6600 100644 --- a/packages/message-parser/jest.config.ts +++ b/packages/message-parser/jest.config.ts @@ -1,8 +1,13 @@ -import { resolve } from 'node:path'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; import server from '@rocket.chat/jest-presets/server'; import type { Config } from 'jest'; +// Jest 30 loads this config via Node's native type stripping (Node 22.18+), +// which treats the file as ESM where __dirname is not defined as a global. +const __dirname = dirname(fileURLToPath(import.meta.url)); + export default { preset: server.preset, transform: { diff --git a/packages/message-parser/package.json b/packages/message-parser/package.json index c7425c5a77f54..90d43be5fefd5 100644 --- a/packages/message-parser/package.json +++ b/packages/message-parser/package.json @@ -50,7 +50,7 @@ "@rocket.chat/peggy-loader": "workspace:~", "@rocket.chat/prettier-config": "~0.31.25", "@types/jest": "~30.0.0", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "fast-check": "^4.6.0", "jest": "~30.2.0", @@ -67,7 +67,7 @@ "webpack-cli": "~5.1.4" }, "engines": { - "node": "22.16.0" + "node": "22.22.2" }, "volta": { "extends": "../../package.json" diff --git a/packages/peggy-loader/package.json b/packages/peggy-loader/package.json index 62a64d1784757..0fea85f80ad30 100644 --- a/packages/peggy-loader/package.json +++ b/packages/peggy-loader/package.json @@ -34,7 +34,7 @@ }, "devDependencies": { "@rocket.chat/prettier-config": "~0.31.25", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "npm-run-all": "^4.1.5", "peggy": "4.1.1", diff --git a/packages/release-action/package.json b/packages/release-action/package.json index 3bc9d67936853..d273d68a2acf7 100644 --- a/packages/release-action/package.json +++ b/packages/release-action/package.json @@ -21,7 +21,7 @@ "unified": "9.2.2" }, "devDependencies": { - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "typescript": "~5.9.3" }, diff --git a/packages/release-changelog/package.json b/packages/release-changelog/package.json index 2966e1ccc34ff..cda5642241ddc 100644 --- a/packages/release-changelog/package.json +++ b/packages/release-changelog/package.json @@ -13,7 +13,7 @@ }, "devDependencies": { "@changesets/types": "^6.0.0", - "@types/node": "~22.16.5", + "@types/node": "~22.19.17", "eslint": "~9.39.4", "typescript": "~5.9.3" }, diff --git a/yarn.lock b/yarn.lock index ad85c0ff51ed1..8a3f5b9c5cfff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8797,7 +8797,7 @@ __metadata: "@rocket.chat/tools": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mem: "npm:^8.1.1" @@ -8825,7 +8825,7 @@ __metadata: "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" "@types/bcrypt": "npm:^6.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" bcrypt: "npm:^6.0.0" @@ -8901,7 +8901,7 @@ __metadata: "@types/adm-zip": "npm:^0.5.8" "@types/debug": "npm:^4.1.13" "@types/lodash.clonedeep": "npm:^4.5.9" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/semver": "npm:^7.5.8" "@types/stack-trace": "npm:0.0.33" "@types/uuid": "npm:~10.0.0" @@ -8954,7 +8954,7 @@ __metadata: "@rocket.chat/string-helpers": "npm:~0.32.0" "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" @@ -9122,7 +9122,7 @@ __metadata: "@rocket.chat/tracing": "workspace:^" "@types/ejson": "npm:^2.2.2" "@types/jest": "npm:~30.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" "@types/underscore": "npm:^1.13.0" @@ -9222,7 +9222,7 @@ __metadata: "@rocket.chat/rest-typings": "workspace:^" "@types/emojione": "npm:^2.2.9" "@types/lodash.debounce": "npm:^4.0.9" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/sanitize-html": "npm:~2.16.1" emojione: "npm:^4.5.0" eslint: "npm:~9.39.4" @@ -9781,7 +9781,7 @@ __metadata: "@rocket.chat/peggy-loader": "workspace:~" "@rocket.chat/prettier-config": "npm:~0.31.25" "@types/jest": "npm:~30.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" eslint: "npm:~9.39.4" fast-check: "npm:^4.6.0" jest: "npm:~30.2.0" @@ -9983,7 +9983,7 @@ __metadata: "@types/meteor-collection-hooks": "npm:^0.8.9" "@types/mkdirp": "npm:^1.0.2" "@types/mocha": "github:whitecolor/mocha-types" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/node-rsa": "npm:^1.1.4" "@types/nodemailer": "npm:^8.0.0" "@types/oauth2-server": "npm:^3.0.18" @@ -10308,7 +10308,7 @@ __metadata: "@rocket.chat/tsconfig": "workspace:*" "@types/chai": "npm:~4.3.20" "@types/ejson": "npm:^2.2.2" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/sinon": "npm:^10.0.20" chai: "npm:^4.5.0" ejson: "npm:^2.2.3" @@ -10376,7 +10376,7 @@ __metadata: "@rocket.chat/tools": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" "@types/jest": "npm:~30.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" date-fns: "npm:~4.1.0" ejson: "npm:^2.2.3" emoji-toolkit: "npm:^7.0.1" @@ -10412,7 +10412,7 @@ __metadata: "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" "@types/i18next-sprintf-postprocessor": "npm:^0.2.3" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" "@types/react": "npm:~18.3.28" @@ -10524,7 +10524,7 @@ __metadata: resolution: "@rocket.chat/peggy-loader@workspace:packages/peggy-loader" dependencies: "@rocket.chat/prettier-config": "npm:~0.31.25" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" eslint: "npm:~9.39.4" npm-run-all: "npm:^4.1.5" peggy: "npm:4.1.1" @@ -10561,7 +10561,7 @@ __metadata: "@rocket.chat/string-helpers": "npm:~0.32.0" "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" @@ -10589,7 +10589,7 @@ __metadata: "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/models": "workspace:^" "@rocket.chat/rest-typings": "workspace:^" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" mongodb: "npm:6.16.0" @@ -10620,7 +10620,7 @@ __metadata: "@rocket.chat/omnichannel-services": "workspace:^" "@rocket.chat/tracing": "workspace:^" "@rocket.chat/tsconfig": "workspace:*" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/polka": "npm:^0.5.8" "@types/prometheus-gc-stats": "npm:^0.6.4" ejson: "npm:^2.2.3" @@ -10663,7 +10663,7 @@ __metadata: "@actions/github": "npm:^6.0.1" "@octokit/core": "npm:^5.0.2" "@octokit/plugin-throttling": "npm:^6.1.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" eslint: "npm:~9.39.4" mdast-util-to-string: "npm:2.0.0" remark-parse: "npm:9.0.0" @@ -10679,7 +10679,7 @@ __metadata: resolution: "@rocket.chat/release-changelog@workspace:packages/release-changelog" dependencies: "@changesets/types": "npm:^6.0.0" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" dataloader: "npm:^2.2.3" eslint: "npm:~9.39.4" node-fetch: "npm:^2.7.0" @@ -14770,12 +14770,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:~22.16.5": - version: 22.16.5 - resolution: "@types/node@npm:22.16.5" +"@types/node@npm:~22.19.17": + version: 22.19.17 + resolution: "@types/node@npm:22.19.17" dependencies: undici-types: "npm:~6.21.0" - checksum: 10/ba45b5c9113cbc5edb12960fcfe7e80db2c998af5c1931264240695b27d756570d92462150b95781bd67a03aa82111cc970ab0f4504eb99213edff8bf425354e + checksum: 10/8adcf9c2e9e7c524196efdd5ee60ebeda980b4ec9b5b8650e2341a2cabe46d368f3a4e4c0050b3bf26eb9cf383453ea2193ec5604079cdf9493a11a742f62018 languageName: node linkType: hard @@ -33316,7 +33316,7 @@ __metadata: "@rocket.chat/eslint-config": "workspace:~" "@types/chart.js": "npm:^2.9.41" "@types/js-yaml": "npm:^4.0.9" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/stream-buffers": "npm:^3.0.8" eslint: "npm:~9.39.4" eslint-plugin-you-dont-need-lodash-underscore: "npm:~6.14.0" @@ -33348,7 +33348,7 @@ __metadata: "@types/ejson": "npm:^2.2.2" "@types/express": "npm:^4.17.25" "@types/fibers": "npm:^3.1.4" - "@types/node": "npm:~22.16.5" + "@types/node": "npm:~22.19.17" "@types/ws": "npm:^8.18.1" ajv: "npm:^8.17.1" bcrypt: "npm:^6.0.0" From af1306b4033625c5cb296e06f73692d1202c627e Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 18:09:35 +0200 Subject: [PATCH 11/69] chore(deps): close ~36 Dependabot advisories via resolutions and direct bumps (#40367) Co-authored-by: Guilherme Gazzo From 49d9660f21b3fd5e0babbe9d75cdd8b100eec771 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 8 May 2026 18:30:45 +0200 Subject: [PATCH 12/69] fix: Use multiselectfiltered instead of multiselect on abac room sidebar (#40459) Co-authored-by: Kevin Aleman --- .changeset/lovely-laws-wait.md | 5 +++++ .../ABAC/ABACRoomsTab/RoomFormAttributeField.tsx | 4 ++-- .../RoomFormAttributeField.spec.tsx.snap | 11 +++++------ 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 .changeset/lovely-laws-wait.md diff --git a/.changeset/lovely-laws-wait.md b/.changeset/lovely-laws-wait.md new file mode 100644 index 0000000000000..306cfc7793926 --- /dev/null +++ b/.changeset/lovely-laws-wait.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +Allows users to search for attribute values when assigning them to rooms diff --git a/apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomFormAttributeField.tsx b/apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomFormAttributeField.tsx index 21a54fd8539f5..f1f3a7c6a75e5 100644 --- a/apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomFormAttributeField.tsx +++ b/apps/meteor/client/views/admin/ABAC/ABACRoomsTab/RoomFormAttributeField.tsx @@ -1,5 +1,5 @@ import type { SelectOption } from '@rocket.chat/fuselage'; -import { Box, Button, FieldError, FieldRow, MultiSelect, SelectFiltered } from '@rocket.chat/fuselage'; +import { Box, Button, FieldError, FieldRow, MultiSelectFiltered, SelectFiltered } from '@rocket.chat/fuselage'; import { useCallback, useMemo } from 'react'; import { useController, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -83,7 +83,7 @@ const RoomFormAttributeField = ({ labelId, onRemove, index, attributeList, requi )} - - + class="rcx-box rcx-box--full rcx-box--animated rcx-input-box--undecorated rcx-input-box rcx-css-trljwa rcx-css-pqpp8q" + placeholder="ABAC_Select_Attribute_Values" + value="" + />
Date: Fri, 8 May 2026 16:41:01 +0000 Subject: [PATCH 13/69] Release 8.4.1 [no ci] --- .changeset/bump-patch-1777809871566.md | 5 ----- .changeset/hot-spoons-heal.md | 5 ----- .changeset/lovely-laws-wait.md | 5 ----- .changeset/rich-doodles-grow.md | 9 --------- apps/meteor/CHANGELOG.md | 23 +++++++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- packages/core-typings/CHANGELOG.md | 6 ++++++ packages/core-typings/package.json | 2 +- packages/i18n/CHANGELOG.md | 6 ++++++ packages/i18n/package.json | 2 +- packages/model-typings/CHANGELOG.md | 11 +++++++++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 13 +++++++++++++ packages/models/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 9 +++++++++ packages/rest-typings/package.json | 2 +- 18 files changed, 76 insertions(+), 32 deletions(-) delete mode 100644 .changeset/bump-patch-1777809871566.md delete mode 100644 .changeset/hot-spoons-heal.md delete mode 100644 .changeset/lovely-laws-wait.md delete mode 100644 .changeset/rich-doodles-grow.md diff --git a/.changeset/bump-patch-1777809871566.md b/.changeset/bump-patch-1777809871566.md deleted file mode 100644 index e1eaa7980afb1..0000000000000 --- a/.changeset/bump-patch-1777809871566.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/hot-spoons-heal.md b/.changeset/hot-spoons-heal.md deleted file mode 100644 index 6bcdabec83e39..0000000000000 --- a/.changeset/hot-spoons-heal.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Disables SAML login when it is set to validate signatures without the proper configuration for it diff --git a/.changeset/lovely-laws-wait.md b/.changeset/lovely-laws-wait.md deleted file mode 100644 index 306cfc7793926..0000000000000 --- a/.changeset/lovely-laws-wait.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@rocket.chat/meteor": patch ---- - -Allows users to search for attribute values when assigning them to rooms diff --git a/.changeset/rich-doodles-grow.md b/.changeset/rich-doodles-grow.md deleted file mode 100644 index 3699a28550a66..0000000000000 --- a/.changeset/rich-doodles-grow.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -'@rocket.chat/model-typings': patch -'@rocket.chat/core-typings': patch -'@rocket.chat/models': patch -'@rocket.chat/i18n': patch -'@rocket.chat/meteor': patch ---- - -Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 3c8f58e820083..a1cc01fa1d4e2 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,28 @@ # @rocket.chat/meteor +## 8.4.1 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Disables SAML login when it is set to validate signatures without the proper configuration for it + +- ([#40459](https://github.com/RocketChat/Rocket.Chat/pull/40459) by [@dionisio-bot](https://github.com/dionisio-bot)) Allows users to search for attribute values when assigning them to rooms + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [5b291c38600757482aaf261a02487abdf5f14007]: + + - @rocket.chat/model-typings@2.2.1 + - @rocket.chat/core-typings@8.4.1 + - @rocket.chat/models@2.2.1 + - @rocket.chat/i18n@3.0.1 + - @rocket.chat/rest-typings@8.4.1 +
+ ## 8.4.0 ### Minor Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index f16e24382056f..07aa9674368fd 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "8.4.0" + "version": "8.4.1" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index debd0726ff56b..00f42559f3682 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/meteor", - "version": "8.4.0", + "version": "8.4.1", "private": true, "description": "The Ultimate Open Source WebChat Platform", "keywords": [ diff --git a/package.json b/package.json index 1940198cad91f..92a35fe43e927 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "8.4.0", + "version": "8.4.1", "private": true, "description": "Rocket.Chat Monorepo", "homepage": "https://github.com/RocketChat/Rocket.Chat#readme", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index fd92979280a62..751c8b6a554c5 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/core-typings +## 8.4.1 + +### Patch Changes + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + ## 8.4.0 ### Minor Changes diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index bba8d2756d9fa..e3cf06e146f6c 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", - "version": "8.4.0", + "version": "8.4.1", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md index cebc35828abb8..7d7b30dc24728 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,11 @@ # @rocket.chat/i18n +## 3.0.1 + +### Patch Changes + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + ## 3.0.0 ### Minor Changes diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 05df78881856e..02e7514613b4e 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/i18n", - "version": "3.0.0", + "version": "3.0.1", "private": true, "type": "module", "exports": { diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 100268a12368b..7a3496b5e454a 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/model-typings +## 2.2.1 + +### Patch Changes + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [5b291c38600757482aaf261a02487abdf5f14007]: + + - @rocket.chat/core-typings@8.4.1 +
+ ## 2.2.0 ### Minor Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 5b8b5d090a9e7..5ada43be9f59f 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "2.2.0", + "version": "2.2.1", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index c3a206df002c5..9ea97b9d3bc86 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,18 @@ # @rocket.chat/models +## 2.2.1 + +### Patch Changes + +- ([#40410](https://github.com/RocketChat/Rocket.Chat/pull/40410) by [@dionisio-bot](https://github.com/dionisio-bot)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [5b291c38600757482aaf261a02487abdf5f14007]: + + - @rocket.chat/model-typings@2.2.1 + - @rocket.chat/core-typings@8.4.1 + - @rocket.chat/rest-typings@8.4.1 +
+ ## 2.2.0 ### Minor Changes diff --git a/packages/models/package.json b/packages/models/package.json index 0fc632cdcf821..f380b7d67fe4b 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "2.2.0", + "version": "2.2.1", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 044533574a007..0b4a25480905f 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/rest-typings +## 8.4.1 + +### Patch Changes + +-
Updated dependencies [5b291c38600757482aaf261a02487abdf5f14007]: + + - @rocket.chat/core-typings@8.4.1 +
+ ## 8.4.0 ### Minor Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index c09e6db1fd609..08459b77cdf93 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "8.4.0", + "version": "8.4.1", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ From 171a46bd8809221c49c8c2eb2d9384b0f7467e68 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Thu, 14 May 2026 13:07:02 +0000 Subject: [PATCH 14/69] Bump 8.4.2 --- .changeset/bump-patch-1778764022832.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/bump-patch-1778764022832.md diff --git a/.changeset/bump-patch-1778764022832.md b/.changeset/bump-patch-1778764022832.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1778764022832.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. From f422eb613d8cae43dc1e44d71b6ecb5a0a9c5d92 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 14:11:17 +0000 Subject: [PATCH 15/69] fix: users.presence ignoring comma-separated IDs after OpenAPI migration (#40527) Co-authored-by: Ricardo Garim --- .changeset/fix-presence-comma-ids.md | 6 +++ apps/meteor/tests/end-to-end/api/users.ts | 42 +++++++++++++++++++ .../src/v1/users/UsersPresenceParamsGET.ts | 3 +- 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-presence-comma-ids.md diff --git a/.changeset/fix-presence-comma-ids.md b/.changeset/fix-presence-comma-ids.md new file mode 100644 index 0000000000000..c85d20785e3a6 --- /dev/null +++ b/.changeset/fix-presence-comma-ids.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/meteor': patch +'@rocket.chat/rest-typings': patch +--- + +Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration \ No newline at end of file diff --git a/apps/meteor/tests/end-to-end/api/users.ts b/apps/meteor/tests/end-to-end/api/users.ts index 30e59d9a554aa..348d3643a7292 100644 --- a/apps/meteor/tests/end-to-end/api/users.ts +++ b/apps/meteor/tests/end-to-end/api/users.ts @@ -1392,6 +1392,48 @@ describe('[Users]', () => { .end(done); }); + it('should return presence for a single id', async () => { + const res = await request + .get(api('users.presence')) + .query({ ids: 'rocket.cat' }) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200); + + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('full', false); + expect(res.body).to.have.property('users').that.is.an('array').with.lengthOf(1); + expect(res.body.users[0]).to.have.property('_id', 'rocket.cat'); + }); + + it('should correctly parse comma-separated ids and not return an empty result', async () => { + const res = await request + .get(api('users.presence')) + .query({ ids: `rocket.cat,${credentials['X-User-Id']}` }) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200); + + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('full', false); + // only rocket.cat is guaranteed to be online; admin may be offline + expect(res.body.users.map((u: IUser) => u._id)).to.include('rocket.cat'); + }); + + it('should return presence for repeated ids params', async () => { + const res = await request + .get(api('users.presence')) + .query(`ids=rocket.cat&ids=${credentials['X-User-Id']}`) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200); + + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('full', false); + // only rocket.cat is guaranteed to be online; admin may be offline + expect(res.body.users.map((u: IUser) => u._id)).to.include('rocket.cat'); + }); + it('should return full list of online users for more than 10 minutes in the past', (done) => { const date = new Date(); date.setMinutes(date.getMinutes() - 11); diff --git a/packages/rest-typings/src/v1/users/UsersPresenceParamsGET.ts b/packages/rest-typings/src/v1/users/UsersPresenceParamsGET.ts index 9fcd9f49b9fd3..d35a98462c2ad 100644 --- a/packages/rest-typings/src/v1/users/UsersPresenceParamsGET.ts +++ b/packages/rest-typings/src/v1/users/UsersPresenceParamsGET.ts @@ -10,7 +10,8 @@ const UsersPresenceParamsGetSchema = { properties: { from: { type: 'string', nullable: true }, ids: { - anyOf: [{ type: 'string' }, { type: 'array', items: { type: 'string' } }], + type: ['string', 'array'], + items: { type: 'string' }, }, }, additionalProperties: false, From d7bf6f39a9401fd2726024e7d18968cb8a4e23f8 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Thu, 14 May 2026 22:51:08 +0200 Subject: [PATCH 16/69] fix: ensures the translateMessage Meteor method validates access and type (#40539) Co-authored-by: Julio Araujo --- .changeset/neat-trams-juggle.md | 5 ++ .../server/methods/translateMessage.ts | 21 ++++- .../tests/end-to-end/api/autotranslate.ts | 90 ++++++++++++++++++- 3 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 .changeset/neat-trams-juggle.md diff --git a/.changeset/neat-trams-juggle.md b/.changeset/neat-trams-juggle.md new file mode 100644 index 0000000000000..56f327f68cc0c --- /dev/null +++ b/.changeset/neat-trams-juggle.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Ensures the Meteor method for translateMessage validates access and types diff --git a/apps/meteor/app/autotranslate/server/methods/translateMessage.ts b/apps/meteor/app/autotranslate/server/methods/translateMessage.ts index c9d2cc43996be..673f8dcf153e7 100644 --- a/apps/meteor/app/autotranslate/server/methods/translateMessage.ts +++ b/apps/meteor/app/autotranslate/server/methods/translateMessage.ts @@ -1,7 +1,10 @@ import type { IMessage } from '@rocket.chat/core-typings'; import type { ServerMethods } from '@rocket.chat/ddp-client'; +import { Messages, Rooms } from '@rocket.chat/models'; +import { check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; +import { canAccessRoomAsync } from '../../../authorization/server'; import { translateMessage } from '../functions/translateMessage'; declare module '@rocket.chat/ddp-client' { @@ -13,6 +16,22 @@ declare module '@rocket.chat/ddp-client' { Meteor.methods({ async 'autoTranslate.translateMessage'(message, targetLanguage) { - return translateMessage(targetLanguage, message); + const userId = Meteor.userId(); + if (!userId) { + throw new Meteor.Error('error-invalid-user', 'Invalid user', { + method: 'autoTranslate.translateMessage', + }); + } + check(message?._id, String); + check(targetLanguage, String); + const msg = await Messages.findOneById(message._id); + if (!msg) { + throw new Meteor.Error('error-message-not-found', 'Message not found'); + } + const room = await Rooms.findOneById(msg.rid); + if (!room || !(await canAccessRoomAsync(room, { _id: userId }))) { + throw new Meteor.Error('error-not-allowed', 'Not allowed'); + } + return translateMessage(targetLanguage, msg); }, }); diff --git a/apps/meteor/tests/end-to-end/api/autotranslate.ts b/apps/meteor/tests/end-to-end/api/autotranslate.ts index 3b5e03e8016f5..aa133665486c6 100644 --- a/apps/meteor/tests/end-to-end/api/autotranslate.ts +++ b/apps/meteor/tests/end-to-end/api/autotranslate.ts @@ -3,7 +3,7 @@ import type { IMessage, IRoom, IUser } from '@rocket.chat/core-typings'; import { expect } from 'chai'; import { before, describe, after, it } from 'mocha'; -import { getCredentials, api, request, credentials } from '../../data/api-data'; +import { getCredentials, api, request, credentials, methodCall } from '../../data/api-data'; import { sendSimpleMessage } from '../../data/chat.helper'; import { updatePermission, updateSetting } from '../../data/permissions.helper'; import { createRoom, deleteRoom } from '../../data/rooms.helper'; @@ -376,6 +376,94 @@ describe('AutoTranslate', () => { }); }); + describe('[autoTranslate.translateMessage method]', () => { + let userA: TestUser; + let userB: TestUser; + let credA: Credentials; + let credB: Credentials; + let privateRoom: IRoom; + let privateMessage: IMessage; + + before(async () => { + await updateSetting('AutoTranslate_Enabled', true); + + userA = await createUser(); + userB = await createUser(); + + credA = await login(userA.username, password); + credB = await login(userB.username, password); + + privateRoom = ( + await createRoom({ + type: 'p', + name: `test-autotranslate-method-${Date.now()}`, + credentials: credA, + }) + ).body.group; + + const msgRes = await sendSimpleMessage({ + roomId: privateRoom._id, + text: 'Isso é um teste', + userCredentials: credA, + }); + privateMessage = msgRes.body.message; + }); + + after(async () => { + await Promise.all([ + updateSetting('AutoTranslate_Enabled', false), + deleteUser(userA), + deleteUser(userB), + deleteRoom({ type: 'p', roomId: privateRoom._id }), + ]); + }); + + it('should fail when messageId is not a string', (done) => { + void request + .post(methodCall('autoTranslate.translateMessage')) + .set(credA) + .send({ + message: JSON.stringify({ + msg: 'method', + id: 'id', + method: 'autoTranslate.translateMessage', + params: [{ _id: { $gt: '' } }, 'en'], + }), + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.a.property('success', false); + const parsedBody = JSON.parse(res.body.message); + expect(parsedBody).to.have.a.property('error'); + }) + .end(done); + }); + + it('should return error-not-allowed when the caller is not a member of the room', (done) => { + void request + .post(methodCall('autoTranslate.translateMessage')) + .set(credB) + .send({ + message: JSON.stringify({ + msg: 'method', + id: 'id', + method: 'autoTranslate.translateMessage', + params: [{ _id: privateMessage._id }, 'en'], + }), + }) + .expect('Content-Type', 'application/json') + .expect(400) + .expect((res) => { + expect(res.body).to.have.a.property('success', false); + const parsedBody = JSON.parse(res.body.message); + expect(parsedBody).to.have.a.property('error'); + expect(parsedBody.error).to.have.a.property('error', 'error-not-allowed'); + }) + .end(done); + }); + }); + describe('Autoenable setting', () => { let userA: TestUser; let userB: TestUser; From ff254bf5ce40aad3ca886023a7c26db1ee8bf813 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 01:29:27 +0200 Subject: [PATCH 17/69] fix: add permission check to the `autotransate.translateMessage` endpoint (#40547) Co-authored-by: Julio Araujo --- .changeset/shaggy-kiwis-burn.md | 5 ++ .../meteor/app/api/server/v1/autotranslate.ts | 10 +++- .../tests/end-to-end/api/autotranslate.ts | 58 +++++++++++++++++++ 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 .changeset/shaggy-kiwis-burn.md diff --git a/.changeset/shaggy-kiwis-burn.md b/.changeset/shaggy-kiwis-burn.md new file mode 100644 index 0000000000000..6a5834f65d4cf --- /dev/null +++ b/.changeset/shaggy-kiwis-burn.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Ensures the autotranslate.translateMessage endpoint checks for room access diff --git a/apps/meteor/app/api/server/v1/autotranslate.ts b/apps/meteor/app/api/server/v1/autotranslate.ts index 4d9c734daaae1..b8cdeebe32260 100644 --- a/apps/meteor/app/api/server/v1/autotranslate.ts +++ b/apps/meteor/app/api/server/v1/autotranslate.ts @@ -1,13 +1,15 @@ import type { IMessage, ISupportedLanguage } from '@rocket.chat/core-typings'; -import { Messages } from '@rocket.chat/models'; +import { Messages, Rooms } from '@rocket.chat/models'; import { ajv, validateUnauthorizedErrorResponse, validateBadRequestErrorResponse, + validateForbiddenErrorResponse, isAutotranslateSaveSettingsParamsPOST, isAutotranslateGetSupportedLanguagesParamsGET, } from '@rocket.chat/rest-typings'; +import { canAccessRoomAsync } from '../../../authorization/server'; import { getSupportedLanguages } from '../../../autotranslate/server/functions/getSupportedLanguages'; import { saveAutoTranslateSettings } from '../../../autotranslate/server/functions/saveSettings'; import { translateMessage } from '../../../autotranslate/server/functions/translateMessage'; @@ -124,6 +126,7 @@ const autotranslateEndpoints = API.v1 }), 400: validateBadRequestErrorResponse, 401: validateUnauthorizedErrorResponse, + 403: validateForbiddenErrorResponse, }, }, async function action() { @@ -139,6 +142,11 @@ const autotranslateEndpoints = API.v1 return API.v1.failure('Message not found.'); } + const room = await Rooms.findOneById(message.rid); + if (!room || !(await canAccessRoomAsync(room, { _id: this.userId }))) { + return API.v1.forbidden(); + } + const translatedMessage = await translateMessage(targetLanguage, message); if (!translatedMessage) { diff --git a/apps/meteor/tests/end-to-end/api/autotranslate.ts b/apps/meteor/tests/end-to-end/api/autotranslate.ts index aa133665486c6..4d6f65c67de80 100644 --- a/apps/meteor/tests/end-to-end/api/autotranslate.ts +++ b/apps/meteor/tests/end-to-end/api/autotranslate.ts @@ -374,6 +374,64 @@ describe('AutoTranslate', () => { }) .end(done); }); + + describe('room access check', () => { + let userA: TestUser; + let userB: TestUser; + let credA: Credentials; + let credB: Credentials; + let privateRoom: IRoom; + let privateMessage: IMessage; + + before(async () => { + await updateSetting('AutoTranslate_Enabled', true); + + userA = await createUser(); + userB = await createUser(); + + credA = await login(userA.username, password); + credB = await login(userB.username, password); + + privateRoom = ( + await createRoom({ + type: 'p', + name: `test-autotranslate-access-${Date.now()}`, + credentials: credA, + }) + ).body.group; + + const msgRes = await sendSimpleMessage({ + roomId: privateRoom._id, + text: 'Isso é um teste', + userCredentials: credA, + }); + privateMessage = msgRes.body.message; + }); + + after(async () => { + await Promise.all([ + updateSetting('AutoTranslate_Enabled', false), + deleteUser(userA), + deleteUser(userB), + deleteRoom({ type: 'p', roomId: privateRoom._id }), + ]); + }); + + it('should return 403 forbidden when the user is not a member of the room', (done) => { + void request + .post(api('autotranslate.translateMessage')) + .set(credB) + .send({ + messageId: privateMessage._id, + }) + .expect('Content-Type', 'application/json') + .expect(403) + .expect((res) => { + expect(res.body).to.have.a.property('success', false); + }) + .end(done); + }); + }); }); describe('[autoTranslate.translateMessage method]', () => { From 3a3f0e1103bd0b8aaf93c16300ed664aed7a67a1 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 20:55:04 +0200 Subject: [PATCH 18/69] fix: clean up login tokens in users.deactivateidle (#40559) Co-authored-by: Julio Araujo --- .changeset/good-rules-lie.md | 7 ++++++ apps/meteor/app/api/server/v1/users.ts | 13 ++++++++++- apps/meteor/tests/end-to-end/api/users.ts | 23 +++++++++++++++++++ .../model-typings/src/models/IUsersModel.ts | 1 + packages/models/src/models/Users.ts | 16 ++++++++++++- 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 .changeset/good-rules-lie.md diff --git a/.changeset/good-rules-lie.md b/.changeset/good-rules-lie.md new file mode 100644 index 0000000000000..75542e75aa078 --- /dev/null +++ b/.changeset/good-rules-lie.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/model-typings': patch +'@rocket.chat/models': patch +'@rocket.chat/meteor': patch +--- + +Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index c2d5cf6841829..899a6f9de7277 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -548,9 +548,20 @@ API.v1.post( const lastLoggedIn = new Date(); lastLoggedIn.setDate(lastLoggedIn.getDate() - daysIdle); - // since we're deactiving users that are not logged in, there is no need to send data through WS + const ids = await Users.findActiveNotLoggedInAfterWithRole(lastLoggedIn, role, { projection: { _id: 1 } }) + .map(({ _id }: { _id: string }) => _id) + .toArray(); + const { modifiedCount: count } = await Users.setActiveNotLoggedInAfterWithRole(lastLoggedIn, role, false); + ids.forEach((_id) => { + void notifyOnUserChange({ + clientAction: 'updated', + id: _id, + diff: { 'services.resume.loginTokens': [], 'active': false }, + }); + }); + return API.v1.success({ count, }); diff --git a/apps/meteor/tests/end-to-end/api/users.ts b/apps/meteor/tests/end-to-end/api/users.ts index 348d3643a7292..c8b87a1df9d3b 100644 --- a/apps/meteor/tests/end-to-end/api/users.ts +++ b/apps/meteor/tests/end-to-end/api/users.ts @@ -4812,6 +4812,29 @@ describe('[Users]', () => { expect(res.body).to.have.property('success', false); }); }); + + it('should revoke login tokens of deactivated idle users', async () => { + const idleUser = await createUser(); + await request.post(api('roles.addUserToRole')).set(credentials).send({ roleId: testRoleId, username: idleUser.username }).expect(200); + + const idleUserCredentials = await login(idleUser.username, password); + await request.get(api('me')).set(idleUserCredentials).expect(200); + + await updatePermission('edit-other-user-active-status', ['admin']); + await request + .post(api('users.deactivateIdle')) + .set(credentials) + .send({ daysIdle: 0, role: testRoleId }) + .expect(200) + .expect((res: Response) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('count').that.is.greaterThan(0); + }); + + await request.get(api('me')).set(idleUserCredentials).expect(401); + + await deleteUser(idleUser); + }); }); describe('[/users.requestDataDownload]', () => { diff --git a/packages/model-typings/src/models/IUsersModel.ts b/packages/model-typings/src/models/IUsersModel.ts index 2e8f84e647876..fcb82c2c1ae0d 100644 --- a/packages/model-typings/src/models/IUsersModel.ts +++ b/packages/model-typings/src/models/IUsersModel.ts @@ -393,6 +393,7 @@ export interface IUsersModel extends IBaseModel { unsetAvatarData(userId: string): Promise; setUserActive(userId: string, active: boolean): Promise; setActiveNotLoggedInAfterWithRole(latestLastLoginDate: Date, role?: string, active?: boolean): Promise; + findActiveNotLoggedInAfterWithRole(latestLastLoginDate: Date, role?: string, options?: FindOptions): FindCursor; unsetRequirePasswordChange(userId: string): Promise; resetPasswordAndSetRequirePasswordChange( userId: string, diff --git a/packages/models/src/models/Users.ts b/packages/models/src/models/Users.ts index 76cd72d921a9a..27a2fd3461152 100644 --- a/packages/models/src/models/Users.ts +++ b/packages/models/src/models/Users.ts @@ -2950,10 +2950,11 @@ export class UsersRaw extends BaseRaw> implements IU roles: role, }; - const update = { + const update: UpdateFilter = { $set: { active, ...(!active && { inactiveReason: 'idle_too_long' as const }), + ...(!active && { 'services.resume.loginTokens': [] }), }, ...(active && { $unset: { inactiveReason: 1 as const } }), }; @@ -2961,6 +2962,19 @@ export class UsersRaw extends BaseRaw> implements IU return this.updateMany(query, update); } + findActiveNotLoggedInAfterWithRole(latestLastLoginDate: Date, role: IRole['_id'] = 'user', options: FindOptions = {}) { + const neverActive = { lastLogin: { $exists: false }, createdAt: { $lte: latestLastLoginDate } }; + const idleTooLong = { lastLogin: { $lte: latestLastLoginDate } }; + + const query = { + $or: [neverActive, idleTooLong], + active: true, + roles: role, + }; + + return this.find(query, options); + } + unsetRequirePasswordChange(_id: IUser['_id']) { const update: UpdateFilter = { $unset: { From bc2eb5b119d14e96a09fd65d966be310711d295e Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 00:29:40 +0200 Subject: [PATCH 19/69] chore(deps): bump path-to-regexp, esbuild, and tar-fs (#40571) Co-authored-by: Julio Araujo --- package.json | 5 +- yarn.lock | 287 +++------------------------------------------------ 2 files changed, 17 insertions(+), 275 deletions(-) diff --git a/package.json b/package.json index 92a35fe43e927..c140b1ab64d9c 100644 --- a/package.json +++ b/package.json @@ -46,15 +46,18 @@ "jws@npm:^3.2.2": "3.2.3", "jws@npm:^4.0.0": "4.0.1", "tar-fs@npm:^2.0.0": "2.1.4", - "tar-fs@npm:^3.0.6": "3.0.10", + "tar-fs@npm:^3.0.6": "3.1.2", + "express/path-to-regexp": "0.1.13", "brace-expansion@npm:^2.0.1": "^2.0.3", "brace-expansion@npm:^5.0.2": "^5.0.5", "@meteorjs/crypto-browserify/pbkdf2": "3.1.3", + "@storybook/core/esbuild": "^0.27.0", "browserify-sign/elliptic": "6.6.1", "create-ecdh/elliptic": "6.6.1", "parse-asn1/pbkdf2": "3.1.3", "cross-spawn": "7.0.6", "drachtio-srf": "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch", + "ajv/fast-uri": "3.1.2", "fast-xml-parser@npm:5.3.6": "^5.5.7", "is-svg/fast-xml-parser": "5.5.11", "webdav/fast-xml-parser": "5.5.11", diff --git a/yarn.lock b/yarn.lock index 8a3f5b9c5cfff..8d6a2b4c4fe9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3475,13 +3475,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/aix-ppc64@npm:0.25.5" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/aix-ppc64@npm:0.27.7" @@ -3489,13 +3482,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-arm64@npm:0.25.5" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/android-arm64@npm:0.27.7" @@ -3503,13 +3489,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-arm@npm:0.25.5" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/android-arm@npm:0.27.7" @@ -3517,13 +3496,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/android-x64@npm:0.25.5" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/android-x64@npm:0.27.7" @@ -3531,13 +3503,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/darwin-arm64@npm:0.25.5" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/darwin-arm64@npm:0.27.7" @@ -3545,13 +3510,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/darwin-x64@npm:0.25.5" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/darwin-x64@npm:0.27.7" @@ -3559,13 +3517,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/freebsd-arm64@npm:0.25.5" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/freebsd-arm64@npm:0.27.7" @@ -3573,13 +3524,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/freebsd-x64@npm:0.25.5" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/freebsd-x64@npm:0.27.7" @@ -3587,13 +3531,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-arm64@npm:0.25.5" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-arm64@npm:0.27.7" @@ -3601,13 +3538,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-arm@npm:0.25.5" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-arm@npm:0.27.7" @@ -3615,13 +3545,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-ia32@npm:0.25.5" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-ia32@npm:0.27.7" @@ -3629,13 +3552,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-loong64@npm:0.25.5" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-loong64@npm:0.27.7" @@ -3643,13 +3559,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-mips64el@npm:0.25.5" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-mips64el@npm:0.27.7" @@ -3657,13 +3566,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-ppc64@npm:0.25.5" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-ppc64@npm:0.27.7" @@ -3671,13 +3573,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-riscv64@npm:0.25.5" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-riscv64@npm:0.27.7" @@ -3685,13 +3580,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-s390x@npm:0.25.5" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-s390x@npm:0.27.7" @@ -3699,13 +3587,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/linux-x64@npm:0.25.5" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/linux-x64@npm:0.27.7" @@ -3713,13 +3594,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/netbsd-arm64@npm:0.25.5" - conditions: os=netbsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/netbsd-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/netbsd-arm64@npm:0.27.7" @@ -3727,13 +3601,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/netbsd-x64@npm:0.25.5" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/netbsd-x64@npm:0.27.7" @@ -3741,13 +3608,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/openbsd-arm64@npm:0.25.5" - conditions: os=openbsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/openbsd-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/openbsd-arm64@npm:0.27.7" @@ -3755,13 +3615,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/openbsd-x64@npm:0.25.5" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/openbsd-x64@npm:0.27.7" @@ -3776,13 +3629,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/sunos-x64@npm:0.25.5" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/sunos-x64@npm:0.27.7" @@ -3790,13 +3636,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-arm64@npm:0.25.5" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/win32-arm64@npm:0.27.7" @@ -3804,13 +3643,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-ia32@npm:0.25.5" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/win32-ia32@npm:0.27.7" @@ -3818,13 +3650,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.25.5": - version: 0.25.5 - resolution: "@esbuild/win32-x64@npm:0.25.5" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.27.7": version: 0.27.7 resolution: "@esbuild/win32-x64@npm:0.27.7" @@ -21329,93 +21154,7 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0": - version: 0.25.5 - resolution: "esbuild@npm:0.25.5" - dependencies: - "@esbuild/aix-ppc64": "npm:0.25.5" - "@esbuild/android-arm": "npm:0.25.5" - "@esbuild/android-arm64": "npm:0.25.5" - "@esbuild/android-x64": "npm:0.25.5" - "@esbuild/darwin-arm64": "npm:0.25.5" - "@esbuild/darwin-x64": "npm:0.25.5" - "@esbuild/freebsd-arm64": "npm:0.25.5" - "@esbuild/freebsd-x64": "npm:0.25.5" - "@esbuild/linux-arm": "npm:0.25.5" - "@esbuild/linux-arm64": "npm:0.25.5" - "@esbuild/linux-ia32": "npm:0.25.5" - "@esbuild/linux-loong64": "npm:0.25.5" - "@esbuild/linux-mips64el": "npm:0.25.5" - "@esbuild/linux-ppc64": "npm:0.25.5" - "@esbuild/linux-riscv64": "npm:0.25.5" - "@esbuild/linux-s390x": "npm:0.25.5" - "@esbuild/linux-x64": "npm:0.25.5" - "@esbuild/netbsd-arm64": "npm:0.25.5" - "@esbuild/netbsd-x64": "npm:0.25.5" - "@esbuild/openbsd-arm64": "npm:0.25.5" - "@esbuild/openbsd-x64": "npm:0.25.5" - "@esbuild/sunos-x64": "npm:0.25.5" - "@esbuild/win32-arm64": "npm:0.25.5" - "@esbuild/win32-ia32": "npm:0.25.5" - "@esbuild/win32-x64": "npm:0.25.5" - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-arm64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-arm64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 10/0fa4c3b42c6ddf1a008e75a4bb3dcab08ce22ac0b31dd59dc01f7fe8e21380bfaec07a2fe3730a7cf430da5a30142d016714b358666325a4733547afa42be405 - languageName: node - linkType: hard - -"esbuild@npm:~0.27.0, esbuild@npm:~0.27.7": +"esbuild@npm:^0.27.0, esbuild@npm:~0.27.0, esbuild@npm:~0.27.7": version: 0.27.7 resolution: "esbuild@npm:0.27.7" dependencies: @@ -22415,10 +22154,10 @@ __metadata: languageName: node linkType: hard -"fast-uri@npm:^3.0.1": - version: 3.0.3 - resolution: "fast-uri@npm:3.0.3" - checksum: 10/92487c75848b03edc45517fca0148287d342c30818ce43d556391db774d8e01644fb6964315a3336eec5a90f301b218b21f71fb9b2528ba25757435a20392c95 +"fast-uri@npm:3.1.2": + version: 3.1.2 + resolution: "fast-uri@npm:3.1.2" + checksum: 10/1dff04865b2a38d3e0659deadfbf72efdf83a776bfbf9667e4aa9e5a3ec31bc341cda9622136b32b7652a857c8ba11896794186e8f876f8b2b72731fce8622f6 languageName: node linkType: hard @@ -30216,10 +29955,10 @@ __metadata: languageName: node linkType: hard -"path-to-regexp@npm:0.1.12, path-to-regexp@npm:~0.1.12": - version: 0.1.12 - resolution: "path-to-regexp@npm:0.1.12" - checksum: 10/2e30f6a0144679c1f95c98e166b96e6acd1e72be9417830fefc8de7ac1992147eb9a4c7acaa59119fb1b3c34eec393b2129ef27e24b2054a3906fc4fb0d1398e +"path-to-regexp@npm:0.1.13": + version: 0.1.13 + resolution: "path-to-regexp@npm:0.1.13" + checksum: 10/f1e4bdedc4fd41a3b8dd76e8b2e1183105348c6b205badc072581ca63dc6aa7976a8a67feaffcf0e505f51ac12cb1a2de7f3fef3e9085b6849e76232d73ddcba languageName: node linkType: hard @@ -35447,9 +35186,9 @@ __metadata: languageName: node linkType: hard -"tar-fs@npm:3.0.10": - version: 3.0.10 - resolution: "tar-fs@npm:3.0.10" +"tar-fs@npm:3.1.2": + version: 3.1.2 + resolution: "tar-fs@npm:3.1.2" dependencies: bare-fs: "npm:^4.0.1" bare-path: "npm:^3.0.0" @@ -35460,7 +35199,7 @@ __metadata: optional: true bare-path: optional: true - checksum: 10/0a18701d015ed3db2762db716d4836c0f253d2f8a6fe5e28ded05e1f4ca4f9f29729b7eca1a0d00a5a1629f26a8618c3cbb4a4816e73e570cf381728112117b9 + checksum: 10/b358fb7061eebb42bfa6f122cf62d1bdd40dc619117863f3b59eeaa4f880dc03707014905bdb592e77176703d9045956d1ba27adda4458805f9f7cbf62015cbd languageName: node linkType: hard From 65eadbd32230529545e1128847057a106032029f Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 00:32:51 +0200 Subject: [PATCH 20/69] chore(deps): bump @babel-related packages (#40572) Co-authored-by: Julio Araujo --- apps/meteor/package.json | 6 +- packages/livechat/package.json | 8 +- yarn.lock | 353 ++++++++++++++++----------------- 3 files changed, 181 insertions(+), 186 deletions(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 00f42559f3682..00e3a60ec9ae9 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -68,9 +68,9 @@ "@aws-sdk/client-s3": "^3.862.0", "@aws-sdk/lib-storage": "^3.862.0", "@aws-sdk/s3-request-presigner": "^3.862.0", - "@babel/core": "~7.28.6", - "@babel/preset-env": "~7.28.6", - "@babel/runtime": "~7.28.6", + "@babel/core": "~7.29.0", + "@babel/preset-env": "~7.29.5", + "@babel/runtime": "~7.29.2", "@bugsnag/js": "~7.20.2", "@bugsnag/plugin-react": "~7.19.0", "@datastructures-js/priority-queue": "^6.3.5", diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 74a8f286b6eb6..034881a809d9f 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -52,10 +52,10 @@ "whatwg-fetch": "^3.6.20" }, "devDependencies": { - "@babel/core": "~7.28.6", - "@babel/preset-env": "~7.28.6", - "@babel/preset-react": "~7.27.1", - "@babel/preset-typescript": "~7.27.1", + "@babel/core": "~7.29.0", + "@babel/preset-env": "~7.29.5", + "@babel/preset-react": "~7.28.5", + "@babel/preset-typescript": "~7.28.5", "@rocket.chat/core-typings": "workspace:^", "@rocket.chat/ddp-client": "workspace:^", "@rocket.chat/fuselage-hooks": "^0.41.0", diff --git a/yarn.lock b/yarn.lock index 8d6a2b4c4fe9b..1496aa14027bc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -827,13 +827,6 @@ __metadata: languageName: node linkType: hard -"@babel/compat-data@npm:^7.27.7": - version: 7.28.4 - resolution: "@babel/compat-data@npm:7.28.4" - checksum: 10/95b7864e6b210c84c069743966da448c0cb50015a4de5e18dd755776a0b5e53c4653e74f26700aed8de922eaa3b8844fc5fc5b29bc64830249d2abe914aec832 - languageName: node - linkType: hard - "@babel/compat-data@npm:^7.28.6": version: 7.28.6 resolution: "@babel/compat-data@npm:7.28.6" @@ -841,6 +834,13 @@ __metadata: languageName: node linkType: hard +"@babel/compat-data@npm:^7.29.3": + version: 7.29.3 + resolution: "@babel/compat-data@npm:7.29.3" + checksum: 10/3c29661756a7c1cbc5248a7bdc657c0cb49f350e3157040c20486759f1f50a08a0b385fd7d813df50b96cd6fad5896d30ba6abab7602641bd1410ed346c1812f + languageName: node + linkType: hard + "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.18.9, @babel/core@npm:^7.22.5, @babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4, @babel/core@npm:^7.7.5": version: 7.27.4 resolution: "@babel/core@npm:7.27.4" @@ -864,7 +864,7 @@ __metadata: languageName: node linkType: hard -"@babel/core@npm:^7.24.4": +"@babel/core@npm:^7.24.4, @babel/core@npm:~7.29.0": version: 7.29.0 resolution: "@babel/core@npm:7.29.0" dependencies: @@ -937,7 +937,7 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.27.1, @babel/generator@npm:^7.28.3": +"@babel/generator@npm:^7.25.7, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.27.1": version: 7.28.3 resolution: "@babel/generator@npm:7.28.3" dependencies: @@ -1037,23 +1037,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-create-class-features-plugin@npm:^7.27.1": - version: 7.28.3 - resolution: "@babel/helper-create-class-features-plugin@npm:7.28.3" - dependencies: - "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-member-expression-to-functions": "npm:^7.27.1" - "@babel/helper-optimise-call-expression": "npm:^7.27.1" - "@babel/helper-replace-supers": "npm:^7.27.1" - "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - semver: "npm:^6.3.1" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/32d01bdd601b4d129b1d510058a19644abc764badcc543adaec9e71443e874ef252783cceb2809645bdf0e92b07f206fd439c75a2a48cf702c627aba7f3ee34a - languageName: node - linkType: hard - "@babel/helper-create-class-features-plugin@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-create-class-features-plugin@npm:7.28.6" @@ -1110,18 +1093,18 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.5": - version: 0.6.5 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.5" +"@babel/helper-define-polyfill-provider@npm:^0.6.8": + version: 0.6.8 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.8" dependencies: - "@babel/helper-compilation-targets": "npm:^7.27.2" - "@babel/helper-plugin-utils": "npm:^7.27.1" - debug: "npm:^4.4.1" + "@babel/helper-compilation-targets": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" + debug: "npm:^4.4.3" lodash.debounce: "npm:^4.0.8" - resolve: "npm:^1.22.10" + resolve: "npm:^1.22.11" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/0bdd2d9654d2f650c33976caa1a2afac2c23cf07e83856acdb482423c7bf4542c499ca0bdc723f2961bb36883501f09e9f4fe061ba81c07996daacfba82a6f62 + checksum: 10/a6f9fbb82578464da35eec88c7f3e70bdd95237bfc1d3ebb9cf4536a86a577b7c6e587f9a6797b01ee08629599ee2bc6fdab39e99de505751a30d9b4877202ab languageName: node linkType: hard @@ -1185,19 +1168,6 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.28.3": - version: 7.28.3 - resolution: "@babel/helper-module-transforms@npm:7.28.3" - dependencies: - "@babel/helper-module-imports": "npm:^7.27.1" - "@babel/helper-validator-identifier": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.3" - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 10/598fdd8aa5b91f08542d0ba62a737847d0e752c8b95ae2566bc9d11d371856d6867d93e50db870fb836a6c44cfe481c189d8a2b35ca025a224f070624be9fa87 - languageName: node - linkType: hard - "@babel/helper-module-transforms@npm:^7.28.6": version: 7.28.6 resolution: "@babel/helper-module-transforms@npm:7.28.6" @@ -1375,7 +1345,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.28.3, @babel/parser@npm:^7.28.4": +"@babel/parser@npm:^7.25.7, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.27.1, @babel/parser@npm:^7.28.3": version: 7.28.4 resolution: "@babel/parser@npm:7.28.4" dependencies: @@ -1442,6 +1412,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@npm:^7.29.3": + version: 7.29.3 + resolution: "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@npm:7.29.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10/fd13198afc9b72c6a4e4868f1592fc8010f390e7601148a71d2d6111664c0242d6d5ff27d8eb77ca4c35ef47f8416daf5dbc8d46a498ac706d69c6b3a0988cd7 + languageName: node + linkType: hard + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": version: 7.27.1 resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" @@ -1685,6 +1667,17 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-syntax-typescript@npm:^7.28.6": + version: 7.28.6 + resolution: "@babel/plugin-syntax-typescript@npm:7.28.6" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.28.6" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/5c55f9c63bd36cf3d7e8db892294c8f85000f9c1526c3a1cc310d47d1e174f5c6f6605e5cc902c4636d885faba7a9f3d5e5edc6b35e4f3b1fd4c2d58d0304fa5 + languageName: node + linkType: hard + "@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": version: 7.18.6 resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" @@ -1708,16 +1701,16 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-async-generator-functions@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-async-generator-functions@npm:7.28.6" +"@babel/plugin-transform-async-generator-functions@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.29.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-remap-async-to-generator": "npm:^7.27.1" - "@babel/traverse": "npm:^7.28.6" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/b3c9e62a90808e8ad0e1608a7fd7169a5bfba3b54f0d8590495e7b0d95b25e882f45062f490e4ab6823bb9758da3619d645c9a536ae77e62cb9abe38400a8c08 + checksum: 10/e2c064a5eb212cbdf14f7c0113e069b845ca0f0ba431c1cc04607d3fc4f3bf1ed70f5c375fe7c61338a45db88bc1a79d270c8d633ce12256e1fce3666c1e6b93 languageName: node linkType: hard @@ -1843,15 +1836,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.28.6" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.29.0" dependencies: "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/3f2e2b85199adfdc3297983412c2ecdacc0004bc5ac3263d29909219b8c5afa2ca49e3b6efc11ce67034d5780eef27882a94873444cf27d841d7fa7f01d7dcff + checksum: 10/7fa7b773259a578c9e01c80946f75ecc074520064aa7a87a65db06c7df70766e2fa6be78cda55fa9418a14e30b2b9d595484a46db48074d495d9f877a4276065 languageName: node linkType: hard @@ -2005,17 +1998,17 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-modules-systemjs@npm:^7.28.5": - version: 7.28.5 - resolution: "@babel/plugin-transform-modules-systemjs@npm:7.28.5" +"@babel/plugin-transform-modules-systemjs@npm:^7.29.4": + version: 7.29.4 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.29.4" dependencies: - "@babel/helper-module-transforms": "npm:^7.28.3" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-module-transforms": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-identifier": "npm:^7.28.5" - "@babel/traverse": "npm:^7.28.5" + "@babel/traverse": "npm:^7.29.0" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/1b91b4848845eaf6e21663d97a2a6c896553b127deaf3c2e9a2a4f041249277d13ebf71fd42d0ecbc4385e9f76093eff592fe0da0dcf1401b3f38c1615d8c539 + checksum: 10/79269e6ec8ec831bb63bf1c7cc1a980e28da785e92b36d42612f0139e4044499b99aa109fca849e1a156c092aabf6c24d145f4cabf2ac9ea84ef468852fe4c03 languageName: node linkType: hard @@ -2031,15 +2024,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": - version: 7.27.1 - resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.29.0" dependencies: - "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-regexp-features-plugin": "npm:^7.28.5" + "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/a711c92d9753df26cefc1792481e5cbff4fe4f32b383d76b25e36fa865d8023b1b9aa6338cf18f5c0e864c71a7fbe8115e840872ccd61a914d9953849c68de7d + checksum: 10/ed8c27699ca82a6c01cbfd39f3de16b90cfea4f8146a358057f76df290d308a66a8bd2e6734e6a87f68c18576e15d2d70548a84cd474d26fdf256c3f5ae44d8c languageName: node linkType: hard @@ -2185,7 +2178,7 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-react-display-name@npm:^7.27.1": +"@babel/plugin-transform-react-display-name@npm:^7.27.1, @babel/plugin-transform-react-display-name@npm:^7.28.0": version: 7.28.0 resolution: "@babel/plugin-transform-react-display-name@npm:7.28.0" dependencies: @@ -2234,14 +2227,14 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-regenerator@npm:^7.28.6": - version: 7.28.6 - resolution: "@babel/plugin-transform-regenerator@npm:7.28.6" +"@babel/plugin-transform-regenerator@npm:^7.29.0": + version: 7.29.0 + resolution: "@babel/plugin-transform-regenerator@npm:7.29.0" dependencies: "@babel/helper-plugin-utils": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/09028ed8ed7f5e3879cbfdcf92a8a730c13b15ce042ef86b29b31cca5a250da641f777dfaf81ab1706fb8cf9252c177f02e882fc7465d3a10b9f385c0bb2ea16 + checksum: 10/c8fa9da74371568c5d34fd7d53de018752550cb10334040ca59e41f34b27f127974bdc5b4d1a1a8e8f3ebcf3cb7f650aa3f2df3b7bf1b7edf67c04493b9e3cb8 languageName: node linkType: hard @@ -2324,18 +2317,18 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-typescript@npm:^7.27.1": - version: 7.28.0 - resolution: "@babel/plugin-transform-typescript@npm:7.28.0" +"@babel/plugin-transform-typescript@npm:^7.28.5": + version: 7.28.6 + resolution: "@babel/plugin-transform-typescript@npm:7.28.6" dependencies: "@babel/helper-annotate-as-pure": "npm:^7.27.3" - "@babel/helper-create-class-features-plugin": "npm:^7.27.1" - "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.28.6" + "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" - "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.28.6" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/5ad7aae0e900974585c7e0d0ec08bde8cd70a31a9e79f5c9ddadb4f8f6207cb86a5882181c2b262b0fe27558e9f9743306259911bc1445635ec58dd96613cef4 + checksum: 10/a0bccc531fa8710a45b0b593140273741e0e4a0721b1ef6ef9dfefae0bbe61528440d65aab7936929551fd76793272257d74f60cf66891352f793294930a4b67 languageName: node linkType: hard @@ -2386,17 +2379,18 @@ __metadata: languageName: node linkType: hard -"@babel/preset-env@npm:~7.28.6": - version: 7.28.6 - resolution: "@babel/preset-env@npm:7.28.6" +"@babel/preset-env@npm:~7.29.5": + version: 7.29.5 + resolution: "@babel/preset-env@npm:7.29.5" dependencies: - "@babel/compat-data": "npm:^7.28.6" + "@babel/compat-data": "npm:^7.29.3" "@babel/helper-compilation-targets": "npm:^7.28.6" "@babel/helper-plugin-utils": "npm:^7.28.6" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.28.5" "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "npm:^7.29.3" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.28.6" "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" @@ -2404,7 +2398,7 @@ __metadata: "@babel/plugin-syntax-import-attributes": "npm:^7.28.6" "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" - "@babel/plugin-transform-async-generator-functions": "npm:^7.28.6" + "@babel/plugin-transform-async-generator-functions": "npm:^7.29.0" "@babel/plugin-transform-async-to-generator": "npm:^7.28.6" "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" "@babel/plugin-transform-block-scoping": "npm:^7.28.6" @@ -2415,7 +2409,7 @@ __metadata: "@babel/plugin-transform-destructuring": "npm:^7.28.5" "@babel/plugin-transform-dotall-regex": "npm:^7.28.6" "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.28.6" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" "@babel/plugin-transform-explicit-resource-management": "npm:^7.28.6" "@babel/plugin-transform-exponentiation-operator": "npm:^7.28.6" @@ -2428,9 +2422,9 @@ __metadata: "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" "@babel/plugin-transform-modules-amd": "npm:^7.27.1" "@babel/plugin-transform-modules-commonjs": "npm:^7.28.6" - "@babel/plugin-transform-modules-systemjs": "npm:^7.28.5" + "@babel/plugin-transform-modules-systemjs": "npm:^7.29.4" "@babel/plugin-transform-modules-umd": "npm:^7.27.1" - "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.29.0" "@babel/plugin-transform-new-target": "npm:^7.27.1" "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.28.6" "@babel/plugin-transform-numeric-separator": "npm:^7.28.6" @@ -2442,7 +2436,7 @@ __metadata: "@babel/plugin-transform-private-methods": "npm:^7.28.6" "@babel/plugin-transform-private-property-in-object": "npm:^7.28.6" "@babel/plugin-transform-property-literals": "npm:^7.27.1" - "@babel/plugin-transform-regenerator": "npm:^7.28.6" + "@babel/plugin-transform-regenerator": "npm:^7.29.0" "@babel/plugin-transform-regexp-modifiers": "npm:^7.28.6" "@babel/plugin-transform-reserved-words": "npm:^7.27.1" "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" @@ -2455,14 +2449,14 @@ __metadata: "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" "@babel/plugin-transform-unicode-sets-regex": "npm:^7.28.6" "@babel/preset-modules": "npm:0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2: "npm:^0.4.14" - babel-plugin-polyfill-corejs3: "npm:^0.13.0" - babel-plugin-polyfill-regenerator: "npm:^0.6.5" - core-js-compat: "npm:^3.43.0" + babel-plugin-polyfill-corejs2: "npm:^0.4.15" + babel-plugin-polyfill-corejs3: "npm:^0.14.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.6" + core-js-compat: "npm:^3.48.0" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/ee1b96dec8518436013c4a758003734842e9fed2a3af2013bee7a462289bae4e7bbce99733701164c28a93554be5a9a4c50818fa32335274d19e8b7d3dd53316 + checksum: 10/2e54630764b6650d81df5ce5a47fa260acd3695dc95a6b989b713bf6c0713fb320e3ae3f76f0c636bfda058ee5c582a3de7f5d58d691c68ca566129c7d3d0f0a languageName: node linkType: hard @@ -2495,18 +2489,34 @@ __metadata: languageName: node linkType: hard -"@babel/preset-typescript@npm:~7.27.1": - version: 7.27.1 - resolution: "@babel/preset-typescript@npm:7.27.1" +"@babel/preset-react@npm:~7.28.5": + version: 7.28.5 + resolution: "@babel/preset-react@npm:7.28.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-transform-react-display-name": "npm:^7.28.0" + "@babel/plugin-transform-react-jsx": "npm:^7.27.1" + "@babel/plugin-transform-react-jsx-development": "npm:^7.27.1" + "@babel/plugin-transform-react-pure-annotations": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10/c00d43b27790caddee7c4971b11b4bf479a761175433e2f168b3d7e1ac6ee36d4d929a76acc7f302e9bff3a5b26d02d37f0ad7ae6359e076e5baa862b00843b2 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:~7.28.5": + version: 7.28.5 + resolution: "@babel/preset-typescript@npm:7.28.5" dependencies: "@babel/helper-plugin-utils": "npm:^7.27.1" "@babel/helper-validator-option": "npm:^7.27.1" "@babel/plugin-syntax-jsx": "npm:^7.27.1" "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" - "@babel/plugin-transform-typescript": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.28.5" peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 10/9d8e75326b3c93fa016ba7aada652800fc77bc05fcc181888700a049935e8cf1284b549de18a5d62ef3591d02f097ea6de1111f7d71a991aaf36ba74657bd145 + checksum: 10/72c03e01c34906041b1813542761a283c52da1751e7ddf63191bc5fb2a0354eca30a00537c5a92951688bec3975bdc0e50ef4516b5e94cfd6d4cf947f2125bdc languageName: node linkType: hard @@ -2543,10 +2553,10 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:~7.28.6": - version: 7.28.6 - resolution: "@babel/runtime@npm:7.28.6" - checksum: 10/fbcd439cb74d4a681958eb064c509829e3f46d8a4bfaaf441baa81bb6733d1e680bccc676c813883d7741bcaada1d0d04b15aa320ef280b5734e2192b50decf9 +"@babel/runtime@npm:~7.29.2": + version: 7.29.2 + resolution: "@babel/runtime@npm:7.29.2" + checksum: 10/f55ba4052aa0255055b34371a145fbe69c29b37b49eaea14805b095bfb4153701486416e89392fd27ec8abafa53868be86e960b9f8f959fff91f2c8ac2a14b02 languageName: node linkType: hard @@ -2669,21 +2679,6 @@ __metadata: languageName: node linkType: hard -"@babel/traverse@npm:^7.28.3": - version: 7.28.4 - resolution: "@babel/traverse@npm:7.28.4" - dependencies: - "@babel/code-frame": "npm:^7.27.1" - "@babel/generator": "npm:^7.28.3" - "@babel/helper-globals": "npm:^7.28.0" - "@babel/parser": "npm:^7.28.4" - "@babel/template": "npm:^7.27.2" - "@babel/types": "npm:^7.28.4" - debug: "npm:^4.3.1" - checksum: 10/c3099364b7b1c36bcd111099195d4abeef16499e5defb1e56766b754e8b768c252e856ed9041665158aa1b31215fc6682632756803c8fa53405381ec08c4752b - languageName: node - linkType: hard - "@babel/traverse@npm:^7.28.5": version: 7.28.5 resolution: "@babel/traverse@npm:7.28.5" @@ -9435,10 +9430,10 @@ __metadata: version: 0.0.0-use.local resolution: "@rocket.chat/livechat@workspace:packages/livechat" dependencies: - "@babel/core": "npm:~7.28.6" - "@babel/preset-env": "npm:~7.28.6" - "@babel/preset-react": "npm:~7.27.1" - "@babel/preset-typescript": "npm:~7.27.1" + "@babel/core": "npm:~7.29.0" + "@babel/preset-env": "npm:~7.29.5" + "@babel/preset-react": "npm:~7.28.5" + "@babel/preset-typescript": "npm:~7.28.5" "@rocket.chat/core-typings": "workspace:^" "@rocket.chat/ddp-client": "workspace:^" "@rocket.chat/emitter": "npm:^0.32.0" @@ -9650,11 +9645,11 @@ __metadata: "@aws-sdk/lib-storage": "npm:^3.862.0" "@aws-sdk/s3-request-presigner": "npm:^3.862.0" "@axe-core/playwright": "npm:^4.10.2" - "@babel/core": "npm:~7.28.6" - "@babel/preset-env": "npm:~7.28.6" + "@babel/core": "npm:~7.29.0" + "@babel/preset-env": "npm:~7.29.5" "@babel/preset-react": "npm:~7.27.1" "@babel/register": "npm:~7.28.6" - "@babel/runtime": "npm:~7.28.6" + "@babel/runtime": "npm:~7.29.2" "@bugsnag/js": "npm:~7.20.2" "@bugsnag/plugin-react": "npm:~7.19.0" "@datastructures-js/priority-queue": "npm:^6.3.5" @@ -16901,39 +16896,39 @@ __metadata: languageName: node linkType: hard -"babel-plugin-polyfill-corejs2@npm:^0.4.14": - version: 0.4.14 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.14" +"babel-plugin-polyfill-corejs2@npm:^0.4.15": + version: 0.4.17 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.17" dependencies: - "@babel/compat-data": "npm:^7.27.7" - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/compat-data": "npm:^7.28.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.8" semver: "npm:^6.3.1" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/8ec00a1b821ccbfcc432630da66e98bc417f5301f4ce665269d50d245a18ad3ce8a8af2a007f28e3defcd555bb8ce65f16b0d4b6d131bd788e2b97d8b8953332 + checksum: 10/35796b7f960d2e90ae78e9eb60491550976b839bbb4ce4c060df822cce191e4b5d93f13f0e64c2ba3ffc6ab3d32d3ced3f84ec567cc141088a11fa5a1628265d languageName: node linkType: hard -"babel-plugin-polyfill-corejs3@npm:^0.13.0": - version: 0.13.0 - resolution: "babel-plugin-polyfill-corejs3@npm:0.13.0" +"babel-plugin-polyfill-corejs3@npm:^0.14.0": + version: 0.14.2 + resolution: "babel-plugin-polyfill-corejs3@npm:0.14.2" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" - core-js-compat: "npm:^3.43.0" + "@babel/helper-define-polyfill-provider": "npm:^0.6.8" + core-js-compat: "npm:^3.48.0" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/aa36f9a09521404dd0569a4cbd5f88aa4b9abff59508749abde5d09d66c746012fb94ed1e6e2c8be3710939a2a4c6293ee3be889125d7611c93e5897d9e5babd + checksum: 10/bb500bfec712eb5e8c9058dc299677a5325af7e09ebd725c89719f2f555eca3f2b1a8644137c8e67d7fc83d7be48a7189a1a385b61ed2cf63dbb64e79461b9ee languageName: node linkType: hard -"babel-plugin-polyfill-regenerator@npm:^0.6.5": - version: 0.6.5 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.5" +"babel-plugin-polyfill-regenerator@npm:^0.6.6": + version: 0.6.8 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.8" dependencies: - "@babel/helper-define-polyfill-provider": "npm:^0.6.5" + "@babel/helper-define-polyfill-provider": "npm:^0.6.8" peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 10/ed1932fa9a31e0752fd10ebf48ab9513a654987cab1182890839523cb898559d24ae0578fdc475d9f995390420e64eeaa4b0427045b56949dace3c725bc66dbb + checksum: 10/974464353d6f974e97673385aff616a913c0b76039eab8c5317a2d07c661e080f3dcc213e86f3eae40010172a27ab793cda7a290a8a899716f9a22df9b1d92d2 languageName: node linkType: hard @@ -17611,20 +17606,6 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.25.3": - version: 4.25.4 - resolution: "browserslist@npm:4.25.4" - dependencies: - caniuse-lite: "npm:^1.0.30001737" - electron-to-chromium: "npm:^1.5.211" - node-releases: "npm:^2.0.19" - update-browserslist-db: "npm:^1.1.3" - bin: - browserslist: cli.js - checksum: 10/6ee84526263204f66b4a19967d93f82f2a662c0cd951386e3859e29c6a4c10c32f2acf41940251f44a5daede56dbec91348d6153a1afab1fc052ecdb01d4adbc - languageName: node - linkType: hard - "browserslist@npm:^4.28.1, browserslist@npm:^4.28.2": version: 4.28.2 resolution: "browserslist@npm:4.28.2" @@ -17958,13 +17939,6 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001737": - version: 1.0.30001741 - resolution: "caniuse-lite@npm:1.0.30001741" - checksum: 10/d2fbc09f0941653d40b591e5460c4eb0b6838790d4adac7890a453dfb3b5e6bb84a64de2aded96cb4c6636816ef613614e07d9efb5818adaba566321feb95ffd - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001782": version: 1.0.30001787 resolution: "caniuse-lite@npm:1.0.30001787" @@ -18874,12 +18848,12 @@ __metadata: languageName: node linkType: hard -"core-js-compat@npm:^3.43.0": - version: 3.45.1 - resolution: "core-js-compat@npm:3.45.1" +"core-js-compat@npm:^3.48.0": + version: 3.49.0 + resolution: "core-js-compat@npm:3.49.0" dependencies: - browserslist: "npm:^4.25.3" - checksum: 10/a6eb757ccf5091ee4cf7756c4f2ddefb506b049d89526e8150221e6d9150dc2685c34cbed42f4b15a27a92dd300fd56f75c9502cd57cfe928c1bd7a8ed961a42 + browserslist: "npm:^4.28.1" + checksum: 10/eb35ad9b31a613092d32e5eb0c9fecb695e680bb29509fe04ae297ef790cea47d06864ef8939c8f5f189cce0bd2807fef8b2d6450f7eeb917ffaaf38a775dece languageName: node linkType: hard @@ -20582,13 +20556,6 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.5.211": - version: 1.5.215 - resolution: "electron-to-chromium@npm:1.5.215" - checksum: 10/fc594ad4ae4a8f49966a78dbb92db189ffdfa793e8d27241e3db9e289ff6be697a499d424f7628d12468481682da2639fb3b330b666f9901792ef1c20c2ff368 - languageName: node - linkType: hard - "electron-to-chromium@npm:^1.5.328": version: 1.5.335 resolution: "electron-to-chromium@npm:1.5.335" @@ -32859,7 +32826,21 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.22.10, resolve@npm:^1.22.3": +"resolve@npm:^1.22.11": + version: 1.22.12 + resolution: "resolve@npm:1.22.12" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/1d2a081e4b7198e2a70abd7bbbf8aea5380c2d074b6c870035aab50ebfb7312b6492b3588e752faef83a75147862a3d3e09b222bc9afd536804181fd3a515ef9 + languageName: node + linkType: hard + +"resolve@npm:^1.22.3": version: 1.22.10 resolution: "resolve@npm:1.22.10" dependencies: @@ -32901,7 +32882,21 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@npm%3A^1.22.10#optional!builtin, resolve@patch:resolve@npm%3A^1.22.3#optional!builtin": +"resolve@patch:resolve@npm%3A^1.22.11#optional!builtin": + version: 1.22.12 + resolution: "resolve@patch:resolve@npm%3A1.22.12#optional!builtin::version=1.22.12&hash=c3c19d" + dependencies: + es-errors: "npm:^1.3.0" + is-core-module: "npm:^2.16.1" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10/f80ad2c2b6820331cbe079198a184ffce322cfeca140065118066276bc08b03d5fa2c1ce652aeb584ec74050d1f656f46f034cc0dd9300452c5ab7866907f8c0 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.22.3#optional!builtin": version: 1.22.10 resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" dependencies: From acf3f97f2cad92e9e920a380a5abfceb271a333f Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 00:43:32 +0200 Subject: [PATCH 21/69] chore(deps): bump sanitize-html (#40574) Co-authored-by: Julio Araujo --- apps/meteor/package.json | 2 +- ee/packages/federation-matrix/package.json | 2 +- yarn.lock | 45 ++++++++++++---------- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 00e3a60ec9ae9..1684338307d44 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -282,7 +282,7 @@ "react-stately": "~3.17.0", "react-virtuoso": "~4.12.8", "reflect-metadata": "^0.2.2", - "sanitize-html": "~2.16.0", + "sanitize-html": "~2.17.4", "semver": "^7.6.3", "sharp": "^0.33.5", "sodium-native": "^4.3.3", diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index 8bfc8f954acbc..e28e6ec097f1c 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -35,7 +35,7 @@ "mongodb": "6.16.0", "pino": "10.3.1", "reflect-metadata": "^0.2.2", - "sanitize-html": "~2.17.3", + "sanitize-html": "~2.17.4", "tsyringe": "^4.10.0", "tweetnacl": "^1.0.3" }, diff --git a/yarn.lock b/yarn.lock index 1496aa14027bc..c19439f76efc0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9056,7 +9056,7 @@ __metadata: pino: "npm:10.3.1" pino-pretty: "npm:13.1.3" reflect-metadata: "npm:^0.2.2" - sanitize-html: "npm:~2.17.3" + sanitize-html: "npm:~2.17.4" tsyringe: "npm:^4.10.0" tweetnacl: "npm:^1.0.3" typescript: "npm:~5.9.3" @@ -9984,7 +9984,7 @@ __metadata: react-stately: "npm:~3.17.0" react-virtuoso: "npm:~4.12.8" reflect-metadata: "npm:^0.2.2" - sanitize-html: "npm:~2.16.0" + sanitize-html: "npm:~2.17.4" semver: "npm:^7.6.3" sharp: "npm:^0.33.5" sinon: "npm:^19.0.5" @@ -19673,6 +19673,13 @@ __metadata: languageName: node linkType: hard +"dayjs@npm:^1.11.7": + version: 1.11.20 + resolution: "dayjs@npm:1.11.20" + checksum: 10/5347533f21a55b8bb1b1ef559be9b805514c3a8fb7e68b75fb7e73808131c59e70909c073aa44ce8a0d159195cd110cdd4081cf87ab96cb06fee3edacae791c6 + languageName: node + linkType: hard + "dayjs@npm:^1.11.9": version: 1.11.13 resolution: "dayjs@npm:1.11.13" @@ -23781,7 +23788,7 @@ __metadata: languageName: node linkType: hard -"htmlparser2@npm:^8.0.0, htmlparser2@npm:^8.0.2": +"htmlparser2@npm:^8.0.2": version: 8.0.2 resolution: "htmlparser2@npm:8.0.2" dependencies: @@ -26735,6 +26742,15 @@ __metadata: languageName: node linkType: hard +"launder@npm:^1.7.1": + version: 1.7.1 + resolution: "launder@npm:1.7.1" + dependencies: + dayjs: "npm:^1.11.7" + checksum: 10/e0fbf7934728c9dd82eea3ccbebc31c021c9ffee225861cf6e2f219bdeb2be0d8585748eb700ec58a41a7dff5529e50ac84500657a7a927305685ec9f1cb3ab3 + languageName: node + linkType: hard + "layerr@npm:^0.1.2": version: 0.1.2 resolution: "layerr@npm:0.1.2" @@ -33268,31 +33284,18 @@ __metadata: languageName: node linkType: hard -"sanitize-html@npm:~2.16.0": - version: 2.16.0 - resolution: "sanitize-html@npm:2.16.0" - dependencies: - deepmerge: "npm:^4.2.2" - escape-string-regexp: "npm:^4.0.0" - htmlparser2: "npm:^8.0.0" - is-plain-object: "npm:^5.0.0" - parse-srcset: "npm:^1.0.2" - postcss: "npm:^8.3.11" - checksum: 10/eac99df964e3600717dec90867b4098ca66a75e8b0b2bb7ab1661090b35ebefd7776829d023905fbb55e58b2dd05a27dd3b99dde76d8bd75a973a26b4d77cd7a - languageName: node - linkType: hard - -"sanitize-html@npm:~2.17.3": - version: 2.17.3 - resolution: "sanitize-html@npm:2.17.3" +"sanitize-html@npm:~2.17.4": + version: 2.17.4 + resolution: "sanitize-html@npm:2.17.4" dependencies: deepmerge: "npm:^4.2.2" escape-string-regexp: "npm:^4.0.0" htmlparser2: "npm:^10.1.0" is-plain-object: "npm:^5.0.0" + launder: "npm:^1.7.1" parse-srcset: "npm:^1.0.2" postcss: "npm:^8.3.11" - checksum: 10/adced2038708745c9cc2d079dd66f504c61ee232d30e205ee89e554bc5e6514626f8ffd01146abd637295d9910cf26e72511cf1e2937a448d722ee3ef6b813ce + checksum: 10/64db6f97fcbad57f4b0a97cc2eee85778580e38c4cafaa357e86ee0f796db0c497fda9c6d5d5f057edbdffee15551f208e174440f9c0d0f623e38534c975f7e0 languageName: node linkType: hard From 1a28d0c15d125fbfc6dbb13ab62178bab60b5107 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 00:43:48 +0200 Subject: [PATCH 22/69] chore(deps): bump protobufjs (#40575) Co-authored-by: Yasmim Nagat <117310290+yasnagat@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 37 ++++++++++++++++++++++--------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index c140b1ab64d9c..20586d588b2e3 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "markdown-it": "^14.1.1", "minimist": "1.2.6", "mongodb": "6.10.0", - "protobufjs": "7.5.5", + "protobufjs": "7.5.6", "webdav/axios": "0.31.1", "flatted@npm:^3.1.0": "3.4.2", "flatted@npm:^3.2.9": "3.4.2", diff --git a/yarn.lock b/yarn.lock index c19439f76efc0..54734f962420e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6479,10 +6479,10 @@ __metadata: languageName: node linkType: hard -"@protobufjs/codegen@npm:^2.0.4": - version: 2.0.4 - resolution: "@protobufjs/codegen@npm:2.0.4" - checksum: 10/c6ee5fa172a8464f5253174d3c2353ea520c2573ad7b6476983d9b1346f4d8f2b44aa29feb17a949b83c1816bc35286a5ea265ed9d8fdd2865acfa09668c0447 +"@protobufjs/codegen@npm:^2.0.5": + version: 2.0.5 + resolution: "@protobufjs/codegen@npm:2.0.5" + checksum: 10/290335fa114f26202abc0695f279d53e2fd516b01cfd8298923591e0bda011295ff40e3582a1cda0a0f27cbc5039a0292082d5ad08872bb5d6243a614ac15c88 languageName: node linkType: hard @@ -6517,6 +6517,13 @@ __metadata: languageName: node linkType: hard +"@protobufjs/inquire@npm:^1.1.1": + version: 1.1.1 + resolution: "@protobufjs/inquire@npm:1.1.1" + checksum: 10/504740e8ac348f70b33bcf6a20c83d5b9679901654c1a96b18c0491ec2f2f7ac580e74019b6d1bce16113bfb9746bc6e7dfd4e12a717deed699675b7f230ce9e + languageName: node + linkType: hard + "@protobufjs/path@npm:^1.1.2": version: 1.1.2 resolution: "@protobufjs/path@npm:1.1.2" @@ -6531,10 +6538,10 @@ __metadata: languageName: node linkType: hard -"@protobufjs/utf8@npm:^1.1.0": - version: 1.1.0 - resolution: "@protobufjs/utf8@npm:1.1.0" - checksum: 10/131e289c57534c1d73a0e55782d6751dd821db1583cb2f7f7e017c9d6747addaebe79f28120b2e0185395d990aad347fb14ffa73ef4096fa38508d61a0e64602 +"@protobufjs/utf8@npm:^1.1.1": + version: 1.1.1 + resolution: "@protobufjs/utf8@npm:1.1.1" + checksum: 10/ed0c3f9ff1afd602a0aed54c4c03a0b8f641686a5587d8949e088dcac653fb2019d15691ed92eef23dfdf9f4293249532d0508ecd15cef810acf026917719a19 languageName: node linkType: hard @@ -31333,23 +31340,23 @@ __metadata: languageName: node linkType: hard -"protobufjs@npm:7.5.5": - version: 7.5.5 - resolution: "protobufjs@npm:7.5.5" +"protobufjs@npm:7.5.6": + version: 7.5.6 + resolution: "protobufjs@npm:7.5.6" dependencies: "@protobufjs/aspromise": "npm:^1.1.2" "@protobufjs/base64": "npm:^1.1.2" - "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/codegen": "npm:^2.0.5" "@protobufjs/eventemitter": "npm:^1.1.0" "@protobufjs/fetch": "npm:^1.1.0" "@protobufjs/float": "npm:^1.0.2" - "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/inquire": "npm:^1.1.1" "@protobufjs/path": "npm:^1.1.2" "@protobufjs/pool": "npm:^1.1.0" - "@protobufjs/utf8": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.1" "@types/node": "npm:>=13.7.0" long: "npm:^5.0.0" - checksum: 10/048898023a38d22f5fc9a1bcf0dcce5cfbcd37fb00753bd72283720eee7e2cb6055b23957542e5bcdc136379af66203a2ddb8d8c39d11f73169bacf07885fedd + checksum: 10/13d7ab5b5d588b704476a600506cda9f647e2f657faf5a18e8866ce5b04800026a508a4958673e4d5674090bbc528717b01128f8e226055d56e90745e3ee6ada languageName: node linkType: hard From 69df4432d18cdf11c72adb73854250c14a68bf6c Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 06:15:00 +0200 Subject: [PATCH 23/69] chore(deps): bump `@opentelemetry`-related packages (#40573) --- apps/meteor/package.json | 4 +- packages/tracing/package.json | 5 +- yarn.lock | 558 ++++++++++++++++++++-------------- 3 files changed, 329 insertions(+), 238 deletions(-) diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 1684338307d44..9ecace53e5fe1 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -85,8 +85,8 @@ "@noble/ed25519": "^3.0.0", "@node-oauth/oauth2-server": "~5.2.1", "@opentelemetry/api": "^1.9.1", - "@opentelemetry/exporter-trace-otlp-grpc": "^0.54.2", - "@opentelemetry/sdk-node": "^0.54.2", + "@opentelemetry/exporter-trace-otlp-grpc": "^0.217.0", + "@opentelemetry/sdk-node": "^0.217.0", "@parse/node-apn": "^8.1.0", "@react-aria/toolbar": "^3.0.0-nightly.5042", "@react-pdf/renderer": "^4.3.2", diff --git a/packages/tracing/package.json b/packages/tracing/package.json index 6e8a0099cc3ee..ce03a4b44a4f8 100644 --- a/packages/tracing/package.json +++ b/packages/tracing/package.json @@ -16,8 +16,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.1", - "@opentelemetry/exporter-trace-otlp-grpc": "^0.54.2", - "@opentelemetry/sdk-node": "^0.54.2" + "@opentelemetry/exporter-trace-otlp-grpc": "^0.217.0", + "@opentelemetry/sdk-node": "^0.217.0", + "@opentelemetry/sdk-trace-base": "^2.7.1" }, "devDependencies": { "@types/jest": "~30.0.0", diff --git a/yarn.lock b/yarn.lock index 54734f962420e..e6a8afd31424a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3863,27 +3863,27 @@ __metadata: languageName: node linkType: hard -"@grpc/grpc-js@npm:^1.7.1": - version: 1.12.2 - resolution: "@grpc/grpc-js@npm:1.12.2" +"@grpc/grpc-js@npm:^1.14.3": + version: 1.14.3 + resolution: "@grpc/grpc-js@npm:1.14.3" dependencies: - "@grpc/proto-loader": "npm:^0.7.13" + "@grpc/proto-loader": "npm:^0.8.0" "@js-sdsl/ordered-map": "npm:^4.4.2" - checksum: 10/0d0556da8515704b5e722b86097e04693d8c71ba286a076270a96e1ac3a4950e87559c718cc2875d3fcaa6cb8e07d0cc6b1db2673b8940829dfe8b75197844dd + checksum: 10/bb9bfe2f749179ae5ac7774d30486dfa2e0b004518c28de158b248e0f6f65f40138f01635c48266fa540670220f850216726e3724e1eb29d078817581c96e4db languageName: node linkType: hard -"@grpc/proto-loader@npm:^0.7.13": - version: 0.7.13 - resolution: "@grpc/proto-loader@npm:0.7.13" +"@grpc/proto-loader@npm:^0.8.0": + version: 0.8.1 + resolution: "@grpc/proto-loader@npm:0.8.1" dependencies: lodash.camelcase: "npm:^4.3.0" long: "npm:^5.0.0" - protobufjs: "npm:^7.2.5" + protobufjs: "npm:^7.5.5" yargs: "npm:^17.7.2" bin: proto-loader-gen-types: build/bin/proto-loader-gen-types.js - checksum: 10/7e2d842c2061cbaf6450c71da0077263be3bab165454d5c8a3e1ae4d3c6d2915f02fd27da63ff01f05e127b1221acd40705273f5d29303901e60514e852992f4 + checksum: 10/d9ef734a43fa3003b9fea4ad9392137f353b79d62b6452b68f8f6b1d8f97947139141d111108ba3e858642989e966e4aa1211012a657d1e41f80a9c7540070ec languageName: node linkType: hard @@ -5773,12 +5773,12 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/api-logs@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/api-logs@npm:0.54.2" +"@opentelemetry/api-logs@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/api-logs@npm:0.217.0" dependencies: "@opentelemetry/api": "npm:^1.3.0" - checksum: 10/97d887be03ca4a2e69574cc9160464bda00f2a167cc850656ade44b6690a75855d9334983b73827dc44c3672958bc478197f261eae11c2ac68a6df9260c9c3df + checksum: 10/ead902585aefe09956b0a7d0ce653706816ab47785961cbc24c3e188651fc0306cc077bebf0a71f2783ff39a2acd660b3e7960c2bcb266b7503ba52b70a700c0 languageName: node linkType: hard @@ -5796,310 +5796,391 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/context-async-hooks@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/context-async-hooks@npm:1.27.0" +"@opentelemetry/configuration@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/configuration@npm:0.217.0" + dependencies: + "@opentelemetry/core": "npm:2.7.1" + yaml: "npm:^2.0.0" + peerDependencies: + "@opentelemetry/api": ^1.9.0 + checksum: 10/ccafc9cfce1ca7ea21453eb314bbf76a4a83736b9f220f22c6d8fb8320be1b3589ff6daf5dd5add4855de430de75ddeaf6d4f8b4cdcb9db2b697a00260554782 + languageName: node + linkType: hard + +"@opentelemetry/context-async-hooks@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/context-async-hooks@npm:2.7.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/a72fdf5754f6e6d829b81031afe1a8e48a66bb02b13014e05c3fbb9c31fc736f7d303b0bb3491d200ce951582fe04a2d1c6246359683e8fe1b544929d5fd16c5 + checksum: 10/fc7f12111d8104516437fb9edcfac677071f06163858c47e3dc1e8aac7d3e252db43c39525933b9861e712c5b3581728bc4756d07f70a53819f8c97eca4f8c1a languageName: node linkType: hard -"@opentelemetry/core@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/core@npm:1.27.0" +"@opentelemetry/core@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/core@npm:2.7.1" dependencies: - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/2e64f35f7f8a53c035eb7e2335c73a6bca0f12a0d45cd8171646492d5efb73f82fb29aae77f34b2d6e93498b38172dee8e5cf769727c44ac08be0d5b21da7512 + checksum: 10/aaec929e1f22b3704e3cb195f8a27b2d9bd0292a565741c00b1e8cde0f3043de41713632fe15e4bfd588d83807a5b10a861deffad173e28787802ede9123ced7 languageName: node linkType: hard -"@opentelemetry/exporter-logs-otlp-grpc@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-logs-otlp-grpc@npm:0.54.2" +"@opentelemetry/exporter-logs-otlp-grpc@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-logs-otlp-grpc@npm:0.217.0" dependencies: - "@grpc/grpc-js": "npm:^1.7.1" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-grpc-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/sdk-logs": "npm:0.54.2" + "@grpc/grpc-js": "npm:^1.14.3" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-grpc-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/sdk-logs": "npm:0.217.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/eacb27329ad5a8154f0f075e20de146cd18b673dfc3db88596678f95afa8939bc853e98e397a817dcf4e5cc024ff7e53320041576b2ce7c0dffd1067e7229b9e + checksum: 10/1252008c53caa246043ec9c2bf2cee22ab3dc3ba1aa6d6961d44b7a69375bf45a7b250c4b4e764dd460cda40fb49759f514d4c9085bfbd734b7cbda3ed8e27a7 languageName: node linkType: hard -"@opentelemetry/exporter-logs-otlp-http@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-logs-otlp-http@npm:0.54.2" +"@opentelemetry/exporter-logs-otlp-http@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-logs-otlp-http@npm:0.217.0" dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/sdk-logs": "npm:0.54.2" + "@opentelemetry/api-logs": "npm:0.217.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/sdk-logs": "npm:0.217.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/88e99302310cef38002c5cc2c682197b8bc5bee5a1dd139d7a9fb5b2645464071e86a4f55607dbf1afae5a4d91c41ddfc982e7230c7ed6e4667e5709b7a9e3c0 + checksum: 10/978c5b91192d579c188bd7cf9b03a533b2ec0c2a9cc63365fc50b9fff3de13f981a776d23713b1994efef2795a5a9ed393e50f3ea2a74c7ff52b8df43994735b languageName: node linkType: hard -"@opentelemetry/exporter-logs-otlp-proto@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-logs-otlp-proto@npm:0.54.2" +"@opentelemetry/exporter-logs-otlp-proto@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-logs-otlp-proto@npm:0.217.0" dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-logs": "npm:0.54.2" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" + "@opentelemetry/api-logs": "npm:0.217.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-logs": "npm:0.217.0" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/2b2d6bfe1d0799d0f96fac5a15712c8dd3ef132380ee1856d03672c54802fa9f7664a0897310de708cd42942f916d0fdf20916cf4c5459ef7148db836cd5b1f2 + checksum: 10/33b15d91122d50a425fb4a169695c866ef0e6e3985fc7cc8972a4074a51b43c26e37dfe56ad017ed2a3adbcc0175d41d7df6460013a6f8980af1365e5a9035b9 languageName: node linkType: hard -"@opentelemetry/exporter-trace-otlp-grpc@npm:0.54.2, @opentelemetry/exporter-trace-otlp-grpc@npm:^0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-trace-otlp-grpc@npm:0.54.2" +"@opentelemetry/exporter-metrics-otlp-grpc@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-metrics-otlp-grpc@npm:0.217.0" dependencies: - "@grpc/grpc-js": "npm:^1.7.1" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-grpc-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" + "@grpc/grpc-js": "npm:^1.14.3" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/exporter-metrics-otlp-http": "npm:0.217.0" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-grpc-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-metrics": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/4fd0f50f1faca2ddc8167420517b0f03760fe113e3240fcfc1324d2e0779065b92f2f08775cae020e7a51bf80d202328e44159e89830b160f41e7c1b507debaf + checksum: 10/6f2af4efb0f35942daf440011a4945ac9d08daabe1f4cda7bcd16407e10d0a45dedc5a32d262626bc3f44c99844505c30317ac93bce5b755c51f30e9d4d93316 languageName: node linkType: hard -"@opentelemetry/exporter-trace-otlp-http@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.54.2" +"@opentelemetry/exporter-metrics-otlp-http@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-metrics-otlp-http@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-metrics": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/0826980f3509795b48b694bc5c1035e1800ddc0697e29662dd02a6ec09ebe40a57f3c977482cf91b90a6eb5ed99b6a9b1401a144c868c6f4196c6c50da84600a + checksum: 10/5a3d5c0c0edde9c8c53905748de8a36ac49241acbd62499ab2a8aaf85212c3c86187050874a2b01d65bfcca20d211ffffd42b07d638831408d53c428157f6f7a languageName: node linkType: hard -"@opentelemetry/exporter-trace-otlp-proto@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/exporter-trace-otlp-proto@npm:0.54.2" +"@opentelemetry/exporter-metrics-otlp-proto@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-metrics-otlp-proto@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/exporter-metrics-otlp-http": "npm:0.217.0" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-metrics": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/3f128e60833c6cc896209ee787234be930ea326d9006973f1f0bc61903715c4ae8d60e46ab4b66cd9baa008c8682b9f8ddef6b99ea8b2929aa4745075a593630 + checksum: 10/c0144153c62b5512ab9b23097341eef8cf7cef89a6ff5cec02366f2d3b136c6fe41077b9fff1ff98b6431a33a07d182c581ab3d16f16208a880c10175d5537f9 languageName: node linkType: hard -"@opentelemetry/exporter-zipkin@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/exporter-zipkin@npm:1.27.0" +"@opentelemetry/exporter-prometheus@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-prometheus@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-metrics": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" peerDependencies: - "@opentelemetry/api": ^1.0.0 - checksum: 10/c1cf75eae527b9159b9e52b9b073d3a62a8e407812832a10bb1c110aad2764692239cb99e46f56b2d4d72fe548494dd829bbf2c25611827fc1b031d8af69e8ef + "@opentelemetry/api": ^1.3.0 + checksum: 10/cc1b01d902659a8d438e2e9768821a4a25ad4df34d8ac68107784255caed1f6c64e5b239f0e70ec05d4f8cf0222369cf29baf926974d67383117402870e0d69a languageName: node linkType: hard -"@opentelemetry/instrumentation@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/instrumentation@npm:0.54.2" +"@opentelemetry/exporter-trace-otlp-grpc@npm:0.217.0, @opentelemetry/exporter-trace-otlp-grpc@npm:^0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-trace-otlp-grpc@npm:0.217.0" dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@types/shimmer": "npm:^1.2.0" - import-in-the-middle: "npm:^1.8.1" - require-in-the-middle: "npm:^7.1.1" - semver: "npm:^7.5.2" - shimmer: "npm:^1.2.1" + "@grpc/grpc-js": "npm:^1.14.3" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-grpc-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/1c570fb2e55d2ea7dcc45103afb53ffc331efb675dc404783639c0ed4c93e4e0fa04751672f75ca2a633ca03943e520cf802ee0291e79fa33be54a097af46fc6 + checksum: 10/cf42d919991de9f7e70fa0d2c387c6d7cb9f7069e3bb8a98a7e884ef0dd254a47ba77f13159bc0d51f8c8fba1e80aaff1240f15d9278b95099b7cac14013c7d0 languageName: node linkType: hard -"@opentelemetry/otlp-exporter-base@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/otlp-exporter-base@npm:0.54.2" +"@opentelemetry/exporter-trace-otlp-http@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-trace-otlp-http@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-transformer": "npm:0.54.2" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/f4eb3009ab87c072b52d33106b60a507b6debbc40ad6762275f6bb48144e1dc401d1100ea87540df08dbdb542f4ea6779aa805313d0b3966eae34ca3dded1436 + checksum: 10/3194a1c760232aceb601cab5ba2cb82c10c4b22cfd9f53ec4ef1e54a280edc70f3392558fa84353893636cebeca49ad1ef172335ba33a825b242c42faa5c4089 + languageName: node + linkType: hard + +"@opentelemetry/exporter-trace-otlp-proto@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/exporter-trace-otlp-proto@npm:0.217.0" + dependencies: + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" + peerDependencies: + "@opentelemetry/api": ^1.3.0 + checksum: 10/4c10a0d61704a21007a88b795a2bada3dbbb2a6070883d6d5af8617aaff1a6ecc2af58403f934520cf08094c0ec41b39aca236f5994cf0ed433138300f1948c1 + languageName: node + linkType: hard + +"@opentelemetry/exporter-zipkin@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/exporter-zipkin@npm:2.7.1" + dependencies: + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" + peerDependencies: + "@opentelemetry/api": ^1.0.0 + checksum: 10/dafa75a254c0b1ffe791e2dcfeaf6a778123c5fbedbfeff7ea9d3d20c9d6cc4dabae2a60f2820e0f23806f326c9d715bbce10a07c8e84351c6bc796100584753 languageName: node linkType: hard -"@opentelemetry/otlp-grpc-exporter-base@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/otlp-grpc-exporter-base@npm:0.54.2" +"@opentelemetry/instrumentation@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/instrumentation@npm:0.217.0" dependencies: - "@grpc/grpc-js": "npm:^1.7.1" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/otlp-exporter-base": "npm:0.54.2" - "@opentelemetry/otlp-transformer": "npm:0.54.2" + "@opentelemetry/api-logs": "npm:0.217.0" + import-in-the-middle: "npm:^3.0.0" + require-in-the-middle: "npm:^8.0.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/d7647ff72fab06ed410f3782c0199a24a98da61bcc5fbc19aa8afcd2fac2b376aad48f9206504d40bee6070de3a7e4bf03423d438a3daaa3f71c3a95f261f48b + checksum: 10/2319b8633d240f1e4e750c43c9cfcdcf76ba02841d29fecb8e5f9c75a8576bfa377b1f9ea247ebe414a71571973cf2f4fcd392e85d2afd809c8f00ad3272fe01 languageName: node linkType: hard -"@opentelemetry/otlp-transformer@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/otlp-transformer@npm:0.54.2" +"@opentelemetry/otlp-exporter-base@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/otlp-exporter-base@npm:0.217.0" dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-logs": "npm:0.54.2" - "@opentelemetry/sdk-metrics": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" - protobufjs: "npm:^7.3.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-transformer": "npm:0.217.0" peerDependencies: "@opentelemetry/api": ^1.3.0 - checksum: 10/316fcdeca02666dfb2919746a83b1523f729875efac45075d513789fc534a3aa4a467c9c519c7fd8a16db78274534373bee0f56f95c89ba09dc4868e2fb42c10 + checksum: 10/c297687b537be701a2fab01a701726ddeeaa1b0649855a509a83df8f07704eb2669f4656fe03ebfb1f477dd29a9cc8eb98af6011064978fa5fee0d64a5ab6924 languageName: node linkType: hard -"@opentelemetry/propagator-b3@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/propagator-b3@npm:1.27.0" +"@opentelemetry/otlp-grpc-exporter-base@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/otlp-grpc-exporter-base@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" + "@grpc/grpc-js": "npm:^1.14.3" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/otlp-transformer": "npm:0.217.0" peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/21af4d3416155071d49351087f16ba66d255fba33f7bf6ffded538646e5a2efc53228733466c4419761a8f83aa200a940d6e30a27cdcb45ebd2665351ef4175e + "@opentelemetry/api": ^1.3.0 + checksum: 10/baf6217fa8496b8d1ed5a9e83f474eaab3903f477c80af95d8cc32ef29779d4f6051ef11281e2e2452eed9a7a9c0008771d37667d223e77f539815c0a8c26101 languageName: node linkType: hard -"@opentelemetry/propagator-jaeger@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/propagator-jaeger@npm:1.27.0" +"@opentelemetry/otlp-transformer@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/otlp-transformer@npm:0.217.0" dependencies: - "@opentelemetry/core": "npm:1.27.0" + "@opentelemetry/api-logs": "npm:0.217.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-logs": "npm:0.217.0" + "@opentelemetry/sdk-metrics": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" + protobufjs: "npm:8.0.1" peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/896cf18c3278083caec05b63a622b0e3da9abf658670f9170c4c47fcc3a121d878f7c6708b012490bd466e39f361a58773631fbc4784b4c03ad680002c1df50d + "@opentelemetry/api": ^1.3.0 + checksum: 10/b517a173df30a188c4e824f9c89c3adde79998946c192ef2f368edc4c4aed16cce9d1b3c97acf613755920331506b1d67efc2b00944cc4422022e3e921acd4ea languageName: node linkType: hard -"@opentelemetry/resources@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/resources@npm:1.27.0" +"@opentelemetry/propagator-b3@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/propagator-b3@npm:2.7.1" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/654141ea65854bba84c22eeecc5af0054f14462f2664f36ac1ad8a170404e3218fccb98cafaaff4ec45e85523230e58eafbf222c25d00de8a60141ce77a34bbf + checksum: 10/4d2655d5bf73147d70f7b4cc37a171ab16c9e9854128087d518b087f2840325df4fb06e2fdc608411f2eeb89cd3a373f501ca140f5a982566ceb9483725ead4b languageName: node linkType: hard -"@opentelemetry/sdk-logs@npm:0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/sdk-logs@npm:0.54.2" +"@opentelemetry/propagator-jaeger@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/propagator-jaeger@npm:2.7.1" dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/resources": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" peerDependencies: - "@opentelemetry/api": ">=1.4.0 <1.10.0" - checksum: 10/c00a01de156d529674ed9b607fbabffd3306aa51b7b1897a670214cab7ba7d07da1f2bc5e8d957b0f441448b8ec22ac0526b1b368e36a61edf2bd54bfe571d2d + "@opentelemetry/api": ">=1.0.0 <1.10.0" + checksum: 10/f23c299fab31c7a4c18160056851e60ff2f8d7fc6f7cefc35ff0636b2633b176db5939737c336e604fc723d93bf07416fbe382833255d54dd4bcfdba8d5f302a languageName: node linkType: hard -"@opentelemetry/sdk-metrics@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/sdk-metrics@npm:1.27.0" +"@opentelemetry/resources@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/resources@npm:2.7.1" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/resources": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" peerDependencies: "@opentelemetry/api": ">=1.3.0 <1.10.0" - checksum: 10/0d6061f42879170e4b4cf4847aa658520a7574f287b33562299ddeb97b0145a4ec91abec63d2292af0d632fce3e63b42f6e6e9a0e9698dc01950b6063363bf98 - languageName: node - linkType: hard - -"@opentelemetry/sdk-node@npm:^0.54.2": - version: 0.54.2 - resolution: "@opentelemetry/sdk-node@npm:0.54.2" - dependencies: - "@opentelemetry/api-logs": "npm:0.54.2" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/exporter-logs-otlp-grpc": "npm:0.54.2" - "@opentelemetry/exporter-logs-otlp-http": "npm:0.54.2" - "@opentelemetry/exporter-logs-otlp-proto": "npm:0.54.2" - "@opentelemetry/exporter-trace-otlp-grpc": "npm:0.54.2" - "@opentelemetry/exporter-trace-otlp-http": "npm:0.54.2" - "@opentelemetry/exporter-trace-otlp-proto": "npm:0.54.2" - "@opentelemetry/exporter-zipkin": "npm:1.27.0" - "@opentelemetry/instrumentation": "npm:0.54.2" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/sdk-logs": "npm:0.54.2" - "@opentelemetry/sdk-metrics": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" - "@opentelemetry/sdk-trace-node": "npm:1.27.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" + checksum: 10/4df7abc021df99c5716deb18b2a528245e7da2116daefcfb25508b3d198de8923ca245da1a1cb3b83ae28bf24ab2cc0e73480f0f0e0fb9fddd79b96b2484d002 + languageName: node + linkType: hard + +"@opentelemetry/sdk-logs@npm:0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/sdk-logs@npm:0.217.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.217.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" + peerDependencies: + "@opentelemetry/api": ">=1.4.0 <1.10.0" + checksum: 10/fa69d871ead27d39e8fd13b99814238df7718d941015e0eff4dd08b53d94c6d52252b4a7ca37ee1e2bfeb7cb28aaa7c1c99f1fef2c89dda6acb6c9d593670683 + languageName: node + linkType: hard + +"@opentelemetry/sdk-metrics@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/sdk-metrics@npm:2.7.1" + dependencies: + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + peerDependencies: + "@opentelemetry/api": ">=1.9.0 <1.10.0" + checksum: 10/884b1be10c285143c52b3910f203562b738064bca8a55a5a71e8ca3acf9775ce194f3f9444a1f8cd1669b32425d0e753e0cee09fbb68b329332f2e824b06653c + languageName: node + linkType: hard + +"@opentelemetry/sdk-node@npm:^0.217.0": + version: 0.217.0 + resolution: "@opentelemetry/sdk-node@npm:0.217.0" + dependencies: + "@opentelemetry/api-logs": "npm:0.217.0" + "@opentelemetry/configuration": "npm:0.217.0" + "@opentelemetry/context-async-hooks": "npm:2.7.1" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/exporter-logs-otlp-grpc": "npm:0.217.0" + "@opentelemetry/exporter-logs-otlp-http": "npm:0.217.0" + "@opentelemetry/exporter-logs-otlp-proto": "npm:0.217.0" + "@opentelemetry/exporter-metrics-otlp-grpc": "npm:0.217.0" + "@opentelemetry/exporter-metrics-otlp-http": "npm:0.217.0" + "@opentelemetry/exporter-metrics-otlp-proto": "npm:0.217.0" + "@opentelemetry/exporter-prometheus": "npm:0.217.0" + "@opentelemetry/exporter-trace-otlp-grpc": "npm:0.217.0" + "@opentelemetry/exporter-trace-otlp-http": "npm:0.217.0" + "@opentelemetry/exporter-trace-otlp-proto": "npm:0.217.0" + "@opentelemetry/exporter-zipkin": "npm:2.7.1" + "@opentelemetry/instrumentation": "npm:0.217.0" + "@opentelemetry/otlp-exporter-base": "npm:0.217.0" + "@opentelemetry/propagator-b3": "npm:2.7.1" + "@opentelemetry/propagator-jaeger": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/sdk-logs": "npm:0.217.0" + "@opentelemetry/sdk-metrics": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" + "@opentelemetry/sdk-trace-node": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" peerDependencies: "@opentelemetry/api": ">=1.3.0 <1.10.0" - checksum: 10/36de50763eb13ce720ab50670870562f9d12583d9b18d0d7c9dce8b8d5fa08bee1d0c12e8a3b17b5208e934e65091ab2f21f1828a593ed431d6dde51429b28a3 + checksum: 10/72ed6fa51f845486102f025738ccbb46b81da2f1a4c69fdba7f75d5ed6d60b05105cf539bed7dffebdfb4f39a8d35870120179c8c57187a5e4525643df6afd5c languageName: node linkType: hard -"@opentelemetry/sdk-trace-base@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/sdk-trace-base@npm:1.27.0" +"@opentelemetry/sdk-trace-base@npm:2.7.1, @opentelemetry/sdk-trace-base@npm:^2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/sdk-trace-base@npm:2.7.1" dependencies: - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/resources": "npm:1.27.0" - "@opentelemetry/semantic-conventions": "npm:1.27.0" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/resources": "npm:2.7.1" + "@opentelemetry/semantic-conventions": "npm:^1.29.0" peerDependencies: - "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/e0023dedbf5a50265729dd5467be0504f04f6b43d4cc4b914a9a8c082cca1aec9250a1f31c615f3d4ad03124af6e0ba1e14b39fe745d14291198f2a0990edc9c + "@opentelemetry/api": ">=1.3.0 <1.10.0" + checksum: 10/5befe387ebc9e6123afc089b4787a4a7f68d95c78666e065ede4b5506581405c95cd61969ccff46ab05b8b4542c67fb1f0f125c52bbc754f2aa45f8462692545 languageName: node linkType: hard -"@opentelemetry/sdk-trace-node@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/sdk-trace-node@npm:1.27.0" +"@opentelemetry/sdk-trace-node@npm:2.7.1": + version: 2.7.1 + resolution: "@opentelemetry/sdk-trace-node@npm:2.7.1" dependencies: - "@opentelemetry/context-async-hooks": "npm:1.27.0" - "@opentelemetry/core": "npm:1.27.0" - "@opentelemetry/propagator-b3": "npm:1.27.0" - "@opentelemetry/propagator-jaeger": "npm:1.27.0" - "@opentelemetry/sdk-trace-base": "npm:1.27.0" - semver: "npm:^7.5.2" + "@opentelemetry/context-async-hooks": "npm:2.7.1" + "@opentelemetry/core": "npm:2.7.1" + "@opentelemetry/sdk-trace-base": "npm:2.7.1" peerDependencies: "@opentelemetry/api": ">=1.0.0 <1.10.0" - checksum: 10/53cff496312f0dedd819d2998219596a0d700348bf8ad315ff1d48a9a5e9be070623ed850633436f4ad006263b9cb55ffb6681d4174de99547d4edaa4125c98d + checksum: 10/fb9dac6262b919a6cf265bad5a10597dfca8f91bb45cd867fd4a61b0e1ad0e17e0a42db47485a4c93a27df89412bae0f5d820c0e28a21f438050709351dd33ad languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.27.0": - version: 1.27.0 - resolution: "@opentelemetry/semantic-conventions@npm:1.27.0" - checksum: 10/98166522f299e2fe3d43376adbdeb92679b75ebb172e2a3c4c71f2942bd91585e9537618efbbae6dc08177699e5719368edf66d7e69e8636f360b85217bbdbe1 +"@opentelemetry/semantic-conventions@npm:^1.29.0": + version: 1.40.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.40.0" + checksum: 10/edb58894590e42e631006a9f5741955fad248e3589aa334a5e59080c535ead44ee9f376c444ef2be094d1e6c1a2e596538c1df0a31a04508551e91b1a5d5c93c languageName: node linkType: hard @@ -9672,8 +9753,8 @@ __metadata: "@noble/ed25519": "npm:^3.0.0" "@node-oauth/oauth2-server": "npm:~5.2.1" "@opentelemetry/api": "npm:^1.9.1" - "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.54.2" - "@opentelemetry/sdk-node": "npm:^0.54.2" + "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.217.0" + "@opentelemetry/sdk-node": "npm:^0.217.0" "@parse/node-apn": "npm:^8.1.0" "@playwright/test": "npm:~1.52.0" "@react-aria/toolbar": "npm:^3.0.0-nightly.5042" @@ -10654,8 +10735,9 @@ __metadata: resolution: "@rocket.chat/tracing@workspace:packages/tracing" dependencies: "@opentelemetry/api": "npm:^1.9.1" - "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.54.2" - "@opentelemetry/sdk-node": "npm:^0.54.2" + "@opentelemetry/exporter-trace-otlp-grpc": "npm:^0.217.0" + "@opentelemetry/sdk-node": "npm:^0.217.0" + "@opentelemetry/sdk-trace-base": "npm:^2.7.1" "@types/jest": "npm:~30.0.0" eslint: "npm:~9.39.4" jest: "npm:~30.2.0" @@ -14908,13 +14990,6 @@ __metadata: languageName: node linkType: hard -"@types/shimmer@npm:^1.2.0": - version: 1.2.0 - resolution: "@types/shimmer@npm:1.2.0" - checksum: 10/f081a31d826ce7bfe8cc7ba8129d2b1dffae44fd580eba4fcf741237646c4c2494ae6de2cada4b7713d138f35f4bc512dbf01311d813dee82020f97d7d8c491c - languageName: node - linkType: hard - "@types/sinon@npm:^10.0.20": version: 10.0.20 resolution: "@types/sinon@npm:10.0.20" @@ -15928,7 +16003,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.12.1, acorn@npm:^8.14.0, acorn@npm:^8.4.1, acorn@npm:^8.8.2": +"acorn@npm:^8.12.1, acorn@npm:^8.14.0, acorn@npm:^8.4.1": version: 8.14.0 resolution: "acorn@npm:8.14.0" bin: @@ -18341,7 +18416,7 @@ __metadata: languageName: node linkType: hard -"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.2, cjs-module-lexer@npm:^1.2.3": +"cjs-module-lexer@npm:^1.0.0, cjs-module-lexer@npm:^1.2.3": version: 1.4.1 resolution: "cjs-module-lexer@npm:1.4.1" checksum: 10/6e830a1e00a34d416949bbc1924f3e8da65cef4a6a09e2b7fa35722e2d1c34bf378d3baca987b698d1cbc3eb83e44b044039b4e82755c96f30e0f03d1d227637 @@ -18355,6 +18430,13 @@ __metadata: languageName: node linkType: hard +"cjs-module-lexer@npm:^2.2.0": + version: 2.2.0 + resolution: "cjs-module-lexer@npm:2.2.0" + checksum: 10/fc8eb5c1919504366d8260a150d93c4e857740e770467dc59ca0cc34de4b66c93075559a5af65618f359187866b1be40e036f4e1a1bab2f1e06001c216415f74 + languageName: node + linkType: hard + "classcat@npm:^5.0.3, classcat@npm:^5.0.4": version: 5.0.4 resolution: "classcat@npm:5.0.4" @@ -24182,15 +24264,15 @@ __metadata: languageName: node linkType: hard -"import-in-the-middle@npm:^1.8.1": - version: 1.11.2 - resolution: "import-in-the-middle@npm:1.11.2" +"import-in-the-middle@npm:^3.0.0": + version: 3.0.1 + resolution: "import-in-the-middle@npm:3.0.1" dependencies: - acorn: "npm:^8.8.2" + acorn: "npm:^8.15.0" acorn-import-attributes: "npm:^1.9.5" - cjs-module-lexer: "npm:^1.2.2" - module-details-from-path: "npm:^1.0.3" - checksum: 10/ebd1aaba4441e54db124670e13038127f5283b686d83276dc004cd9d3bb1747e63ac37935c3c58885b52aedf48e669093d24ffe4b5849adef744d79ee67445ad + cjs-module-lexer: "npm:^2.2.0" + module-details-from-path: "npm:^1.0.4" + checksum: 10/4acad9839c507021820c3cacc88b113e9d927633fa004fef54161297b57e6f55b6d20765362ef5be103fc5acd7f765b21e5a19cb3645f077d1d82a60f4a4c32d languageName: node linkType: hard @@ -28341,6 +28423,13 @@ __metadata: languageName: node linkType: hard +"module-details-from-path@npm:^1.0.4": + version: 1.0.4 + resolution: "module-details-from-path@npm:1.0.4" + checksum: 10/2ebfada5358492f6ab496b70f70a1042f2ee7a4c79d29467f59ed6704f741fb4461d7cecb5082144ed39a05fec4d19e9ff38b731c76228151be97227240a05b2 + languageName: node + linkType: hard + "module-not-found-error@npm:^1.0.1": version: 1.0.1 resolution: "module-not-found-error@npm:1.0.1" @@ -32734,14 +32823,13 @@ __metadata: languageName: node linkType: hard -"require-in-the-middle@npm:^7.1.1": - version: 7.4.0 - resolution: "require-in-the-middle@npm:7.4.0" +"require-in-the-middle@npm:^8.0.0": + version: 8.0.1 + resolution: "require-in-the-middle@npm:8.0.1" dependencies: debug: "npm:^4.3.5" module-details-from-path: "npm:^1.0.3" - resolve: "npm:^1.22.8" - checksum: 10/0ca30ad6a6183423f38599709fc8a670682db85b581a66cb31ea31342e8ba2ce7dca44ee29e8cfe4fb59ffcb0c2b0f9b77d44a10cdc7535c7c2907028e53afbf + checksum: 10/4ce98c681489d383a0ffccb79b06df7a1dffbb31c13f3b713ae2c5a1967597a259e67612507ef69748d83d531bba7c9bb0477211771fe78c685e1d52b1a44b64 languageName: node linkType: hard @@ -33812,13 +33900,6 @@ __metadata: languageName: node linkType: hard -"shimmer@npm:^1.2.1": - version: 1.2.1 - resolution: "shimmer@npm:1.2.1" - checksum: 10/aa0d6252ad1c682a4fdfda69e541be987f7a265ac7b00b1208e5e48cc68dc55f293955346ea4c71a169b7324b82c70f8400b3d3d2d60b2a7519f0a3522423250 - languageName: node - linkType: hard - "short-uuid@npm:^4.2.2": version: 4.2.2 resolution: "short-uuid@npm:4.2.2" @@ -37814,6 +37895,15 @@ __metadata: languageName: node linkType: hard +"yaml@npm:^2.0.0": + version: 2.8.4 + resolution: "yaml@npm:2.8.4" + bin: + yaml: bin.mjs + checksum: 10/1ccf5d9692c6521141515c2df24c30dd3f633fdb96b548ccc744094893cc58868ad0b3220e040b914a6308c52d258dc2d228a0330343e544a13c871569b92305 + languageName: node + linkType: hard + "yaml@npm:^2.8.3": version: 2.8.3 resolution: "yaml@npm:2.8.3" From 25e87d8220775655ef9317d550739713346d5f76 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 17:26:51 +0200 Subject: [PATCH 24/69] fix: remove visitor token from visitors.info endpoint (#40577) Co-authored-by: Julio Araujo --- .changeset/perky-tires-invite.md | 5 +++++ apps/meteor/app/livechat/server/api/lib/visitors.ts | 2 +- .../tests/end-to-end/api/livechat/09-visitors.ts | 12 ++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changeset/perky-tires-invite.md diff --git a/.changeset/perky-tires-invite.md b/.changeset/perky-tires-invite.md new file mode 100644 index 0000000000000..d3824c95cfca4 --- /dev/null +++ b/.changeset/perky-tires-invite.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Ensures the visitor token is not present in the visitors.info response diff --git a/apps/meteor/app/livechat/server/api/lib/visitors.ts b/apps/meteor/app/livechat/server/api/lib/visitors.ts index 3caf551358a89..c302141aded02 100644 --- a/apps/meteor/app/livechat/server/api/lib/visitors.ts +++ b/apps/meteor/app/livechat/server/api/lib/visitors.ts @@ -6,7 +6,7 @@ import { callbacks } from '../../../../../server/lib/callbacks'; import { canAccessRoomAsync } from '../../../../authorization/server/functions/canAccessRoom'; export async function findVisitorInfo({ visitorId }: { visitorId: IVisitor['_id'] }) { - const visitor = await LivechatVisitors.findOneEnabledById(visitorId); + const visitor = await LivechatVisitors.findOneEnabledById(visitorId, { projection: { token: 0 } }); if (!visitor) { throw new Error('visitor-not-found'); } diff --git a/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts b/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts index c4b300a8a366a..6a15e5e395be4 100644 --- a/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts +++ b/apps/meteor/tests/end-to-end/api/livechat/09-visitors.ts @@ -567,6 +567,18 @@ describe('LIVECHAT - visitors', () => { expect(res.body.visitor._id).to.be.equal(visitor._id); }); }); + it('should not return the visitor token', async () => { + await request + .get(api('livechat/visitors.info')) + .query({ visitorId: visitor._id }) + .set(credentials) + .expect('Content-Type', 'application/json') + .expect(200) + .expect((res: Response) => { + expect(res.body).to.have.property('success', true); + expect(res.body.visitor).to.not.have.property('token'); + }); + }); }); describe('livechat/visitors.pagesVisited', () => { From 0f33a7b46b9fcdeec01181e26a07dd443022b242 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Sun, 17 May 2026 12:39:54 +0200 Subject: [PATCH 25/69] chore(deps): bump fast-xml-builder to 1.1.9 (#40585) --- package.json | 1 + yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 20586d588b2e3..f1fabdfebc856 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "drachtio-srf": "patch:drachtio-srf@npm%3A5.0.12#~/.yarn/patches/drachtio-srf-npm-5.0.12-b0b1afaad6.patch", "ajv/fast-uri": "3.1.2", "fast-xml-parser@npm:5.3.6": "^5.5.7", + "fast-xml-parser/fast-xml-builder": "^1.1.9", "is-svg/fast-xml-parser": "5.5.11", "webdav/fast-xml-parser": "5.5.11", "follow-redirects": "^1.16.0", diff --git a/yarn.lock b/yarn.lock index e6a8afd31424a..7e4f9931541f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22224,12 +22224,12 @@ __metadata: languageName: node linkType: hard -"fast-xml-builder@npm:^1.1.4": - version: 1.1.4 - resolution: "fast-xml-builder@npm:1.1.4" +"fast-xml-builder@npm:^1.1.9": + version: 1.1.9 + resolution: "fast-xml-builder@npm:1.1.9" dependencies: path-expression-matcher: "npm:^1.1.3" - checksum: 10/32937866aaf5a90e69d1f4ee6e15e875248d5b5d2afd70277e9e8323074de4980cef24575a591b8e43c29f405d5f12377b3bad3842dc412b0c5c17a3eaee4b6b + checksum: 10/44ef553aec4581b0fcc1b21bfd285aa9224eeb507620220228a9dd3dfd495068daaaf408b4cf9fd67354df558888680121c9d099229fdfd9672982531623781b languageName: node linkType: hard From b0c593db9bc0bbbb603e673ddcdc48aad4f4e721 Mon Sep 17 00:00:00 2001 From: "dionisio-bot[bot]" <117394943+dionisio-bot[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 00:08:46 +0200 Subject: [PATCH 26/69] fix: clean up OAuth tokens after user deactivation (#40627) Co-authored-by: Julio Araujo --- .changeset/big-corners-tie.md | 7 + apps/meteor/app/api/server/v1/users.ts | 8 +- .../server/functions/setUserActiveStatus.ts | 7 +- .../server/oauth/oauth2-server.ts | 8 +- apps/meteor/server/oauth2-server/model.ts | 12 +- .../tests/end-to-end/api/oauth-server.ts | 195 ++++++++++++++++++ .../src/models/IOAuthAccessTokensModel.ts | 4 +- .../src/models/IOAuthAuthCodesModel.ts | 4 +- .../src/models/IOAuthRefreshTokensModel.ts | 4 +- .../models/src/models/OAuthAccessTokens.ts | 11 +- packages/models/src/models/OAuthAuthCodes.ts | 12 +- .../models/src/models/OAuthRefreshTokens.ts | 12 +- 12 files changed, 269 insertions(+), 15 deletions(-) create mode 100644 .changeset/big-corners-tie.md diff --git a/.changeset/big-corners-tie.md b/.changeset/big-corners-tie.md new file mode 100644 index 0000000000000..d94dbbfb5daca --- /dev/null +++ b/.changeset/big-corners-tie.md @@ -0,0 +1,7 @@ +--- +'@rocket.chat/model-typings': patch +'@rocket.chat/models': patch +'@rocket.chat/meteor': patch +--- + +Ensures OAuth tokens are cleaned up after user deactivation diff --git a/apps/meteor/app/api/server/v1/users.ts b/apps/meteor/app/api/server/v1/users.ts index 899a6f9de7277..2873bc36fc47b 100644 --- a/apps/meteor/app/api/server/v1/users.ts +++ b/apps/meteor/app/api/server/v1/users.ts @@ -1,6 +1,6 @@ import { MeteorError, Team, api, Calendar } from '@rocket.chat/core-services'; import type { IExportOperation, ILoginToken, IPersonalAccessToken, IUser, UserStatus } from '@rocket.chat/core-typings'; -import { Users, Subscriptions, Sessions } from '@rocket.chat/models'; +import { Users, Subscriptions, Sessions, OAuthAccessTokens, OAuthRefreshTokens, OAuthAuthCodes } from '@rocket.chat/models'; import { isUserCreateParamsPOST, isUserSetActiveStatusParamsPOST, @@ -554,6 +554,12 @@ API.v1.post( const { modifiedCount: count } = await Users.setActiveNotLoggedInAfterWithRole(lastLoggedIn, role, false); + await Promise.all([ + OAuthAccessTokens.deleteByUserIds(ids), + OAuthRefreshTokens.deleteByUserIds(ids), + OAuthAuthCodes.deleteByUserIds(ids), + ]); + ids.forEach((_id) => { void notifyOnUserChange({ clientAction: 'updated', diff --git a/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts b/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts index b8fa5c86b3b1f..6734c9bbb781f 100644 --- a/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts +++ b/apps/meteor/app/lib/server/functions/setUserActiveStatus.ts @@ -1,6 +1,6 @@ import type { IUser, IUserEmail } from '@rocket.chat/core-typings'; import { isUserFederated, isDirectMessageRoom } from '@rocket.chat/core-typings'; -import { Rooms, Users, Subscriptions } from '@rocket.chat/models'; +import { Rooms, Users, Subscriptions, OAuthAccessTokens, OAuthRefreshTokens, OAuthAuthCodes } from '@rocket.chat/models'; import { Accounts } from 'meteor/accounts-base'; import { check } from 'meteor/check'; import { Meteor } from 'meteor/meteor'; @@ -121,6 +121,11 @@ export async function setUserActiveStatus( if (active === false) { await Users.unsetLoginTokens(userId); + await Promise.all([ + OAuthAccessTokens.deleteByUserId(userId), + OAuthRefreshTokens.deleteByUserId(userId), + OAuthAuthCodes.deleteByUserId(userId), + ]); await Rooms.setDmReadOnlyByUserId(userId, undefined, true, false); void notifyOnUserChange({ clientAction: 'updated', id: userId, diff: { 'services.resume.loginTokens': [], active } }); diff --git a/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts b/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts index 2a2ac65a5f4eb..c5302beb8bfec 100644 --- a/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts +++ b/apps/meteor/app/oauth2-server-config/server/oauth/oauth2-server.ts @@ -34,9 +34,9 @@ export async function oAuth2ServerAuth(partialRequest: { authorization?: string; return; } - const user = await Users.findOneById(accessToken.userId); + const user = await Users.findOneActiveById(accessToken.userId); - if (user == null) { + if (!user) { return; } @@ -54,8 +54,8 @@ oauth2server.app.get('/oauth/userinfo', async (req: Request, res: Response) => { if (token == null) { return res.status(401).send('Invalid Token'); } - const user = await Users.findOneById(token.userId); - if (user == null) { + const user = await Users.findOneActiveById(token.userId); + if (!user) { return res.status(401).send('Invalid Token'); } return res.send({ diff --git a/apps/meteor/server/oauth2-server/model.ts b/apps/meteor/server/oauth2-server/model.ts index 48e7895f41579..a9ba672854d20 100644 --- a/apps/meteor/server/oauth2-server/model.ts +++ b/apps/meteor/server/oauth2-server/model.ts @@ -8,7 +8,7 @@ import type { Token, User, } from '@node-oauth/oauth2-server'; -import { OAuthApps, OAuthAuthCodes, OAuthAccessTokens, OAuthRefreshTokens } from '@rocket.chat/models'; +import { OAuthApps, OAuthAuthCodes, OAuthAccessTokens, OAuthRefreshTokens, Users } from '@rocket.chat/models'; export type ModelConfig = { debug?: boolean; @@ -53,6 +53,11 @@ export class Model implements AuthorizationCodeModel, RefreshTokenModel { throw new Error('Invalid clientId'); } + const user = await Users.findOneActiveById(token.userId, { projection: { _id: 1 } }); + if (!user) { + return; + } + const result: Token = { accessToken: token.accessToken, client, @@ -228,6 +233,11 @@ export class Model implements AuthorizationCodeModel, RefreshTokenModel { throw new Error('Invalid clientId'); } + const user = await Users.findOneActiveById(token.userId, { projection: { _id: 1 } }); + if (!user) { + throw new Error('Invalid token'); + } + const result: RefreshToken = { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion refreshToken: token.refreshToken!, diff --git a/apps/meteor/tests/end-to-end/api/oauth-server.ts b/apps/meteor/tests/end-to-end/api/oauth-server.ts index 44a9af2be7323..c35707343a8d3 100644 --- a/apps/meteor/tests/end-to-end/api/oauth-server.ts +++ b/apps/meteor/tests/end-to-end/api/oauth-server.ts @@ -3,6 +3,40 @@ import { after, before, describe, it } from 'mocha'; import type { Response } from 'supertest'; import { getCredentials, api, request, credentials } from '../../data/api-data'; +import { password } from '../../data/user'; +import { createUser, deleteUser, login } from '../../data/users.helper'; + +async function authorizeAndExchange(loginToken: string, cId: string, cSecret: string, redirectUri: string) { + const authRes = await request + .post(`/oauth/authorize`) + .type('form') + .send({ + token: loginToken, + client_id: cId, + response_type: 'code', + redirect_uri: redirectUri, + state: 'test-state', + allow: 'yes', + }) + .expect(302); + + const location = new URL(authRes.headers.location); + const code = location.searchParams.get('code') as string; + + const tokenRes = await request + .post(`/oauth/token`) + .type('form') + .send({ + grant_type: 'authorization_code', + code, + client_id: cId, + client_secret: cSecret, + redirect_uri: redirectUri, + }) + .expect(200); + + return { accessToken: tokenRes.body.access_token as string, refreshToken: tokenRes.body.refresh_token as string }; +} describe('[OAuth Server]', () => { let oAuthAppId: string; @@ -228,4 +262,165 @@ describe('[OAuth Server]', () => { }); }); }); + + describe('[user deactivation revokes OAuth tokens]', () => { + let testUser: Awaited>; + let testUserCredentials: { 'X-Auth-Token': string; 'X-User-Id': string }; + let deactivationClientId: string; + let deactivationClientSecret: string; + let deactivationAppId: string; + let userAccessToken: string; + let userRefreshToken: string; + const redirectUri = 'http://asd.com'; + + before(async () => { + testUser = await createUser(); + testUserCredentials = await login(testUser.username, password); + + const appRes = await request + .post(api('oauth-apps.create')) + .set(credentials) + .send({ name: 'deactivation-test-app', redirectUri: `http://test.com,${redirectUri}`, active: true }) + .expect(200); + + deactivationAppId = appRes.body.application._id; + deactivationClientId = appRes.body.application.clientId; + deactivationClientSecret = appRes.body.application.clientSecret; + + const tokens = await authorizeAndExchange( + testUserCredentials['X-Auth-Token'], + deactivationClientId, + deactivationClientSecret, + redirectUri, + ); + userAccessToken = tokens.accessToken; + userRefreshToken = tokens.refreshToken; + + // Verify tokens work before deactivation + await request.get(api('me')).auth(userAccessToken, { type: 'bearer' }).expect(200); + + // Deactivate the user + await request.post(api('users.setActiveStatus')).set(credentials).send({ userId: testUser._id, activeStatus: false }).expect(200); + }); + + after(async () => { + await request.post(api('oauth-apps.delete')).set(credentials).send({ appId: deactivationAppId }).expect(200); + await deleteUser(testUser); + }); + + it('should reject the access token after user deactivation', async () => { + await request.get(api('me')).auth(userAccessToken, { type: 'bearer' }).expect(401); + }); + + it('should reject the access token on /oauth/userinfo after user deactivation', async () => { + await request.get(`/oauth/userinfo`).auth(userAccessToken, { type: 'bearer' }).expect(401); + }); + + it('should reject the refresh token grant after user deactivation', async () => { + await request + .post(`/oauth/token`) + .type('form') + .send({ + grant_type: 'refresh_token', + refresh_token: userRefreshToken, + client_id: deactivationClientId, + client_secret: deactivationClientSecret, + }) + .expect((res: Response) => { + expect(res.status).to.not.equal(200); + expect(res.body).to.have.property('error'); + expect(res.body).to.not.have.property('access_token'); + }); + }); + + it('should still reject the access token after user reactivation (token was deleted, not just blocked)', async () => { + await request.post(api('users.setActiveStatus')).set(credentials).send({ userId: testUser._id, activeStatus: true }).expect(200); + + await request.get(api('me')).auth(userAccessToken, { type: 'bearer' }).expect(401); + + // Reactivated user can obtain new tokens via a fresh OAuth flow + const reactivatedCredentials = await login(testUser.username, password); + const newTokens = await authorizeAndExchange( + reactivatedCredentials['X-Auth-Token'], + deactivationClientId, + deactivationClientSecret, + redirectUri, + ); + + await request + .get(api('me')) + .auth(newTokens.accessToken, { type: 'bearer' }) + .expect(200) + .expect((res: Response) => { + expect(res.body).to.have.property('success', true); + expect(res.body).to.have.property('_id', testUser._id); + }); + }); + }); + + describe('[users.deactivateIdle revokes OAuth tokens]', () => { + let idleUser: Awaited>; + let idleUserCredentials: { 'X-Auth-Token': string; 'X-User-Id': string }; + let idleClientId: string; + let idleClientSecret: string; + let idleAppId: string; + let idleAccessToken: string; + let idleRefreshToken: string; + const redirectUri = 'http://asd.com'; + + before(async () => { + idleUser = await createUser(); + idleUserCredentials = await login(idleUser.username, password); + + const appRes = await request + .post(api('oauth-apps.create')) + .set(credentials) + .send({ name: 'idle-deactivation-test-app', redirectUri: `http://test.com,${redirectUri}`, active: true }) + .expect(200); + + idleAppId = appRes.body.application._id; + idleClientId = appRes.body.application.clientId; + idleClientSecret = appRes.body.application.clientSecret; + + const tokens = await authorizeAndExchange(idleUserCredentials['X-Auth-Token'], idleClientId, idleClientSecret, redirectUri); + idleAccessToken = tokens.accessToken; + idleRefreshToken = tokens.refreshToken; + + // Verify tokens work before deactivation + await request.get(api('me')).auth(idleAccessToken, { type: 'bearer' }).expect(200); + + // Deactivate via deactivateIdle using daysIdle=0 to catch all users with no recent login + await request + .post(api('users.deactivateIdle')) + .set(credentials) + .send({ daysIdle: 0, role: idleUser.roles?.[0] ?? 'user' }) + .expect(200); + }); + + after(async () => { + await request.post(api('oauth-apps.delete')).set(credentials).send({ appId: idleAppId }).expect(200); + await deleteUser(idleUser); + }); + + it('should reject the access token after idle deactivation', async () => { + await request.get(api('me')).auth(idleAccessToken, { type: 'bearer' }).expect(401); + }); + + it('should reject the refresh token grant after idle deactivation', async () => { + await request + .post(`/oauth/token`) + .type('form') + .send({ + grant_type: 'refresh_token', + refresh_token: idleRefreshToken, + client_id: idleClientId, + client_secret: idleClientSecret, + }) + .expect((res: Response) => { + expect(res.status).to.not.equal(200); + expect(res.body).to.have.property('error'); + expect(res.body).to.not.have.property('access_token'); + }); + }); + }); }); diff --git a/packages/model-typings/src/models/IOAuthAccessTokensModel.ts b/packages/model-typings/src/models/IOAuthAccessTokensModel.ts index 3a7a2d0af9026..5a3ac3ebda02f 100644 --- a/packages/model-typings/src/models/IOAuthAccessTokensModel.ts +++ b/packages/model-typings/src/models/IOAuthAccessTokensModel.ts @@ -1,9 +1,11 @@ import type { IOAuthAccessToken } from '@rocket.chat/core-typings'; -import type { FindOptions } from 'mongodb'; +import type { DeleteResult, FindOptions } from 'mongodb'; import type { IBaseModel } from './IBaseModel'; export interface IOAuthAccessTokensModel extends IBaseModel { findOneByAccessToken(accessToken: string, options?: FindOptions): Promise; findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise; + deleteByUserId(userId: string): Promise; + deleteByUserIds(userIds: string[]): Promise; } diff --git a/packages/model-typings/src/models/IOAuthAuthCodesModel.ts b/packages/model-typings/src/models/IOAuthAuthCodesModel.ts index fb457a2686030..01c3da630e632 100644 --- a/packages/model-typings/src/models/IOAuthAuthCodesModel.ts +++ b/packages/model-typings/src/models/IOAuthAuthCodesModel.ts @@ -1,8 +1,10 @@ import type { IOAuthAuthCode } from '@rocket.chat/core-typings'; -import type { FindOptions } from 'mongodb'; +import type { DeleteResult, FindOptions } from 'mongodb'; import type { IBaseModel } from './IBaseModel'; export interface IOAuthAuthCodesModel extends IBaseModel { findOneByAuthCode(authCode: string, options?: FindOptions): Promise; + deleteByUserId(userId: string): Promise; + deleteByUserIds(userIds: string[]): Promise; } diff --git a/packages/model-typings/src/models/IOAuthRefreshTokensModel.ts b/packages/model-typings/src/models/IOAuthRefreshTokensModel.ts index 03f2b80f5f094..e3692b844df6a 100644 --- a/packages/model-typings/src/models/IOAuthRefreshTokensModel.ts +++ b/packages/model-typings/src/models/IOAuthRefreshTokensModel.ts @@ -1,8 +1,10 @@ import type { IOAuthRefreshToken } from '@rocket.chat/core-typings'; -import type { FindOptions } from 'mongodb'; +import type { DeleteResult, FindOptions } from 'mongodb'; import type { IBaseModel } from './IBaseModel'; export interface IOAuthRefreshTokensModel extends IBaseModel { findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise; + deleteByUserId(userId: string): Promise; + deleteByUserIds(userIds: string[]): Promise; } diff --git a/packages/models/src/models/OAuthAccessTokens.ts b/packages/models/src/models/OAuthAccessTokens.ts index d7d9e77000eed..efcf37b40a73e 100644 --- a/packages/models/src/models/OAuthAccessTokens.ts +++ b/packages/models/src/models/OAuthAccessTokens.ts @@ -1,6 +1,6 @@ import type { IOAuthAccessToken, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IOAuthAccessTokensModel } from '@rocket.chat/model-typings'; -import type { Db, Collection, FindOptions, IndexDescription } from 'mongodb'; +import type { Db, Collection, DeleteResult, FindOptions, IndexDescription } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -13,6 +13,7 @@ export class OAuthAccessTokensRaw extends BaseRaw implements return [ { key: { accessToken: 1 } }, { key: { refreshToken: 1 } }, + { key: { userId: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }, { key: { refreshTokenExpiresAt: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }, ]; @@ -31,4 +32,12 @@ export class OAuthAccessTokensRaw extends BaseRaw implements } return this.findOne({ refreshToken }, options); } + + async deleteByUserId(userId: string): Promise { + return this.deleteMany({ userId }); + } + + async deleteByUserIds(userIds: string[]): Promise { + return this.deleteMany({ userId: { $in: userIds } }); + } } diff --git a/packages/models/src/models/OAuthAuthCodes.ts b/packages/models/src/models/OAuthAuthCodes.ts index 30124f488686c..e2eef02a39587 100644 --- a/packages/models/src/models/OAuthAuthCodes.ts +++ b/packages/models/src/models/OAuthAuthCodes.ts @@ -1,6 +1,6 @@ import type { IOAuthAuthCode, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IOAuthAuthCodesModel } from '@rocket.chat/model-typings'; -import type { Db, Collection, FindOptions, IndexDescription } from 'mongodb'; +import type { Db, Collection, DeleteResult, FindOptions, IndexDescription } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -10,7 +10,7 @@ export class OAuthAuthCodesRaw extends BaseRaw implements IOAuth } override modelIndexes(): IndexDescription[] { - return [{ key: { authCode: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 5 }]; + return [{ key: { authCode: 1 } }, { key: { userId: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 5 }]; } findOneByAuthCode(authCode: string, options?: FindOptions): Promise { @@ -19,4 +19,12 @@ export class OAuthAuthCodesRaw extends BaseRaw implements IOAuth } return this.findOne({ authCode }, options); } + + async deleteByUserId(userId: string): Promise { + return this.deleteMany({ userId }); + } + + async deleteByUserIds(userIds: string[]): Promise { + return this.deleteMany({ userId: { $in: userIds } }); + } } diff --git a/packages/models/src/models/OAuthRefreshTokens.ts b/packages/models/src/models/OAuthRefreshTokens.ts index 031dc0fa9dd75..7b48c0ddec7b1 100644 --- a/packages/models/src/models/OAuthRefreshTokens.ts +++ b/packages/models/src/models/OAuthRefreshTokens.ts @@ -1,6 +1,6 @@ import type { IOAuthRefreshToken, RocketChatRecordDeleted } from '@rocket.chat/core-typings'; import type { IOAuthRefreshTokensModel } from '@rocket.chat/model-typings'; -import type { Db, Collection, FindOptions, IndexDescription } from 'mongodb'; +import type { Db, Collection, DeleteResult, FindOptions, IndexDescription } from 'mongodb'; import { BaseRaw } from './BaseRaw'; @@ -10,7 +10,7 @@ export class OAuthRefreshTokensRaw extends BaseRaw implement } override modelIndexes(): IndexDescription[] { - return [{ key: { refreshToken: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }]; + return [{ key: { refreshToken: 1 } }, { key: { userId: 1 } }, { key: { expires: 1 }, expireAfterSeconds: 60 * 60 * 24 * 30 }]; } findOneByRefreshToken(refreshToken: string, options?: FindOptions): Promise { @@ -19,4 +19,12 @@ export class OAuthRefreshTokensRaw extends BaseRaw implement } return this.findOne({ refreshToken }, options); } + + async deleteByUserId(userId: string): Promise { + return this.deleteMany({ userId }); + } + + async deleteByUserIds(userIds: string[]): Promise { + return this.deleteMany({ userId: { $in: userIds } }); + } } From f3c2b8356043884f29c4d802668f3366a471c957 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Thu, 21 May 2026 13:56:49 +0000 Subject: [PATCH 27/69] Release 8.5.0-rc.0 --- .changeset/pre.json | 125 ++++++++++++++++++ apps/meteor/CHANGELOG.md | 125 ++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/ee/server/services/CHANGELOG.md | 16 +++ apps/meteor/ee/server/services/package.json | 2 +- apps/meteor/package.json | 2 +- apps/uikit-playground/CHANGELOG.md | 12 ++ apps/uikit-playground/package.json | 2 +- ee/apps/account-service/CHANGELOG.md | 14 ++ ee/apps/account-service/package.json | 2 +- ee/apps/authorization-service/CHANGELOG.md | 15 +++ ee/apps/authorization-service/package.json | 2 +- ee/apps/ddp-streamer/CHANGELOG.md | 15 +++ ee/apps/ddp-streamer/package.json | 2 +- ee/apps/omnichannel-transcript/CHANGELOG.md | 15 +++ ee/apps/omnichannel-transcript/package.json | 2 +- ee/apps/presence-service/CHANGELOG.md | 14 ++ ee/apps/presence-service/package.json | 2 +- ee/apps/queue-worker/CHANGELOG.md | 14 ++ ee/apps/queue-worker/package.json | 2 +- ee/packages/abac/CHANGELOG.md | 14 ++ ee/packages/abac/package.json | 2 +- ee/packages/federation-matrix/CHANGELOG.md | 13 ++ ee/packages/federation-matrix/package.json | 2 +- ee/packages/media-calls/CHANGELOG.md | 14 ++ ee/packages/media-calls/package.json | 2 +- ee/packages/network-broker/CHANGELOG.md | 9 ++ ee/packages/network-broker/package.json | 2 +- ee/packages/omni-core-ee/CHANGELOG.md | 11 ++ ee/packages/omni-core-ee/package.json | 2 +- ee/packages/omnichannel-services/CHANGELOG.md | 14 ++ ee/packages/omnichannel-services/package.json | 2 +- ee/packages/presence/CHANGELOG.md | 11 ++ ee/packages/presence/package.json | 2 +- package.json | 2 +- packages/apps-engine/CHANGELOG.md | 10 ++ packages/apps-engine/package.json | 2 +- packages/apps/CHANGELOG.md | 17 +++ packages/apps/package.json | 2 +- packages/core-services/CHANGELOG.md | 12 ++ packages/core-services/package.json | 2 +- packages/core-typings/CHANGELOG.md | 28 ++++ packages/core-typings/package.json | 2 +- packages/cron/CHANGELOG.md | 10 ++ packages/cron/package.json | 2 +- packages/ddp-client/CHANGELOG.md | 20 +++ packages/ddp-client/package.json | 2 +- packages/desktop-api/CHANGELOG.md | 19 +++ packages/desktop-api/package.json | 2 +- packages/fuselage-ui-kit/CHANGELOG.md | 15 +++ packages/fuselage-ui-kit/package.json | 2 +- packages/gazzodown/CHANGELOG.md | 15 +++ packages/gazzodown/package.json | 2 +- packages/i18n/CHANGELOG.md | 36 +++++ packages/i18n/package.json | 2 +- packages/instance-status/CHANGELOG.md | 9 ++ packages/instance-status/package.json | 2 +- packages/livechat/CHANGELOG.md | 10 ++ packages/livechat/package.json | 2 +- packages/mock-providers/CHANGELOG.md | 10 ++ packages/mock-providers/package.json | 2 +- packages/model-typings/CHANGELOG.md | 34 +++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 40 ++++++ packages/models/package.json | 2 +- packages/omni-core/CHANGELOG.md | 9 ++ packages/omni-core/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 33 +++++ packages/rest-typings/package.json | 2 +- packages/server-fetch/CHANGELOG.md | 9 ++ packages/server-fetch/package.json | 2 +- packages/ui-avatar/CHANGELOG.md | 9 ++ packages/ui-avatar/package.json | 2 +- packages/ui-client/CHANGELOG.md | 15 +++ packages/ui-client/package.json | 2 +- packages/ui-composer/CHANGELOG.md | 9 ++ packages/ui-composer/package.json | 4 +- packages/ui-contexts/CHANGELOG.md | 12 ++ packages/ui-contexts/package.json | 2 +- packages/ui-kit/CHANGELOG.md | 10 ++ packages/ui-kit/package.json | 2 +- packages/ui-video-conf/CHANGELOG.md | 10 ++ packages/ui-video-conf/package.json | 2 +- packages/ui-voip/CHANGELOG.md | 19 +++ packages/ui-voip/package.json | 2 +- packages/web-ui-registration/CHANGELOG.md | 26 ++++ packages/web-ui-registration/package.json | 4 +- 87 files changed, 943 insertions(+), 46 deletions(-) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000000..392dbba4de856 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,125 @@ +{ + "mode": "pre", + "tag": "rc", + "initialVersions": { + "@rocket.chat/meteor": "8.5.0-develop", + "rocketchat-services": "2.0.47", + "@rocket.chat/uikit-playground": "0.7.12", + "@rocket.chat/account-service": "0.4.56", + "@rocket.chat/authorization-service": "0.6.0", + "@rocket.chat/ddp-streamer": "0.3.56", + "@rocket.chat/omnichannel-transcript": "0.4.56", + "@rocket.chat/presence-service": "0.4.56", + "@rocket.chat/queue-worker": "0.4.56", + "@rocket.chat/abac": "0.2.0", + "@rocket.chat/federation-matrix": "0.1.3", + "@rocket.chat/license": "1.1.16", + "@rocket.chat/media-calls": "0.4.0", + "@rocket.chat/network-broker": "0.2.35", + "@rocket.chat/omni-core-ee": "0.0.21", + "@rocket.chat/omnichannel-services": "0.3.53", + "@rocket.chat/pdf-worker": "0.3.35", + "@rocket.chat/presence": "0.2.56", + "@rocket.chat/account-utils": "0.0.3", + "@rocket.chat/agenda": "0.1.1", + "@rocket.chat/api-client": "0.2.56", + "@rocket.chat/apps": "0.6.9", + "@rocket.chat/apps-engine": "1.62.0", + "@rocket.chat/base64": "1.0.14", + "@rocket.chat/cas-validate": "0.0.4", + "@rocket.chat/core-services": "0.14.0", + "@rocket.chat/core-typings": "8.5.0-develop", + "@rocket.chat/cron": "0.1.56", + "@rocket.chat/ddp-client": "1.0.9", + "@rocket.chat/desktop-api": "1.1.1", + "@rocket.chat/eslint-config": "0.8.0", + "@rocket.chat/favicon": "0.0.5", + "@rocket.chat/fuselage-ui-kit": "30.0.0", + "@rocket.chat/gazzodown": "30.0.0", + "@rocket.chat/http-router": "7.9.23", + "@rocket.chat/i18n": "3.0.0", + "@rocket.chat/instance-status": "0.1.56", + "@rocket.chat/jest-presets": "0.0.2", + "@rocket.chat/jwt": "0.2.1", + "@rocket.chat/livechat": "2.1.3", + "@rocket.chat/log-format": "0.0.3", + "@rocket.chat/logger": "1.0.1", + "@rocket.chat/media-signaling": "1.0.0", + "@rocket.chat/message-parser": "0.31.36", + "@rocket.chat/message-types": "0.1.1", + "@rocket.chat/mock-providers": "0.4.16", + "@rocket.chat/model-typings": "2.2.0", + "@rocket.chat/models": "2.2.0", + "@rocket.chat/mongo-adapter": "0.0.3", + "@rocket.chat/poplib": "0.0.3", + "@rocket.chat/omni-core": "0.1.0", + "@rocket.chat/password-policies": "0.1.1", + "@rocket.chat/patch-injection": "0.0.2", + "@rocket.chat/peggy-loader": "0.31.28", + "@rocket.chat/random": "1.2.3", + "@rocket.chat/release-action": "2.2.4", + "@rocket.chat/release-changelog": "0.1.1", + "@rocket.chat/rest-typings": "8.5.0-develop", + "@rocket.chat/server-cloud-communication": "0.0.3", + "@rocket.chat/server-fetch": "0.2.0", + "@rocket.chat/sha256": "1.0.13", + "@rocket.chat/storybook-config": "0.0.3", + "@rocket.chat/tools": "0.3.0", + "@rocket.chat/tracing": "0.0.2", + "@rocket.chat/tsconfig": "0.0.0", + "@rocket.chat/ui-avatar": "26.0.0", + "@rocket.chat/ui-client": "30.0.0", + "@rocket.chat/ui-composer": "1.0.0", + "@rocket.chat/ui-contexts": "30.0.0", + "@rocket.chat/ui-kit": "1.0.0", + "@rocket.chat/ui-video-conf": "30.0.0", + "@rocket.chat/ui-voip": "20.0.0", + "@rocket.chat/web-ui-registration": "30.0.0" + }, + "changesets": [ + "angry-baboons-trade", + "beige-parrots-lead", + "big-corners-tie", + "brave-fans-tie", + "brown-files-work", + "calm-seas-run", + "clever-zebras-melt", + "ddp-client-idempotent-reconnect", + "ddp-client-reset-retry-count", + "ddp-dispatcher-non-method-frames", + "dry-squids-wonder", + "edit-room-info-multiselect-aria-label", + "eight-clouds-count", + "fix-presence-comma-ids", + "flat-islands-nail", + "flat-poets-cheat", + "good-rules-lie", + "hot-impalas-vanish", + "hot-spoons-heal", + "little-cars-love", + "lovely-laws-wait", + "major-coats-smash", + "mighty-icons-kiss", + "neat-trams-juggle", + "ninety-lilies-kick", + "orange-bottles-glow", + "perky-tires-invite", + "pink-moons-cheer", + "public-ravens-like", + "red-maps-wink", + "rich-doodles-grow", + "room-search-index", + "sanitize-image-element-url", + "sdk-account-event-handlers", + "shaggy-kiwis-burn", + "sharp-planets-throw", + "spicy-phones-breathe", + "stale-needles-care", + "ten-lizards-divide", + "tidy-donuts-check", + "tricky-kiwis-sit", + "use-format-date-fallback", + "use-rc-sdk-transport-setting", + "witty-ravens-end" + ] +} diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 3c8f58e820083..6dcbea6be065e 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,130 @@ # @rocket.chat/meteor +## 8.5.0-rc.0 + +### Minor Changes + +- ([#40343](https://github.com/RocketChat/Rocket.Chat/pull/40343)) Swap usage of internal @rocket.chat/apps-engine internal APIs to @rocket.chat/apps package + +- ([#40408](https://github.com/RocketChat/Rocket.Chat/pull/40408)) Adds 4 new permissions (assigned to admins by default) to control the visibility of each tab inside the ABAC Administration panel + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- ([#40341](https://github.com/RocketChat/Rocket.Chat/pull/40341)) Hides the room announcement, topic and description from the Administration > Rooms panel for ABAC managed rooms. In the channel sidebar Edit Channel form those fields stay visible to room members but are disabled, and the API rejects edits to them. + +- ([#39617](https://github.com/RocketChat/Rocket.Chat/pull/39617)) Adds new API endpoints `custom-sounds.create` and `custom-sounds.update` to manage custom sounds with strict file validation for size and specific MIME types to ensure system compatibility. + +- ([#40463](https://github.com/RocketChat/Rocket.Chat/pull/40463)) Allows apps with the right permission to read room's ABAC attributes. + +- ([#40604](https://github.com/RocketChat/Rocket.Chat/pull/40604)) Adds the capability for fetching a user by their sip extension to the apps + +- ([#38225](https://github.com/RocketChat/Rocket.Chat/pull/38225)) Adds a new "Drafts" group to the sidebar, providing quick access to all rooms with unfinished messages. + > This feature is available under the `Drafts in sidebar` feature preview and needs to be enabled in settings to be tested. +- ([#40397](https://github.com/RocketChat/Rocket.Chat/pull/40397)) Adds the `USE_ROOM_SEARCH_INDEX` environment variable. When set to `true`, the messages collection's text index is created as `{ rid: 1, msg: 'text' }` instead of the default `{ msg: 'text' }`. The compound shape lets per-room `$text` searches use `rid` as a prefix, dramatically reducing the portion of the index scanned on workspaces where global search is disabled. + + The index is reconciled on every startup: if the existing text index already matches the desired shape, nothing happens; otherwise the stale text index is dropped and the desired one is recreated. Unsetting the variable on a later boot reverts to the default shape. + +- ([#40612](https://github.com/RocketChat/Rocket.Chat/pull/40612)) Adds `freeSwitchExtension` as a query parameter for `api/v1/users.info` + +- ([#39858](https://github.com/RocketChat/Rocket.Chat/pull/39858)) Adds support to room information on ViewSubmit and ViewClose events for ContextualBar surface + +- ([#40430](https://github.com/RocketChat/Rocket.Chat/pull/40430)) Adds a new admin setting `Use_RC_SDK` (General → Use Rocket.Chat SDK) that opts the workspace into the experimental SDK-over-DDP transport. When enabled, the client routes Meteor DDP traffic through `@rocket.chat/ddp-client` over a single WebSocket instead of the legacy Meteor stream. The flag is dormant by default; the server surfaces the value via a `` tag, and the client also honors a per-tab `?sdk_transport=on|off` URL parameter and a `rc-config-sdk_transport` localStorage key (URL > localStorage > meta tag). + +### Patch Changes + +- ([#39858](https://github.com/RocketChat/Rocket.Chat/pull/39858)) Fixes an issue that prevented BlockAction interactions from having room information when triggered in a ContextualBar surface + +- ([#40524](https://github.com/RocketChat/Rocket.Chat/pull/40524)) Ensures OAuth tokens are cleaned up after user deactivation + +- ([#40537](https://github.com/RocketChat/Rocket.Chat/pull/40537)) Fixes an issue that allowed a room converted from private to public (while abac is disabled) to retain its abac attributes (if any) + +- ([#39859](https://github.com/RocketChat/Rocket.Chat/pull/39859)) Fixes an issue where thread content would disappear after clicking "Jump to recent messages". + +- ([#40063](https://github.com/RocketChat/Rocket.Chat/pull/40063)) Fixes the missing edited indicator for the main parent message in the thread panel to ensure visual consistency with the main channel view. + +- ([#40357](https://github.com/RocketChat/Rocket.Chat/pull/40357)) Adds an accessible label to the system-messages multi-select in the channel edit panel so screen readers announce its purpose. + +- ([#40100](https://github.com/RocketChat/Rocket.Chat/pull/40100)) Fixes intermittent "Channel Not Joined" screen when opening rooms in embedded mode. + +- ([#40513](https://github.com/RocketChat/Rocket.Chat/pull/40513)) Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration + +- ([#40496](https://github.com/RocketChat/Rocket.Chat/pull/40496)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Disables SAML login when it is set to validate signatures without the proper configuration for it + +- ([#40423](https://github.com/RocketChat/Rocket.Chat/pull/40423)) Allows users to search for attribute values when assigning them to rooms + +- ([#40335](https://github.com/RocketChat/Rocket.Chat/pull/40335)) Fixes test button not playing default sound in Notifications Preferences + +- ([#40528](https://github.com/RocketChat/Rocket.Chat/pull/40528)) Ensures the Meteor method for translateMessage validates access and types + +- ([#40420](https://github.com/RocketChat/Rocket.Chat/pull/40420)) Fixes Insert Timestamp relative time preview not updating on input changes and losing the user's locale after the first refresh tick. + +- ([#40456](https://github.com/RocketChat/Rocket.Chat/pull/40456)) Fixes signed URL generation for S3 and Google Cloud Storage when the expiry setting is below 5 seconds, which previously caused expired or invalid preview URLs. Adds a dedicated URL expiry setting for Google Cloud Storage since it was incorrectly reusing the AWS S3 setting. + +- ([#40501](https://github.com/RocketChat/Rocket.Chat/pull/40501)) Ensures the visitor token is not present in the visitors.info response + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +- ([#40613](https://github.com/RocketChat/Rocket.Chat/pull/40613)) Sanitizes image URLs in rendered messages to block `javascript:`, `data:`, and `vbscript:` schemes — matching the protection already applied to markdown links. Defense-in-depth against XSS via crafted markdown like `![label](javascript:...)`. + +- ([#40508](https://github.com/RocketChat/Rocket.Chat/pull/40508)) Ensures the autotranslate.translateMessage endpoint checks for room access + +- ([#40448](https://github.com/RocketChat/Rocket.Chat/pull/40448)) Fixes action buttons added by apps being rendered in the Marketplace Menu rather than the User Menu + +- ([#40499](https://github.com/RocketChat/Rocket.Chat/pull/40499)) Fixes an issue where some actions made by the abac service were not broadcasting to clients, which affected reactivity + +- ([#40492](https://github.com/RocketChat/Rocket.Chat/pull/40492)) Fixes issue that displayed the 'Delete all closed chats' button when user lacks `remove-closed-livechat-rooms` permission + +- ([#40393](https://github.com/RocketChat/Rocket.Chat/pull/40393)) Fixes a `date-fns` crash on routes that mount before the public settings stream finishes loading. `useFormatDate` was passing `String(undefined)` (the literal `"undefined"`) to `formatDate` while `Message_DateFormat` was momentarily unloaded — `date-fns` rejects that token because it contains an unescaped `n`. The hook now uses `'LL'` as the default token via `useSetting`'s second argument, so the formatter always receives a valid format string. + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, cdb264fec803e234a6ad2000018b31d4b2074e99, 2a927fa1362c9d4bb04bb8e26f23a6e3753d9cea, bede0e2528bb053cb913e93ccf30d78a1c84bc76, bede0e2528bb053cb913e93ccf30d78a1c84bc76, bede0e2528bb053cb913e93ccf30d78a1c84bc76, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, 7f2bdf1809804de7a95c54c3892da30f058ee13d, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, ad7d42400ea36f1eb0aaf7cc3361c77fdabf9ebc, 4704bf81ca370f120af32185a7c55407a26f8514, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, ebc9babf55dd26613027c28dcacf77909116b342, f392d5cc8d956c199f557dcd6beb52094232499d, 2198d9ea565b06f92e3dec29891890086f62f9df, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, 0b7a76367d650793c271160e01798ebbb5fe0d26, 51833064591b91140d17e403389e1abbc5d9ef7a, 2d32e52073dd1a68bd12a093b3a673ae297cb4ee, 2a927fa1362c9d4bb04bb8e26f23a6e3753d9cea, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6, 90f15e32ae843ed146ccf711ee3201408d1e8731, 22c8d3283f0ea3004fe94c51f8bb32dfb40a0f4f]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/i18n@3.1.0-rc.0 + - @rocket.chat/apps-engine@1.63.0-rc.0 + - @rocket.chat/ddp-client@1.1.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/ui-voip@21.0.0-rc.0 + - @rocket.chat/web-ui-registration@31.0.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/gazzodown@31.0.0-rc.0 + - @rocket.chat/apps@0.7.0-rc.0 + - @rocket.chat/ui-client@31.0.0-rc.0 + - @rocket.chat/abac@0.2.1-rc.0 + - @rocket.chat/media-calls@0.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/fuselage-ui-kit@31.0.0-rc.0 + - @rocket.chat/omnichannel-services@0.3.54-rc.0 + - @rocket.chat/federation-matrix@0.1.4-rc.0 + - @rocket.chat/omni-core-ee@0.0.22-rc.0 + - @rocket.chat/presence@0.2.57-rc.0 + - @rocket.chat/cron@0.1.57-rc.0 + - @rocket.chat/instance-status@0.1.57-rc.0 + - @rocket.chat/omni-core@0.1.1-rc.0 + - @rocket.chat/server-fetch@0.2.1-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-composer@2.0.0-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 + - @rocket.chat/ui-video-conf@31.0.0-rc.0 +
+ ## 8.4.0 ### Minor Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 277ec8a3fd71f..e5d3d3dc9dd70 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "8.5.0-develop" + "version": "8.5.0-rc.0" } diff --git a/apps/meteor/ee/server/services/CHANGELOG.md b/apps/meteor/ee/server/services/CHANGELOG.md index e2183cfed4a31..9ddfde65b57ec 100644 --- a/apps/meteor/ee/server/services/CHANGELOG.md +++ b/apps/meteor/ee/server/services/CHANGELOG.md @@ -1,5 +1,21 @@ # rocketchat-services +## 2.0.48-rc.0 + +### Patch Changes + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 2a927fa1362c9d4bb04bb8e26f23a6e3753d9cea, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, f392d5cc8d956c199f557dcd6beb52094232499d, 2198d9ea565b06f92e3dec29891890086f62f9df, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/apps-engine@1.63.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 2.0.47 ### Patch Changes diff --git a/apps/meteor/ee/server/services/package.json b/apps/meteor/ee/server/services/package.json index 77b26bef19a64..249a969cb25af 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": "2.0.47", + "version": "2.0.48-rc.0", "description": "Rocket.Chat Authorization service", "main": "index.js", "scripts": { diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 0751d9d0f615a..4c79126fae77c 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/meteor", - "version": "8.5.0-develop", + "version": "8.5.0-rc.0", "private": true, "description": "The Ultimate Open Source WebChat Platform", "keywords": [ diff --git a/apps/uikit-playground/CHANGELOG.md b/apps/uikit-playground/CHANGELOG.md index 67794c1dae733..a45c2acc460c2 100644 --- a/apps/uikit-playground/CHANGELOG.md +++ b/apps/uikit-playground/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/uikit-playground +## 0.7.13-rc.0 + +### Patch Changes + +-
Updated dependencies [ae9f740d6af20557eac61b4af902c868b4132b49, 12897e25d0dc25b7373f5264d38f38a5a7444257]: + + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/fuselage-ui-kit@31.0.0-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 +
+ ## 0.7.12 ### Patch Changes diff --git a/apps/uikit-playground/package.json b/apps/uikit-playground/package.json index 392e9a3d9e1be..307507664ea57 100644 --- a/apps/uikit-playground/package.json +++ b/apps/uikit-playground/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/uikit-playground", - "version": "0.7.12", + "version": "0.7.13-rc.0", "private": true, "type": "module", "scripts": { diff --git a/ee/apps/account-service/CHANGELOG.md b/ee/apps/account-service/CHANGELOG.md index 249c8bd30b675..4d0fbf4251676 100644 --- a/ee/apps/account-service/CHANGELOG.md +++ b/ee/apps/account-service/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/account-service +## 0.4.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.4.56 ### Patch Changes diff --git a/ee/apps/account-service/package.json b/ee/apps/account-service/package.json index e31f7a1c992ff..e1c41159f0d5d 100644 --- a/ee/apps/account-service/package.json +++ b/ee/apps/account-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/account-service", - "version": "0.4.56", + "version": "0.4.57-rc.0", "private": true, "description": "Rocket.Chat Account service", "keywords": [ diff --git a/ee/apps/authorization-service/CHANGELOG.md b/ee/apps/authorization-service/CHANGELOG.md index 7c3279fde4dca..ce7f805e4263f 100644 --- a/ee/apps/authorization-service/CHANGELOG.md +++ b/ee/apps/authorization-service/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/authorization-service +## 0.6.1-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, 2d32e52073dd1a68bd12a093b3a673ae297cb4ee, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/abac@0.2.1-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.6.0 ### Minor Changes diff --git a/ee/apps/authorization-service/package.json b/ee/apps/authorization-service/package.json index e8a30772c68e6..5e084236da948 100644 --- a/ee/apps/authorization-service/package.json +++ b/ee/apps/authorization-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/authorization-service", - "version": "0.6.0", + "version": "0.6.1-rc.0", "private": true, "description": "Rocket.Chat Authorization service", "keywords": [ diff --git a/ee/apps/ddp-streamer/CHANGELOG.md b/ee/apps/ddp-streamer/CHANGELOG.md index 0a194196e7b09..36f1713ef4755 100644 --- a/ee/apps/ddp-streamer/CHANGELOG.md +++ b/ee/apps/ddp-streamer/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/ddp-streamer +## 0.3.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/instance-status@0.1.57-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.3.56 ### Patch Changes diff --git a/ee/apps/ddp-streamer/package.json b/ee/apps/ddp-streamer/package.json index 5208f5ada06d0..d13eb3839a502 100644 --- a/ee/apps/ddp-streamer/package.json +++ b/ee/apps/ddp-streamer/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-streamer", - "version": "0.3.56", + "version": "0.3.57-rc.0", "private": true, "description": "Rocket.Chat DDP-Streamer service", "keywords": [ diff --git a/ee/apps/omnichannel-transcript/CHANGELOG.md b/ee/apps/omnichannel-transcript/CHANGELOG.md index 4dc2de0269cc7..b76a7843eeacb 100644 --- a/ee/apps/omnichannel-transcript/CHANGELOG.md +++ b/ee/apps/omnichannel-transcript/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/omnichannel-transcript +## 0.4.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, cdb264fec803e234a6ad2000018b31d4b2074e99, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, ad7d42400ea36f1eb0aaf7cc3361c77fdabf9ebc, 4704bf81ca370f120af32185a7c55407a26f8514, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, ebc9babf55dd26613027c28dcacf77909116b342, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/i18n@3.1.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/omnichannel-services@0.3.54-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.4.56 ### Patch Changes diff --git a/ee/apps/omnichannel-transcript/package.json b/ee/apps/omnichannel-transcript/package.json index bfad54193420d..424680c570812 100644 --- a/ee/apps/omnichannel-transcript/package.json +++ b/ee/apps/omnichannel-transcript/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-transcript", - "version": "0.4.56", + "version": "0.4.57-rc.0", "private": true, "description": "Rocket.Chat service", "keywords": [ diff --git a/ee/apps/presence-service/CHANGELOG.md b/ee/apps/presence-service/CHANGELOG.md index c139726a55dec..fdc6287449bdb 100644 --- a/ee/apps/presence-service/CHANGELOG.md +++ b/ee/apps/presence-service/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/presence-service +## 0.4.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/presence@0.2.57-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.4.56 ### Patch Changes diff --git a/ee/apps/presence-service/package.json b/ee/apps/presence-service/package.json index f181146320eac..5fd31e749e623 100644 --- a/ee/apps/presence-service/package.json +++ b/ee/apps/presence-service/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence-service", - "version": "0.4.56", + "version": "0.4.57-rc.0", "private": true, "description": "Rocket.Chat Presence service", "keywords": [ diff --git a/ee/apps/queue-worker/CHANGELOG.md b/ee/apps/queue-worker/CHANGELOG.md index c439ba194514d..b83655b9b2d06 100644 --- a/ee/apps/queue-worker/CHANGELOG.md +++ b/ee/apps/queue-worker/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/queue-worker +## 0.4.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/omnichannel-services@0.3.54-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.4.56 ### Patch Changes diff --git a/ee/apps/queue-worker/package.json b/ee/apps/queue-worker/package.json index d1ba5b797aa56..34edf3bd14b82 100644 --- a/ee/apps/queue-worker/package.json +++ b/ee/apps/queue-worker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/queue-worker", - "version": "0.4.56", + "version": "0.4.57-rc.0", "private": true, "description": "Rocket.Chat service", "keywords": [ diff --git a/ee/packages/abac/CHANGELOG.md b/ee/packages/abac/CHANGELOG.md index 1fc9f380f9692..d9a9b891d3450 100644 --- a/ee/packages/abac/CHANGELOG.md +++ b/ee/packages/abac/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/abac +## 0.2.1-rc.0 + +### Patch Changes + +- ([#40499](https://github.com/RocketChat/Rocket.Chat/pull/40499)) Fixes an issue where some actions made by the abac service were not broadcasting to clients, which affected reactivity + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/server-fetch@0.2.1-rc.0 +
+ ## 0.2.0 ### Minor Changes diff --git a/ee/packages/abac/package.json b/ee/packages/abac/package.json index 44d0db08a735b..f55a0fa8e1adf 100644 --- a/ee/packages/abac/package.json +++ b/ee/packages/abac/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/abac", - "version": "0.2.0", + "version": "0.2.1-rc.0", "private": true, "description": "Rocket.Chat - Attribute Based Access Control (ABAC) support utilities", "main": "./dist/index.js", diff --git a/ee/packages/federation-matrix/CHANGELOG.md b/ee/packages/federation-matrix/CHANGELOG.md index 3b6121e4719b2..977e428d6922f 100644 --- a/ee/packages/federation-matrix/CHANGELOG.md +++ b/ee/packages/federation-matrix/CHANGELOG.md @@ -1,5 +1,18 @@ # @rocket.chat/federation-matrix +## 0.1.4-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/network-broker@0.2.36-rc.0 +
+ ## 0.1.3 ### Patch Changes diff --git a/ee/packages/federation-matrix/package.json b/ee/packages/federation-matrix/package.json index e28e6ec097f1c..a77f634795cc2 100644 --- a/ee/packages/federation-matrix/package.json +++ b/ee/packages/federation-matrix/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/federation-matrix", - "version": "0.1.3", + "version": "0.1.4-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/media-calls/CHANGELOG.md b/ee/packages/media-calls/CHANGELOG.md index 505fa6860b453..95d8f14348153 100644 --- a/ee/packages/media-calls/CHANGELOG.md +++ b/ee/packages/media-calls/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/media-calls +## 0.5.0-rc.0 + +### Minor Changes + +- ([#40197](https://github.com/RocketChat/Rocket.Chat/pull/40197)) Fixes a server error when Drachtio connection is lost while a SIP call is active + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 0.4.0 ### Minor Changes diff --git a/ee/packages/media-calls/package.json b/ee/packages/media-calls/package.json index 3216f8e6f4a47..e169a8a296835 100644 --- a/ee/packages/media-calls/package.json +++ b/ee/packages/media-calls/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/media-calls", - "version": "0.4.0", + "version": "0.5.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/network-broker/CHANGELOG.md b/ee/packages/network-broker/CHANGELOG.md index 7d84d2a057a6e..da837d2304491 100644 --- a/ee/packages/network-broker/CHANGELOG.md +++ b/ee/packages/network-broker/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/network-broker +## 0.2.36-rc.0 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-services@0.14.1-rc.0 +
+ ## 0.2.35 ### Patch Changes diff --git a/ee/packages/network-broker/package.json b/ee/packages/network-broker/package.json index b7eb298176ea5..47332280e2a95 100644 --- a/ee/packages/network-broker/package.json +++ b/ee/packages/network-broker/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/network-broker", - "version": "0.2.35", + "version": "0.2.36-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/omni-core-ee/CHANGELOG.md b/ee/packages/omni-core-ee/CHANGELOG.md index 7f4d11f241498..d925016fd8ec0 100644 --- a/ee/packages/omni-core-ee/CHANGELOG.md +++ b/ee/packages/omni-core-ee/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/omni-core-ee +## 0.0.22-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 + - @rocket.chat/omni-core@0.1.1-rc.0 +
+ ## 0.0.21 ### Patch Changes diff --git a/ee/packages/omni-core-ee/package.json b/ee/packages/omni-core-ee/package.json index 82e25524f151c..d89b050da59a6 100644 --- a/ee/packages/omni-core-ee/package.json +++ b/ee/packages/omni-core-ee/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core-ee", - "version": "0.0.21", + "version": "0.0.22-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/omnichannel-services/CHANGELOG.md b/ee/packages/omnichannel-services/CHANGELOG.md index f59907529b2f8..73200859b4331 100644 --- a/ee/packages/omnichannel-services/CHANGELOG.md +++ b/ee/packages/omnichannel-services/CHANGELOG.md @@ -1,5 +1,19 @@ # @rocket.chat/omnichannel-services +## 0.3.54-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, cdb264fec803e234a6ad2000018b31d4b2074e99, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, ad7d42400ea36f1eb0aaf7cc3361c77fdabf9ebc, 4704bf81ca370f120af32185a7c55407a26f8514, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, ebc9babf55dd26613027c28dcacf77909116b342, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/i18n@3.1.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 +
+ ## 0.3.53 ### Patch Changes diff --git a/ee/packages/omnichannel-services/package.json b/ee/packages/omnichannel-services/package.json index ce32a970cb410..0b3c3e3db7354 100644 --- a/ee/packages/omnichannel-services/package.json +++ b/ee/packages/omnichannel-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omnichannel-services", - "version": "0.3.53", + "version": "0.3.54-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/ee/packages/presence/CHANGELOG.md b/ee/packages/presence/CHANGELOG.md index c78e84e7569da..c5d5499d2de02 100644 --- a/ee/packages/presence/CHANGELOG.md +++ b/ee/packages/presence/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/presence +## 0.2.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/core-services@0.14.1-rc.0 +
+ ## 0.2.56 ### Patch Changes diff --git a/ee/packages/presence/package.json b/ee/packages/presence/package.json index d9fff7da45563..75521c5c16e14 100644 --- a/ee/packages/presence/package.json +++ b/ee/packages/presence/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/presence", - "version": "0.2.56", + "version": "0.2.57-rc.0", "private": true, "main": "./dist/Presence.js", "typings": "./dist/Presence.d.ts", diff --git a/package.json b/package.json index c8de9455d5486..78425f54bbd73 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "8.5.0-develop", + "version": "8.5.0-rc.0", "private": true, "description": "Rocket.Chat Monorepo", "homepage": "https://github.com/RocketChat/Rocket.Chat#readme", diff --git a/packages/apps-engine/CHANGELOG.md b/packages/apps-engine/CHANGELOG.md index b8d579c872f13..0ed0a6367faa6 100644 --- a/packages/apps-engine/CHANGELOG.md +++ b/packages/apps-engine/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/apps-engine +## 1.63.0-rc.0 + +### Minor Changes + +- ([#40343](https://github.com/RocketChat/Rocket.Chat/pull/40343)) Remove files that weren't accessible to apps at development time + +- ([#40463](https://github.com/RocketChat/Rocket.Chat/pull/40463)) Allows apps with the right permission to read room's ABAC attributes. + +- ([#40604](https://github.com/RocketChat/Rocket.Chat/pull/40604)) Adds the capability for fetching a user by their sip extension to the apps + ## 1.62.0 ### Minor Changes diff --git a/packages/apps-engine/package.json b/packages/apps-engine/package.json index a160cbd2952e2..c9ce28ba13533 100644 --- a/packages/apps-engine/package.json +++ b/packages/apps-engine/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps-engine", - "version": "1.62.0", + "version": "1.63.0-rc.0", "description": "The public API and type definitions for Rocket.Chat App development.", "keywords": [ "rocket.chat", diff --git a/packages/apps/CHANGELOG.md b/packages/apps/CHANGELOG.md index 891ff26383ddc..3e0c9e8eb77a4 100644 --- a/packages/apps/CHANGELOG.md +++ b/packages/apps/CHANGELOG.md @@ -1,5 +1,22 @@ # @rocket.chat/apps +## 0.7.0-rc.0 + +### Minor Changes + +- ([#40463](https://github.com/RocketChat/Rocket.Chat/pull/40463)) Allows apps with the right permission to read room's ABAC attributes. + +- ([#40343](https://github.com/RocketChat/Rocket.Chat/pull/40343)) Receives the migration of internal files from @rocket.chat/apps-engine + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 2a927fa1362c9d4bb04bb8e26f23a6e3753d9cea, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, f392d5cc8d956c199f557dcd6beb52094232499d, 2198d9ea565b06f92e3dec29891890086f62f9df, 12897e25d0dc25b7373f5264d38f38a5a7444257]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/apps-engine@1.63.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 0.6.9 ### Patch Changes diff --git a/packages/apps/package.json b/packages/apps/package.json index 3b564d197d9f8..c9f9e0a0e2d73 100644 --- a/packages/apps/package.json +++ b/packages/apps/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/apps", - "version": "0.6.9", + "version": "0.7.0-rc.0", "private": true, "main": "./dist/index.js", "types": "./dist/index.d.ts", diff --git a/packages/core-services/CHANGELOG.md b/packages/core-services/CHANGELOG.md index e58ec2460dd3b..3172d028dd1aa 100644 --- a/packages/core-services/CHANGELOG.md +++ b/packages/core-services/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/core-services +## 0.14.1-rc.0 + +### Patch Changes + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 0.14.0 ### Minor Changes diff --git a/packages/core-services/package.json b/packages/core-services/package.json index 30f4f74e1e5a7..3abf2998ad70e 100644 --- a/packages/core-services/package.json +++ b/packages/core-services/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/core-services", - "version": "0.14.0", + "version": "0.14.1-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 98827137dac88..103ab74f7442d 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,33 @@ # @rocket.chat/core-typings +## 8.5.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +### Patch Changes + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 +
+ ## 8.4.0 ### Minor Changes diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 7bfb454b59f4d..78743aef56f27 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", - "version": "8.5.0-develop", + "version": "8.5.0-rc.0", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/cron/CHANGELOG.md b/packages/cron/CHANGELOG.md index 78e2f6fec3e88..825fe271ff080 100644 --- a/packages/cron/CHANGELOG.md +++ b/packages/cron/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/cron +## 0.1.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 0.1.56 ### Patch Changes diff --git a/packages/cron/package.json b/packages/cron/package.json index 8e5d95f4d5042..572d3196610a5 100644 --- a/packages/cron/package.json +++ b/packages/cron/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/cron", - "version": "0.1.56", + "version": "0.1.57-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ddp-client/CHANGELOG.md b/packages/ddp-client/CHANGELOG.md index 4e8e6d40f9265..7d46da1237ad6 100644 --- a/packages/ddp-client/CHANGELOG.md +++ b/packages/ddp-client/CHANGELOG.md @@ -1,5 +1,25 @@ # @rocket.chat/ddp-client +## 1.1.0-rc.0 + +### Minor Changes + +- ([#40442](https://github.com/RocketChat/Rocket.Chat/pull/40442)) Add lifecycle event handlers to `Account`: `onLogin`, `onLogout`, `onEmailVerificationLink`, and `onPageLoadLogin`. `onLogin` / `onLogout` fire on `uid` transitions (the setter now emits only when the value changes, so a single login or logout produces exactly one callback). `onEmailVerificationLink` and `onPageLoadLogin` are convenience wrappers around new `Emitter` events of the same names — fire them externally with `account.emit('emailVerificationLink', token)` / `account.emit('pageLoadLogin', loginAttempt)`. The bridge from Meteor's accounts-base lives in the consumer (`apps/meteor/client`) so the package stays Meteor-independent. All four handlers return an unsubscribe function. + +### Patch Changes + +- ([#40307](https://github.com/RocketChat/Rocket.Chat/pull/40307)) Make `Connection.connect()` and `Connection.reconnect()` idempotent. Previously they rejected with `Error('Connection in progress')` when called while a connection was already in flight or established. Because the internal retry timer (`ws.onclose` → `setTimeout(() => void this.reconnect(), …)`) fires with no `.catch`, that rejection surfaced as an unhandled rejection at the page level whenever an external caller (e.g. an SDK consumer's bootstrap path) won the race against the timer. While `status === 'connecting'`, both methods now return the in-flight handshake promise so a later `failed` payload still propagates to every caller instead of being masked by a synthesized success; while `status === 'connected'` they resolve with `true`. The timer also no-ops when the connection has already been re-established, and a stale `ws.onclose` from a replaced socket no longer clobbers the new socket's status or schedules a redundant retry. + +- ([#40307](https://github.com/RocketChat/Rocket.Chat/pull/40307)) Reset `Connection.retryCount` to zero on a successful (re)connection. The counter was only ever incremented (in `ws.onclose`), never zeroed, so the retry budget was monotonically consumed across the connection's lifetime. With the default budget of `1`, any chain of two close events — for example the SDK reconnecting after a server force-logout, then the client running a follow-up `Meteor.logout()` whose server handler closes the WS again — drained the budget; the second close handler bailed at `retryCount >= retryOptions.retryCount` and the SDK stayed permanently disconnected. Method frames already in the dispatcher queue (e.g. a fresh `login` retry from the consumer) stayed queued forever. + +- ([#40307](https://github.com/RocketChat/Rocket.Chat/pull/40307)) Fix `DDPDispatcher` dropping non-method frames (connect, sub, unsub, ping, pong) when a `wait` block is at the head of the queue. Previously every payload flowed through the same wait-serialization path: a `connect` frame dispatched after a `wait: true` method (e.g. `login`) would be queued in a new non-wait block but never actually sent, wedging the DDP handshake — the socket stayed open, the server never replied `connected`, and any caller awaiting the connection hung. Non-method payloads now bypass the queue and emit immediately; wait-method serialization between methods is unchanged. + +-
Updated dependencies [4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 1.0.9 ### Patch Changes diff --git a/packages/ddp-client/package.json b/packages/ddp-client/package.json index f8588c1547d7e..3b21c53060dba 100644 --- a/packages/ddp-client/package.json +++ b/packages/ddp-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ddp-client", - "version": "1.0.9", + "version": "1.1.0-rc.0", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/desktop-api/CHANGELOG.md b/packages/desktop-api/CHANGELOG.md index afb32ffd788fd..12993d56b459c 100644 --- a/packages/desktop-api/CHANGELOG.md +++ b/packages/desktop-api/CHANGELOG.md @@ -1,5 +1,24 @@ # @rocket.chat/desktop-api +## 1.2.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + ## 1.1.1 ### Patch Changes diff --git a/packages/desktop-api/package.json b/packages/desktop-api/package.json index 63515e73dd0dc..437511092b7a5 100644 --- a/packages/desktop-api/package.json +++ b/packages/desktop-api/package.json @@ -1,7 +1,7 @@ { "$schema": "https://www.schemastore.org/package", "name": "@rocket.chat/desktop-api", - "version": "1.1.1", + "version": "1.2.0-rc.0", "type": "module", "exports": { ".": { diff --git a/packages/fuselage-ui-kit/CHANGELOG.md b/packages/fuselage-ui-kit/CHANGELOG.md index 525894e528588..03e737b60e6e3 100644 --- a/packages/fuselage-ui-kit/CHANGELOG.md +++ b/packages/fuselage-ui-kit/CHANGELOG.md @@ -1,5 +1,20 @@ # Change Log +## 31.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, 2a927fa1362c9d4bb04bb8e26f23a6e3753d9cea, ae9f740d6af20557eac61b4af902c868b4132b49, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, f392d5cc8d956c199f557dcd6beb52094232499d, 2198d9ea565b06f92e3dec29891890086f62f9df, 12897e25d0dc25b7373f5264d38f38a5a7444257, 0b7a76367d650793c271160e01798ebbb5fe0d26, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/apps-engine@1.63.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/gazzodown@31.0.0-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 + - @rocket.chat/ui-video-conf@31.0.0-rc.0 +
+ ## 30.0.0 ### Patch Changes diff --git a/packages/fuselage-ui-kit/package.json b/packages/fuselage-ui-kit/package.json index e188f1323d041..b4595caf07b00 100644 --- a/packages/fuselage-ui-kit/package.json +++ b/packages/fuselage-ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/fuselage-ui-kit", - "version": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "description": "UiKit elements for Rocket.Chat Apps built under Fuselage design system", "homepage": "https://rocketchat.github.io/Rocket.Chat.Fuselage/", diff --git a/packages/gazzodown/CHANGELOG.md b/packages/gazzodown/CHANGELOG.md index 47c0e98a5319e..e1750a28b28de 100644 --- a/packages/gazzodown/CHANGELOG.md +++ b/packages/gazzodown/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/gazzodown +## 31.0.0-rc.0 + +### Patch Changes + +- ([#40420](https://github.com/RocketChat/Rocket.Chat/pull/40420)) Fixes Insert Timestamp relative time preview not updating on input changes and losing the user's locale after the first refresh tick. + +- ([#40613](https://github.com/RocketChat/Rocket.Chat/pull/40613)) Sanitizes image URLs in rendered messages to block `javascript:`, `data:`, and `vbscript:` schemes — matching the protection already applied to markdown links. Defense-in-depth against XSS via crafted markdown like `![label](javascript:...)`. + +-
Updated dependencies [ae9f740d6af20557eac61b4af902c868b4132b49, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257]: + + - @rocket.chat/core-typings@8.5.0-rc.0 + - @rocket.chat/ui-client@31.0.0-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 +
+ ## 30.0.0 ### Patch Changes diff --git a/packages/gazzodown/package.json b/packages/gazzodown/package.json index a481b8f6cc6ff..09f9edd92921a 100644 --- a/packages/gazzodown/package.json +++ b/packages/gazzodown/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/gazzodown", - "version": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/i18n/CHANGELOG.md b/packages/i18n/CHANGELOG.md index cebc35828abb8..e07cbaadf6022 100644 --- a/packages/i18n/CHANGELOG.md +++ b/packages/i18n/CHANGELOG.md @@ -1,5 +1,41 @@ # @rocket.chat/i18n +## 3.1.0-rc.0 + +### Minor Changes + +- ([#40408](https://github.com/RocketChat/Rocket.Chat/pull/40408)) Adds 4 new permissions (assigned to admins by default) to control the visibility of each tab inside the ABAC Administration panel + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- ([#40331](https://github.com/RocketChat/Rocket.Chat/pull/40331)) Adds "Open in room" button to shared screen card on voice call widget + +- ([#39617](https://github.com/RocketChat/Rocket.Chat/pull/39617)) Adds new API endpoints `custom-sounds.create` and `custom-sounds.update` to manage custom sounds with strict file validation for size and specific MIME types to ensure system compatibility. + +- ([#38225](https://github.com/RocketChat/Rocket.Chat/pull/38225)) Adds a new "Drafts" group to the sidebar, providing quick access to all rooms with unfinished messages. + > This feature is available under the `Drafts in sidebar` feature preview and needs to be enabled in settings to be tested. + +### Patch Changes + +- ([#40420](https://github.com/RocketChat/Rocket.Chat/pull/40420)) Fixes Insert Timestamp relative time preview not updating on input changes and losing the user's locale after the first refresh tick. + +- ([#40456](https://github.com/RocketChat/Rocket.Chat/pull/40456)) Fixes signed URL generation for S3 and Google Cloud Storage when the expiry setting is below 5 seconds, which previously caused expired or invalid preview URLs. Adds a dedicated URL expiry setting for Google Cloud Storage since it was incorrectly reusing the AWS S3 setting. + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + ## 3.0.0 ### Minor Changes diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 05df78881856e..c78e1cb90f69d 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/i18n", - "version": "3.0.0", + "version": "3.1.0-rc.0", "private": true, "type": "module", "exports": { diff --git a/packages/instance-status/CHANGELOG.md b/packages/instance-status/CHANGELOG.md index 2620f424b1313..fd039b733c228 100644 --- a/packages/instance-status/CHANGELOG.md +++ b/packages/instance-status/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/instance-status +## 0.1.57-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 +
+ ## 0.1.56 ### Patch Changes diff --git a/packages/instance-status/package.json b/packages/instance-status/package.json index 8449b3afe7d60..ee64613436acb 100644 --- a/packages/instance-status/package.json +++ b/packages/instance-status/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/instance-status", - "version": "0.1.56", + "version": "0.1.57-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/livechat/CHANGELOG.md b/packages/livechat/CHANGELOG.md index 7ad06356efd4a..ee058154a208c 100644 --- a/packages/livechat/CHANGELOG.md +++ b/packages/livechat/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/livechat Change Log +## 2.1.4-rc.0 + +### Patch Changes + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, 0b7a76367d650793c271160e01798ebbb5fe0d26, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/gazzodown@31.0.0-rc.0 +
+ ## 2.1.3 ### Patch Changes diff --git a/packages/livechat/package.json b/packages/livechat/package.json index 4e9b1a6cdd8e9..9a0f1a60ef19d 100644 --- a/packages/livechat/package.json +++ b/packages/livechat/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/livechat", - "version": "2.1.3", + "version": "2.1.4-rc.0", "homepage": "https://rocket.chat", "repository": { "type": "git", diff --git a/packages/mock-providers/CHANGELOG.md b/packages/mock-providers/CHANGELOG.md index 4372ce78e65d5..11f16e09ae1c9 100644 --- a/packages/mock-providers/CHANGELOG.md +++ b/packages/mock-providers/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/mock-providers +## 0.4.17-rc.0 + +### Patch Changes + +-
Updated dependencies [cdb264fec803e234a6ad2000018b31d4b2074e99, ae9f740d6af20557eac61b4af902c868b4132b49, ad7d42400ea36f1eb0aaf7cc3361c77fdabf9ebc, 4704bf81ca370f120af32185a7c55407a26f8514, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, ebc9babf55dd26613027c28dcacf77909116b342, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257]: + + - @rocket.chat/i18n@3.1.0-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 +
+ ## 0.4.16 ### Patch Changes diff --git a/packages/mock-providers/package.json b/packages/mock-providers/package.json index 351fba9632187..50237f91f6f85 100644 --- a/packages/mock-providers/package.json +++ b/packages/mock-providers/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/mock-providers", - "version": "0.4.16", + "version": "0.4.17-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 100268a12368b..d1d3b499dfba3 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,39 @@ # @rocket.chat/model-typings +## 2.3.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- ([#39617](https://github.com/RocketChat/Rocket.Chat/pull/39617)) Adds new API endpoints `custom-sounds.create` and `custom-sounds.update` to manage custom sounds with strict file validation for size and specific MIME types to ensure system compatibility. + +### Patch Changes + +- ([#40524](https://github.com/RocketChat/Rocket.Chat/pull/40524)) Ensures OAuth tokens are cleaned up after user deactivation + +- ([#40496](https://github.com/RocketChat/Rocket.Chat/pull/40496)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [ae9f740d6af20557eac61b4af902c868b4132b49, 12897e25d0dc25b7373f5264d38f38a5a7444257]: + + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 2.2.0 ### Minor Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 5b8b5d090a9e7..d0d2b3c50dfd5 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "2.2.0", + "version": "2.3.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index c3a206df002c5..7d064d8480c3c 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,45 @@ # @rocket.chat/models +## 2.3.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- ([#39617](https://github.com/RocketChat/Rocket.Chat/pull/39617)) Adds new API endpoints `custom-sounds.create` and `custom-sounds.update` to manage custom sounds with strict file validation for size and specific MIME types to ensure system compatibility. + +- ([#40397](https://github.com/RocketChat/Rocket.Chat/pull/40397)) Adds the `USE_ROOM_SEARCH_INDEX` environment variable. When set to `true`, the messages collection's text index is created as `{ rid: 1, msg: 'text' }` instead of the default `{ msg: 'text' }`. The compound shape lets per-room `$text` searches use `rid` as a prefix, dramatically reducing the portion of the index scanned on workspaces where global search is disabled. + + The index is reconciled on every startup: if the existing text index already matches the desired shape, nothing happens; otherwise the stale text index is dropped and the desired one is recreated. Unsetting the variable on a later boot reverts to the default shape. + +### Patch Changes + +- ([#40524](https://github.com/RocketChat/Rocket.Chat/pull/40524)) Ensures OAuth tokens are cleaned up after user deactivation + +- ([#40496](https://github.com/RocketChat/Rocket.Chat/pull/40496)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +- ([#40405](https://github.com/RocketChat/Rocket.Chat/pull/40405)) Security Hotfix (https://docs.rocket.chat/docs/security-fixes-and-updates) + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/model-typings@2.3.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 2.2.0 ### Minor Changes diff --git a/packages/models/package.json b/packages/models/package.json index 0fc632cdcf821..6c383e320b189 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "2.2.0", + "version": "2.3.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/omni-core/CHANGELOG.md b/packages/omni-core/CHANGELOG.md index cc30f605ce639..4dfb1c9174329 100644 --- a/packages/omni-core/CHANGELOG.md +++ b/packages/omni-core/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/omni-core +## 0.1.1-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 +
+ ## 0.1.0 ### Minor Changes diff --git a/packages/omni-core/package.json b/packages/omni-core/package.json index 8f86eb1eb6880..cf20e53b82c4b 100644 --- a/packages/omni-core/package.json +++ b/packages/omni-core/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/omni-core", - "version": "0.1.0", + "version": "0.1.1-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 044533574a007..14761c872fb91 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,38 @@ # @rocket.chat/rest-typings +## 8.5.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +- ([#39617](https://github.com/RocketChat/Rocket.Chat/pull/39617)) Adds new API endpoints `custom-sounds.create` and `custom-sounds.update` to manage custom sounds with strict file validation for size and specific MIME types to ensure system compatibility. + +- ([#40612](https://github.com/RocketChat/Rocket.Chat/pull/40612)) Adds `freeSwitchExtension` as a query parameter for `api/v1/users.info` + +### Patch Changes + +- ([#40513](https://github.com/RocketChat/Rocket.Chat/pull/40513)) Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration + +-
Updated dependencies [90f15e32ae843ed146ccf711ee3201408d1e8731, ae9f740d6af20557eac61b4af902c868b4132b49, 12897e25d0dc25b7373f5264d38f38a5a7444257, 90f15e32ae843ed146ccf711ee3201408d1e8731]: + + - @rocket.chat/ui-kit@1.1.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 8.4.0 ### Minor Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 7af85e25846d7..1008383f732e3 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "8.5.0-develop", + "version": "8.5.0-rc.0", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/server-fetch/CHANGELOG.md b/packages/server-fetch/CHANGELOG.md index 2901e435392fd..81db4862e4bdb 100644 --- a/packages/server-fetch/CHANGELOG.md +++ b/packages/server-fetch/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/server-fetch +## 0.2.1-rc.0 + +### Patch Changes + +-
Updated dependencies [f7d47dd3517ec14ca2ec5c3c95fcdf9e1e2fb8b0, ae9f740d6af20557eac61b4af902c868b4132b49, b6b04aadfcc8558f888b334e37c46a77e5816237, 4704bf81ca370f120af32185a7c55407a26f8514, 12897e25d0dc25b7373f5264d38f38a5a7444257, e45585b70a3a7b75434c88e4b2ea9af0a0764a76]: + + - @rocket.chat/models@2.3.0-rc.0 +
+ ## 0.2.0 ### Minor Changes diff --git a/packages/server-fetch/package.json b/packages/server-fetch/package.json index f2501c22f7b8a..bbde359520f2b 100644 --- a/packages/server-fetch/package.json +++ b/packages/server-fetch/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/server-fetch", - "version": "0.2.0", + "version": "0.2.1-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-avatar/CHANGELOG.md b/packages/ui-avatar/CHANGELOG.md index 0458ea5c10320..6fd9209faa4f4 100644 --- a/packages/ui-avatar/CHANGELOG.md +++ b/packages/ui-avatar/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/ui-avatar +## 27.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@31.0.0-rc.0 +
+ ## 26.0.0 ### Patch Changes diff --git a/packages/ui-avatar/package.json b/packages/ui-avatar/package.json index f51bebce21e6f..04ce3948aec5f 100644 --- a/packages/ui-avatar/package.json +++ b/packages/ui-avatar/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-avatar", - "version": "26.0.0", + "version": "27.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-client/CHANGELOG.md b/packages/ui-client/CHANGELOG.md index 0781611248d39..2a9e6d9659b5d 100644 --- a/packages/ui-client/CHANGELOG.md +++ b/packages/ui-client/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/ui-client +## 31.0.0-rc.0 + +### Minor Changes + +- ([#38225](https://github.com/RocketChat/Rocket.Chat/pull/38225)) Adds a new "Drafts" group to the sidebar, providing quick access to all rooms with unfinished messages. + > This feature is available under the `Drafts in sidebar` feature preview and needs to be enabled in settings to be tested. + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 +
+ ## 30.0.0 ### Minor Changes diff --git a/packages/ui-client/package.json b/packages/ui-client/package.json index 5fa764dbdc268..e0a26343bc819 100644 --- a/packages/ui-client/package.json +++ b/packages/ui-client/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-client", - "version": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-composer/CHANGELOG.md b/packages/ui-composer/CHANGELOG.md index 58dadd0d5a5b8..c33837c5a4653 100644 --- a/packages/ui-composer/CHANGELOG.md +++ b/packages/ui-composer/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/ui-composer +## 2.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies [fac64728505b312d5da786e92d3134450ce4a7c1]: + + - @rocket.chat/ui-client@31.0.0-rc.0 +
+ ## 1.0.0 ### Minor Changes diff --git a/packages/ui-composer/package.json b/packages/ui-composer/package.json index fbb0a7f86100b..ff4a5094e5af9 100644 --- a/packages/ui-composer/package.json +++ b/packages/ui-composer/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-composer", - "version": "1.0.0", + "version": "2.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", @@ -53,7 +53,7 @@ "@react-aria/toolbar": "*", "@rocket.chat/fuselage": "*", "@rocket.chat/icons": "*", - "@rocket.chat/ui-client": "30.0.0", + "@rocket.chat/ui-client": "31.0.0-rc.0", "react": "*", "react-dom": "*" }, diff --git a/packages/ui-contexts/CHANGELOG.md b/packages/ui-contexts/CHANGELOG.md index 6825da0c98458..6dfa14a85e08c 100644 --- a/packages/ui-contexts/CHANGELOG.md +++ b/packages/ui-contexts/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/ui-contexts +## 31.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies [cdb264fec803e234a6ad2000018b31d4b2074e99, bede0e2528bb053cb913e93ccf30d78a1c84bc76, bede0e2528bb053cb913e93ccf30d78a1c84bc76, bede0e2528bb053cb913e93ccf30d78a1c84bc76, 4c3984593017d59edd631bf8ae4f35f9d3c3db36, ae9f740d6af20557eac61b4af902c868b4132b49, ad7d42400ea36f1eb0aaf7cc3361c77fdabf9ebc, 4704bf81ca370f120af32185a7c55407a26f8514, d427b808c1f79d9d1baa05bb5b5ef805b6ef5f6d, ebc9babf55dd26613027c28dcacf77909116b342, fac64728505b312d5da786e92d3134450ce4a7c1, 12897e25d0dc25b7373f5264d38f38a5a7444257, 51833064591b91140d17e403389e1abbc5d9ef7a, b1c2668b74bfb49ebaefe2f581b2f8be5d4d1dd6]: + + - @rocket.chat/i18n@3.1.0-rc.0 + - @rocket.chat/ddp-client@1.1.0-rc.0 + - @rocket.chat/rest-typings@8.5.0-rc.0 + - @rocket.chat/core-typings@8.5.0-rc.0 +
+ ## 30.0.0 ### Patch Changes diff --git a/packages/ui-contexts/package.json b/packages/ui-contexts/package.json index c098a3b68c1d5..6118498192c8b 100644 --- a/packages/ui-contexts/package.json +++ b/packages/ui-contexts/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-contexts", - "version": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-kit/CHANGELOG.md b/packages/ui-kit/CHANGELOG.md index 894e366a019c7..13175bfb3234d 100644 --- a/packages/ui-kit/CHANGELOG.md +++ b/packages/ui-kit/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 1.1.0-rc.0 + +### Minor Changes + +- ([#39858](https://github.com/RocketChat/Rocket.Chat/pull/39858)) Adds support to room information on ViewSubmit and ViewClose events for ContextualBar surface + +### Patch Changes + +- ([#39858](https://github.com/RocketChat/Rocket.Chat/pull/39858)) Fixes an issue that prevented BlockAction interactions from having room information when triggered in a ContextualBar surface + ## 1.0.0 ### Major Changes diff --git a/packages/ui-kit/package.json b/packages/ui-kit/package.json index 102f8932d1984..3e8fa25956a62 100644 --- a/packages/ui-kit/package.json +++ b/packages/ui-kit/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-kit", - "version": "1.0.0", + "version": "1.1.0-rc.0", "description": "Interactive UI elements for Rocket.Chat Apps", "homepage": "https://rocket.chat", "bugs": { diff --git a/packages/ui-video-conf/CHANGELOG.md b/packages/ui-video-conf/CHANGELOG.md index 62673a16a8a83..66bd1478bc525 100644 --- a/packages/ui-video-conf/CHANGELOG.md +++ b/packages/ui-video-conf/CHANGELOG.md @@ -1,5 +1,15 @@ # @rocket.chat/ui-video-conf +## 31.0.0-rc.0 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 +
+ ## 30.0.0 ### Patch Changes diff --git a/packages/ui-video-conf/package.json b/packages/ui-video-conf/package.json index 83c0d3ebea85b..56f90facecf16 100644 --- a/packages/ui-video-conf/package.json +++ b/packages/ui-video-conf/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-video-conf", - "version": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/ui-voip/CHANGELOG.md b/packages/ui-voip/CHANGELOG.md index 25be30802b1cd..2ef2cebbf8aaa 100644 --- a/packages/ui-voip/CHANGELOG.md +++ b/packages/ui-voip/CHANGELOG.md @@ -1,5 +1,24 @@ # @rocket.chat/ui-voip +## 21.0.0-rc.0 + +### Minor Changes + +- ([#40331](https://github.com/RocketChat/Rocket.Chat/pull/40331)) Adds "Open in room" button to shared screen card on voice call widget + +### Patch Changes + +- ([#40330](https://github.com/RocketChat/Rocket.Chat/pull/40330)) Fixes an issue where intentionally cancelling a screen share request would show an error toast by identifying error types and counting consecutive failures. + +-
Updated dependencies [ae9f740d6af20557eac61b4af902c868b4132b49, fac64728505b312d5da786e92d3134450ce4a7c1]: + + - @rocket.chat/desktop-api@1.2.0-rc.0 + - @rocket.chat/ui-client@31.0.0-rc.0 + - @rocket.chat/fuselage-ui-kit@31.0.0-rc.0 + - @rocket.chat/ui-contexts@31.0.0-rc.0 + - @rocket.chat/ui-avatar@27.0.0-rc.0 +
+ ## 20.0.0 ### Minor Changes diff --git a/packages/ui-voip/package.json b/packages/ui-voip/package.json index ea61c625ff897..25b11a364b52c 100644 --- a/packages/ui-voip/package.json +++ b/packages/ui-voip/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/ui-voip", - "version": "20.0.0", + "version": "21.0.0-rc.0", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/web-ui-registration/CHANGELOG.md b/packages/web-ui-registration/CHANGELOG.md index 8d854d81dace3..c70daa7a1ea07 100644 --- a/packages/web-ui-registration/CHANGELOG.md +++ b/packages/web-ui-registration/CHANGELOG.md @@ -1,5 +1,31 @@ # @rocket.chat/web-ui-registration +## 31.0.0-rc.0 + +### Minor Changes + +- ([#39760](https://github.com/RocketChat/Rocket.Chat/pull/39760)) ## Phishing-Resistant Multi-Factor Authentication + + Introduces a more secure and reliable server-side OAuth authentication flow. + + ### What’s New + + - **Improved OAuth login security** + OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. + - **Built-in CSRF, state validation, and PKCE protection** + OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. + - **Improved two-step verification with OAuth logins** + Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. + - **Improved mobile & desktop app login** + Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/ui-contexts@31.0.0-rc.0 +
+ ## 30.0.0 ### Patch Changes diff --git a/packages/web-ui-registration/package.json b/packages/web-ui-registration/package.json index 697a12d7852bf..735f2f9c16dc2 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": "30.0.0", + "version": "31.0.0-rc.0", "private": true, "homepage": "https://rocket.chat", "main": "./dist/index.js", @@ -60,7 +60,7 @@ "peerDependencies": { "@rocket.chat/layout": "*", "@rocket.chat/tools": "0.3.0", - "@rocket.chat/ui-contexts": "30.0.0", + "@rocket.chat/ui-contexts": "31.0.0-rc.0", "@tanstack/react-query": "*", "react": "*", "react-hook-form": "*", From 61781564ee495c68963f6f48ce1002c2f9b1d660 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Thu, 21 May 2026 16:18:26 -0300 Subject: [PATCH 28/69] regression: apps semver validation broke with pre-release identifier (#40643) --- packages/apps-engine/src/definition/version.ts | 16 ---------------- .../apps/src/server/compiler/AppPackageParser.ts | 8 ++++++-- 2 files changed, 6 insertions(+), 18 deletions(-) delete mode 100644 packages/apps-engine/src/definition/version.ts diff --git a/packages/apps-engine/src/definition/version.ts b/packages/apps-engine/src/definition/version.ts deleted file mode 100644 index 8feda95c5ad5d..0000000000000 --- a/packages/apps-engine/src/definition/version.ts +++ /dev/null @@ -1,16 +0,0 @@ -/** - * The version of the Apps-Engine package. - * Consumed by host-side code (e.g. AppPackageParser) to validate app compatibility - * without relying on filesystem path traversal. - * - * Uses require() instead of a static import so TypeScript does not resolve the path - * at compile time. - * - * When running for tests, using ts-node, package.json is located two levels above the current file. - * When running in production, package.json is located one level above the compiled version of this file. - */ -const runningFromSource = __dirname.endsWith('src/definition'); -const requirePath = runningFromSource ? '../../package.json' : '../package.json'; - -// eslint-disable-next-line import/no-dynamic-require, @typescript-eslint/no-require-imports -- Paths are bounded, we just need to decide which package.json file to target -export const ENGINE_VERSION: string = require(requirePath).version; diff --git a/packages/apps/src/server/compiler/AppPackageParser.ts b/packages/apps/src/server/compiler/AppPackageParser.ts index 827f7d2208b0d..233cf2971056f 100644 --- a/packages/apps/src/server/compiler/AppPackageParser.ts +++ b/packages/apps/src/server/compiler/AppPackageParser.ts @@ -2,7 +2,7 @@ import { randomUUID } from 'node:crypto'; import * as path from 'node:path'; import type { IAppInfo } from '@rocket.chat/apps-engine/definition/metadata/IAppInfo'; -import { ENGINE_VERSION } from '@rocket.chat/apps-engine/definition/version'; +import { version } from '@rocket.chat/apps-engine/package.json'; import AdmZip from 'adm-zip'; import * as semver from 'semver'; @@ -15,7 +15,11 @@ export class AppPackageParser { private allowedIconExts: Array = ['.png', '.jpg', '.jpeg', '.gif']; - private appsEngineVersion: string = ENGINE_VERSION; + private readonly appsEngineVersion: string; + + constructor() { + [this.appsEngineVersion] = version.split('-'); // In case there is a suffix like -dev, -rc.0, etc. We just want the version number for semver comparison + } public async unpackageApp(appPackage: Buffer): Promise { const zip = new AdmZip(appPackage); From 3e848308dab97db660fbccf7a513e86ad4f1e9b6 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Fri, 22 May 2026 13:47:32 +0000 Subject: [PATCH 29/69] Release 8.5.0-rc.1 [no ci] --- .changeset/bump-patch-1779457640608.md | 5 +++++ .changeset/pre.json | 1 + apps/meteor/CHANGELOG.md | 12 ++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 ++ packages/core-typings/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 9 +++++++++ packages/rest-typings/package.json | 2 +- yarn.lock | 4 ++-- 11 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 .changeset/bump-patch-1779457640608.md diff --git a/.changeset/bump-patch-1779457640608.md b/.changeset/bump-patch-1779457640608.md new file mode 100644 index 0000000000000..e1eaa7980afb1 --- /dev/null +++ b/.changeset/bump-patch-1779457640608.md @@ -0,0 +1,5 @@ +--- +'@rocket.chat/meteor': patch +--- + +Bump @rocket.chat/meteor version. diff --git a/.changeset/pre.json b/.changeset/pre.json index 392dbba4de856..a1398f53e0315 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -82,6 +82,7 @@ "big-corners-tie", "brave-fans-tie", "brown-files-work", + "bump-patch-1779457640608", "calm-seas-run", "clever-zebras-melt", "ddp-client-idempotent-reconnect", diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index 6dcbea6be065e..fa37cad4b68b5 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,17 @@ # @rocket.chat/meteor +## 8.5.0-rc.1 + +### Patch Changes + +- Bump @rocket.chat/meteor version. + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.5.0-rc.1 + - @rocket.chat/rest-typings@8.5.0-rc.1 +
+ ## 8.5.0-rc.0 ### Minor Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index e5d3d3dc9dd70..b37e25fa1adc7 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "8.5.0-rc.0" + "version": "8.5.0-rc.1" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 4c79126fae77c..726e1e5c150b4 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/meteor", - "version": "8.5.0-rc.0", + "version": "8.5.0-rc.1", "private": true, "description": "The Ultimate Open Source WebChat Platform", "keywords": [ diff --git a/package.json b/package.json index 78425f54bbd73..17730b1bdf6a4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "8.5.0-rc.0", + "version": "8.5.0-rc.1", "private": true, "description": "Rocket.Chat Monorepo", "homepage": "https://github.com/RocketChat/Rocket.Chat#readme", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 103ab74f7442d..832d76730777a 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 8.5.0-rc.1 + ## 8.5.0-rc.0 ### Minor Changes diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index 78743aef56f27..9846b94935e54 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", - "version": "8.5.0-rc.0", + "version": "8.5.0-rc.1", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 14761c872fb91..0679e9811f460 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,14 @@ # @rocket.chat/rest-typings +## 8.5.0-rc.1 + +### Patch Changes + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.5.0-rc.1 +
+ ## 8.5.0-rc.0 ### Minor Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 1008383f732e3..5ba7e6b01b75a 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "8.5.0-rc.0", + "version": "8.5.0-rc.1", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/yarn.lock b/yarn.lock index 05400ce25f121..1365fc5408011 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11032,7 +11032,7 @@ __metadata: "@react-aria/toolbar": "*" "@rocket.chat/fuselage": "*" "@rocket.chat/icons": "*" - "@rocket.chat/ui-client": 30.0.0 + "@rocket.chat/ui-client": 31.0.0-rc.0 react: "*" react-dom: "*" languageName: unknown @@ -11305,7 +11305,7 @@ __metadata: peerDependencies: "@rocket.chat/layout": "*" "@rocket.chat/tools": 0.3.0 - "@rocket.chat/ui-contexts": 30.0.0 + "@rocket.chat/ui-contexts": 31.0.0-rc.0 "@tanstack/react-query": "*" react: "*" react-hook-form: "*" From be11acd7839dd94edbee023d8dc2cc9a57450902 Mon Sep 17 00:00:00 2001 From: Julio Araujo Date: Fri, 22 May 2026 16:18:24 +0200 Subject: [PATCH 30/69] fix: add TEST_MODE=true to OAuth ratelimiter's 'skip' (#40650) --- apps/meteor/server/configuration/configurePassport.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/meteor/server/configuration/configurePassport.ts b/apps/meteor/server/configuration/configurePassport.ts index 48c9ccd9d85cc..a7c5461a81e93 100644 --- a/apps/meteor/server/configuration/configurePassport.ts +++ b/apps/meteor/server/configuration/configurePassport.ts @@ -56,6 +56,7 @@ export const configurePassport = (settings: ICachedSettings) => { windowMs: settings.get('API_Enable_Rate_Limiter_Limit_Time_Default'), max: settings.get('API_Enable_Rate_Limiter_Limit_Calls_Default'), skip: () => + process.env.TEST_MODE === 'true' || settings.get('API_Enable_Rate_Limiter') !== true || (process.env.NODE_ENV === 'development' && settings.get('API_Enable_Rate_Limiter_Dev') !== true), handler: (_req, res) => { From 9c1c81ce89909c5b443da253a3775babfa3b9a19 Mon Sep 17 00:00:00 2001 From: rocketchat-github-ci Date: Fri, 22 May 2026 16:39:04 +0000 Subject: [PATCH 31/69] Release 8.4.2 [no ci] --- .changeset/big-corners-tie.md | 7 ------- .changeset/bump-patch-1778764022832.md | 5 ----- .changeset/fix-presence-comma-ids.md | 6 ------ .changeset/good-rules-lie.md | 7 ------- .changeset/neat-trams-juggle.md | 5 ----- .changeset/perky-tires-invite.md | 5 ----- .changeset/shaggy-kiwis-burn.md | 5 ----- apps/meteor/CHANGELOG.md | 28 ++++++++++++++++++++++++++ apps/meteor/app/utils/rocketchat.info | 2 +- apps/meteor/package.json | 2 +- package.json | 2 +- packages/core-typings/CHANGELOG.md | 2 ++ packages/core-typings/package.json | 2 +- packages/model-typings/CHANGELOG.md | 13 ++++++++++++ packages/model-typings/package.json | 2 +- packages/models/CHANGELOG.md | 15 ++++++++++++++ packages/models/package.json | 2 +- packages/rest-typings/CHANGELOG.md | 11 ++++++++++ packages/rest-typings/package.json | 2 +- 19 files changed, 76 insertions(+), 47 deletions(-) delete mode 100644 .changeset/big-corners-tie.md delete mode 100644 .changeset/bump-patch-1778764022832.md delete mode 100644 .changeset/fix-presence-comma-ids.md delete mode 100644 .changeset/good-rules-lie.md delete mode 100644 .changeset/neat-trams-juggle.md delete mode 100644 .changeset/perky-tires-invite.md delete mode 100644 .changeset/shaggy-kiwis-burn.md diff --git a/.changeset/big-corners-tie.md b/.changeset/big-corners-tie.md deleted file mode 100644 index d94dbbfb5daca..0000000000000 --- a/.changeset/big-corners-tie.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/model-typings': patch -'@rocket.chat/models': patch -'@rocket.chat/meteor': patch ---- - -Ensures OAuth tokens are cleaned up after user deactivation diff --git a/.changeset/bump-patch-1778764022832.md b/.changeset/bump-patch-1778764022832.md deleted file mode 100644 index e1eaa7980afb1..0000000000000 --- a/.changeset/bump-patch-1778764022832.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Bump @rocket.chat/meteor version. diff --git a/.changeset/fix-presence-comma-ids.md b/.changeset/fix-presence-comma-ids.md deleted file mode 100644 index c85d20785e3a6..0000000000000 --- a/.changeset/fix-presence-comma-ids.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@rocket.chat/meteor': patch -'@rocket.chat/rest-typings': patch ---- - -Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration \ No newline at end of file diff --git a/.changeset/good-rules-lie.md b/.changeset/good-rules-lie.md deleted file mode 100644 index 75542e75aa078..0000000000000 --- a/.changeset/good-rules-lie.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@rocket.chat/model-typings': patch -'@rocket.chat/models': patch -'@rocket.chat/meteor': patch ---- - -Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle diff --git a/.changeset/neat-trams-juggle.md b/.changeset/neat-trams-juggle.md deleted file mode 100644 index 56f327f68cc0c..0000000000000 --- a/.changeset/neat-trams-juggle.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Ensures the Meteor method for translateMessage validates access and types diff --git a/.changeset/perky-tires-invite.md b/.changeset/perky-tires-invite.md deleted file mode 100644 index d3824c95cfca4..0000000000000 --- a/.changeset/perky-tires-invite.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Ensures the visitor token is not present in the visitors.info response diff --git a/.changeset/shaggy-kiwis-burn.md b/.changeset/shaggy-kiwis-burn.md deleted file mode 100644 index 6a5834f65d4cf..0000000000000 --- a/.changeset/shaggy-kiwis-burn.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@rocket.chat/meteor': patch ---- - -Ensures the autotranslate.translateMessage endpoint checks for room access diff --git a/apps/meteor/CHANGELOG.md b/apps/meteor/CHANGELOG.md index a1cc01fa1d4e2..852d0fadaf33c 100644 --- a/apps/meteor/CHANGELOG.md +++ b/apps/meteor/CHANGELOG.md @@ -1,5 +1,33 @@ # @rocket.chat/meteor +## 8.4.2 + +### Patch Changes + +- ([#40627](https://github.com/RocketChat/Rocket.Chat/pull/40627) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures OAuth tokens are cleaned up after user deactivation + +- Bump @rocket.chat/meteor version. + +- Bump @rocket.chat/meteor version. + +- ([#40527](https://github.com/RocketChat/Rocket.Chat/pull/40527) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration + +- ([#40559](https://github.com/RocketChat/Rocket.Chat/pull/40559) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +- ([#40539](https://github.com/RocketChat/Rocket.Chat/pull/40539) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures the Meteor method for translateMessage validates access and types + +- ([#40577](https://github.com/RocketChat/Rocket.Chat/pull/40577) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures the visitor token is not present in the visitors.info response + +- ([#40547](https://github.com/RocketChat/Rocket.Chat/pull/40547) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures the autotranslate.translateMessage endpoint checks for room access + +-
Updated dependencies [b0c593db9bc0bbbb603e673ddcdc48aad4f4e721, f422eb613d8cae43dc1e44d71b6ecb5a0a9c5d92, 3a3f0e1103bd0b8aaf93c16300ed664aed7a67a1]: + + - @rocket.chat/model-typings@2.2.2 + - @rocket.chat/models@2.2.2 + - @rocket.chat/rest-typings@8.4.2 + - @rocket.chat/core-typings@8.4.2 +
+ ## 8.4.1 ### Patch Changes diff --git a/apps/meteor/app/utils/rocketchat.info b/apps/meteor/app/utils/rocketchat.info index 07aa9674368fd..2efcfb568f350 100644 --- a/apps/meteor/app/utils/rocketchat.info +++ b/apps/meteor/app/utils/rocketchat.info @@ -1,3 +1,3 @@ { - "version": "8.4.1" + "version": "8.4.2" } diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 9ecace53e5fe1..a429eb367d563 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/meteor", - "version": "8.4.1", + "version": "8.4.2", "private": true, "description": "The Ultimate Open Source WebChat Platform", "keywords": [ diff --git a/package.json b/package.json index f1fabdfebc856..a5e5efe10d3e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket.chat", - "version": "8.4.1", + "version": "8.4.2", "private": true, "description": "Rocket.Chat Monorepo", "homepage": "https://github.com/RocketChat/Rocket.Chat#readme", diff --git a/packages/core-typings/CHANGELOG.md b/packages/core-typings/CHANGELOG.md index 751c8b6a554c5..ef903b7d33d9c 100644 --- a/packages/core-typings/CHANGELOG.md +++ b/packages/core-typings/CHANGELOG.md @@ -1,5 +1,7 @@ # @rocket.chat/core-typings +## 8.4.2 + ## 8.4.1 ### Patch Changes diff --git a/packages/core-typings/package.json b/packages/core-typings/package.json index e3cf06e146f6c..6f133d674ca16 100644 --- a/packages/core-typings/package.json +++ b/packages/core-typings/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package", "name": "@rocket.chat/core-typings", - "version": "8.4.1", + "version": "8.4.2", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ diff --git a/packages/model-typings/CHANGELOG.md b/packages/model-typings/CHANGELOG.md index 7a3496b5e454a..b6929fbc869ee 100644 --- a/packages/model-typings/CHANGELOG.md +++ b/packages/model-typings/CHANGELOG.md @@ -1,5 +1,18 @@ # @rocket.chat/model-typings +## 2.2.2 + +### Patch Changes + +- ([#40627](https://github.com/RocketChat/Rocket.Chat/pull/40627) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures OAuth tokens are cleaned up after user deactivation + +- ([#40559](https://github.com/RocketChat/Rocket.Chat/pull/40559) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.4.2 +
+ ## 2.2.1 ### Patch Changes diff --git a/packages/model-typings/package.json b/packages/model-typings/package.json index 5ada43be9f59f..5cb6362e660bb 100644 --- a/packages/model-typings/package.json +++ b/packages/model-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/model-typings", - "version": "2.2.1", + "version": "2.2.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/models/CHANGELOG.md b/packages/models/CHANGELOG.md index 9ea97b9d3bc86..defcc428464ba 100644 --- a/packages/models/CHANGELOG.md +++ b/packages/models/CHANGELOG.md @@ -1,5 +1,20 @@ # @rocket.chat/models +## 2.2.2 + +### Patch Changes + +- ([#40627](https://github.com/RocketChat/Rocket.Chat/pull/40627) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures OAuth tokens are cleaned up after user deactivation + +- ([#40559](https://github.com/RocketChat/Rocket.Chat/pull/40559) by [@dionisio-bot](https://github.com/dionisio-bot)) Ensures that deactivated users have their login tokens cleaned up in users.deactivateidle + +-
Updated dependencies [b0c593db9bc0bbbb603e673ddcdc48aad4f4e721, f422eb613d8cae43dc1e44d71b6ecb5a0a9c5d92, 3a3f0e1103bd0b8aaf93c16300ed664aed7a67a1]: + + - @rocket.chat/model-typings@2.2.2 + - @rocket.chat/rest-typings@8.4.2 + - @rocket.chat/core-typings@8.4.2 +
+ ## 2.2.1 ### Patch Changes diff --git a/packages/models/package.json b/packages/models/package.json index f380b7d67fe4b..9ab927eb1f35b 100644 --- a/packages/models/package.json +++ b/packages/models/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/models", - "version": "2.2.1", + "version": "2.2.2", "private": true, "main": "./dist/index.js", "typings": "./dist/index.d.ts", diff --git a/packages/rest-typings/CHANGELOG.md b/packages/rest-typings/CHANGELOG.md index 0b4a25480905f..287e5cf0adb37 100644 --- a/packages/rest-typings/CHANGELOG.md +++ b/packages/rest-typings/CHANGELOG.md @@ -1,5 +1,16 @@ # @rocket.chat/rest-typings +## 8.4.2 + +### Patch Changes + +- ([#40527](https://github.com/RocketChat/Rocket.Chat/pull/40527) by [@dionisio-bot](https://github.com/dionisio-bot)) Fixes the `users.presence` endpoint returning an empty array when called with multiple comma-separated IDs, caused by `ajvQuery` coercing the string into a single-element array after the OpenAPI migration + +-
Updated dependencies []: + + - @rocket.chat/core-typings@8.4.2 +
+ ## 8.4.1 ### Patch Changes diff --git a/packages/rest-typings/package.json b/packages/rest-typings/package.json index 08459b77cdf93..cdf9841fef3e1 100644 --- a/packages/rest-typings/package.json +++ b/packages/rest-typings/package.json @@ -1,6 +1,6 @@ { "name": "@rocket.chat/rest-typings", - "version": "8.4.1", + "version": "8.4.2", "main": "./dist/index.js", "typings": "./dist/index.d.ts", "files": [ From 27ac7a870b1d750539241fd3a1235279dccb7afe Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 25 May 2026 09:32:58 -0300 Subject: [PATCH 32/69] regression: jump to recent messages when sending new messages (#40641) Co-authored-by: Douglas Gubert Co-authored-by: Julio Araujo --- .../client/views/room/body/hooks/useHasNewMessages.spec.ts | 1 + apps/meteor/client/views/room/body/hooks/useHasNewMessages.ts | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/apps/meteor/client/views/room/body/hooks/useHasNewMessages.spec.ts b/apps/meteor/client/views/room/body/hooks/useHasNewMessages.spec.ts index d13c3a8f001f9..fa62da76d4268 100644 --- a/apps/meteor/client/views/room/body/hooks/useHasNewMessages.spec.ts +++ b/apps/meteor/client/views/room/body/hooks/useHasNewMessages.spec.ts @@ -15,6 +15,7 @@ jest.mock('../../../../../app/ui-utils/client', () => ({ RoomHistoryManager: { clear: jest.fn(), getMoreIfIsEmpty: jest.fn(), + hasMoreNext: jest.fn(), }, })); diff --git a/apps/meteor/client/views/room/body/hooks/useHasNewMessages.ts b/apps/meteor/client/views/room/body/hooks/useHasNewMessages.ts index ab3afcb05c9fd..acd68261dfc3f 100644 --- a/apps/meteor/client/views/room/body/hooks/useHasNewMessages.ts +++ b/apps/meteor/client/views/room/body/hooks/useHasNewMessages.ts @@ -66,6 +66,10 @@ export const useHasNewMessages = ( return; } if (msg.u._id === uid) { + // If there are more next messages, jump to the recent messages + if (RoomHistoryManager.hasMoreNext(rid)) { + return handleJumpToRecentButtonClick(); + } setShouldJumpToBottom(true); setHasNewMessages(false); } From 6fb88e18949b76357f6cc891a78e206777ad72c7 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Mon, 25 May 2026 11:53:31 -0300 Subject: [PATCH 33/69] regression: thread not scrolling on receiving new message (#40642) --- .../views/room/MessageList/hooks/useTryToJumpToMessage.ts | 5 ++++- .../contextualBar/Threads/components/ThreadMessageList.tsx | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts index 63909b96249e0..779ef48794284 100644 --- a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts +++ b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts @@ -38,6 +38,9 @@ const useTryToJumpToMessage = ({ rid, virtualizerRef, setIsJumpingToMessage, mes setIsJumpingToMessage(false); return; } + if (!message) { + return; + } // Thread deep links are handled by useTryToJumpToThreadMessage; do not use the main list virtualizer if (message && isThreadMessage(message) && !isThreadMainMessage(message)) { setIsJumpingToMessage(false); @@ -78,7 +81,7 @@ const useTryToJumpToMessage = ({ rid, virtualizerRef, setIsJumpingToMessage, mes setTimeout(() => { setIsJumpingToMessage(false); setMessageJumpQueryStringParameter(null); - }, 1000); + }, 500); }, [messageJumpParam, virtualizerRef, setIsJumpingToMessage, rid, messages, message]); }; diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx index dc535603af0ca..9d05fc53c519e 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx @@ -12,6 +12,7 @@ import type { VirtualizerHandle } from 'virtua'; import { VList } from 'virtua'; import { ThreadMessageItem } from './ThreadMessageItem'; +import { setMessageJumpQueryStringParameter } from '../../../../../lib/utils/setMessageJumpQueryStringParameter'; import { BubbleDate } from '../../../BubbleDate'; import { useKeepMountedMessages } from '../../../MessageList/hooks/useKeepMountedMessages'; import { isMessageNewDay } from '../../../MessageList/lib/isMessageNewDay'; @@ -73,6 +74,7 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot const virtualizerRef = useRef(null); const isAtBottom = useRef(true); + const lastScrollSizeRef = useRef(0); const items = loading ? [] : [mainMessage, ...messages]; @@ -102,6 +104,10 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot setShouldJumpToBottom(false); return; } + if (isAtBottom.current && lastScrollSizeRef.current !== handle?.scrollSize) { + lastScrollSizeRef.current = handle?.scrollSize ?? 0; + setShouldJumpToBottom(true); + } if (shouldJumpToBottom) { handle.scrollToIndex(items.length, { align: 'end' }); setShouldJumpToBottom(false); @@ -124,6 +130,7 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot setShouldJumpToBottom(false); handle.scrollToIndex(threadMsgTargetIndex, { align: 'center' }); setHighlightMessage(msgJumpParam); + setMessageJumpQueryStringParameter(null); setTimeout(() => { clearHighlightMessage(); }, 2000); From fc8e36d9fbbf62b0b974efa7bec2fa7df7da31a5 Mon Sep 17 00:00:00 2001 From: Nazareno Bucciarelli <84046180+nazabucciarelli@users.noreply.github.com> Date: Tue, 26 May 2026 19:17:47 -0300 Subject: [PATCH 34/69] regression: custom sound record breaks when validation error on update (#40696) --- .../meteor/app/api/server/v1/custom-sounds.ts | 14 ++--- .../tests/end-to-end/api/custom-sounds.ts | 56 +++++++++++++++++++ 2 files changed, 63 insertions(+), 7 deletions(-) diff --git a/apps/meteor/app/api/server/v1/custom-sounds.ts b/apps/meteor/app/api/server/v1/custom-sounds.ts index 02e97c7f151be..b74a396c5ee58 100644 --- a/apps/meteor/app/api/server/v1/custom-sounds.ts +++ b/apps/meteor/app/api/server/v1/custom-sounds.ts @@ -259,6 +259,13 @@ const customSoundsEndpoints = API.v1 : soundToUpdate.extension; try { + await insertOrUpdateSound({ + _id: fields._id, + name: fields.name, + extension: nextExtension, + previousName: soundToUpdate.name, + previousExtension: soundToUpdate.extension, + }); if (fileBuffer) { await uploadCustomSound(fileBuffer, computedMimeType, { _id: fields._id, @@ -267,13 +274,6 @@ const customSoundsEndpoints = API.v1 extension: nextExtension, }); } - await insertOrUpdateSound({ - _id: fields._id, - name: fields.name, - extension: nextExtension, - previousName: soundToUpdate.name, - previousExtension: soundToUpdate.extension, - }); return API.v1.success({}); } catch (error) { SystemLogger.error({ error }); diff --git a/apps/meteor/tests/end-to-end/api/custom-sounds.ts b/apps/meteor/tests/end-to-end/api/custom-sounds.ts index 74d1f59ea3553..7df584cea0724 100644 --- a/apps/meteor/tests/end-to-end/api/custom-sounds.ts +++ b/apps/meteor/tests/end-to-end/api/custom-sounds.ts @@ -1,4 +1,5 @@ import { randomUUID } from 'crypto'; +import fs from 'fs'; import path from 'path'; import type { Credentials } from '@rocket.chat/api-client'; @@ -361,6 +362,61 @@ describe('[CustomSounds]', () => { .expect(403); }); }); + + describe('mutating file on failed validation', () => { + let soundAId: string; + let soundBId: string; + const soundAName = `sound-a-${randomUUID()}`; + const soundBName = `sound-b-${randomUUID()}`; + + before(async () => { + soundAId = await createCustomSound(soundAName, mockWavAudioPath); + soundBId = await createCustomSound(soundBName, mockMp3AudioPath); + }); + + after(async () => { + await deleteCustomSound(soundAId); + await deleteCustomSound(soundBId); + }); + + it('should not mutate the underlying file or metadata if the update fails validation (e.g., name collision)', async () => { + await request + .post(api('custom-sounds.update')) + .set(credentials) + .attach('sound', mockMp3AudioPath) + .field('_id', soundAId) + .field('name', soundBName) + .expect(400) + .expect((res) => { + expect(res.body).to.have.property('success', false); + expect(res.body).to.have.property('error', 'The custom sound name is already in use [Custom_Sound_Error_Name_Already_In_Use]'); + }); + + await request + .get(api('custom-sounds.getOne')) + .set(credentials) + .query({ _id: soundAId }) + .expect(200) + .expect((res) => { + expect(res.body.sound).to.have.property('name', soundAName); + expect(res.body.sound).to.have.property('extension', 'wav'); + }); + + const originalWavBuffer = fs.readFileSync(mockWavAudioPath); + + await request + .get(`/custom-sounds/${soundAId}.wav`) + .set(credentials) + .expect(200) + .expect((res) => { + expect(res.headers).to.have.property('content-type', 'audio/wav'); + expect(Buffer.isBuffer(res.body)).to.be.true; + expect(originalWavBuffer.equals(res.body)).to.be.true; + }); + + await request.get(`/custom-sounds/${soundAId}.mp3`).set(credentials).expect(404); + }); + }); }); describe('[/custom-sounds.list]', () => { From 80b90cd5604d8c5441874d7b6e2dd851d4d7682b Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Tue, 26 May 2026 20:52:40 -0300 Subject: [PATCH 35/69] regression: unfollowed thread message marked as unread (#40644) Co-authored-by: Julio Araujo Co-authored-by: Douglas Gubert --- .../client/lib/chats/readStateManager.ts | 3 +- .../setMessageJumpQueryStringParameter.ts | 6 +- .../hooks/useTryToJumpToMessage.ts | 3 +- .../hooks/useTryToJumpToThreadMessage.spec.ts | 132 ++++++++++++++++++ .../hooks/useTryToJumpToThreadMessage.ts | 5 +- .../room/body/hooks/useUnreadMessages.ts | 5 +- .../Threads/components/ThreadMessageList.tsx | 24 +++- 7 files changed, 166 insertions(+), 12 deletions(-) create mode 100644 apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.spec.ts diff --git a/apps/meteor/client/lib/chats/readStateManager.ts b/apps/meteor/client/lib/chats/readStateManager.ts index 3e824a1da76db..e29c76cf63296 100644 --- a/apps/meteor/client/lib/chats/readStateManager.ts +++ b/apps/meteor/client/lib/chats/readStateManager.ts @@ -72,7 +72,8 @@ export class ReadStateManager extends Emitter { (record) => record.rid === this.subscription?.rid && record.ts.getTime() > (this.subscription.ls?.getTime() ?? 0) && - record.u._id !== getUserId(), + record.u._id !== getUserId() && + (!record.tmid || record.tshow === true), (a, b) => a.ts.getTime() - b.ts.getTime(), ); diff --git a/apps/meteor/client/lib/utils/setMessageJumpQueryStringParameter.ts b/apps/meteor/client/lib/utils/setMessageJumpQueryStringParameter.ts index 6e94fe7902351..d30b12790e836 100644 --- a/apps/meteor/client/lib/utils/setMessageJumpQueryStringParameter.ts +++ b/apps/meteor/client/lib/utils/setMessageJumpQueryStringParameter.ts @@ -3,14 +3,14 @@ import type { LocationPathname } from '@rocket.chat/ui-contexts'; import { router } from '../../providers/RouterProvider'; -export const setMessageJumpQueryStringParameter = async (msg: IMessage['_id'] | null) => { - const { msg: _, ...search } = router.getSearchParameters(); +export const setMessageJumpQueryStringParameter = async (msg: IMessage['_id'] | null, context?: 'jumpToUnread') => { + const { msg: _msg, jumpContext: _jumpContext, ...search } = router.getSearchParameters(); const locationPathname = new URL(window.location.href).pathname as LocationPathname; router.navigate( { pathname: locationPathname, - search: msg ? { ...search, msg } : search, + search: msg ? { ...search, msg, ...(context && { jumpContext: context }) } : search, }, { replace: true }, ); diff --git a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts index 779ef48794284..d15ef63a8765b 100644 --- a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts +++ b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToMessage.ts @@ -42,7 +42,8 @@ const useTryToJumpToMessage = ({ rid, virtualizerRef, setIsJumpingToMessage, mes return; } // Thread deep links are handled by useTryToJumpToThreadMessage; do not use the main list virtualizer - if (message && isThreadMessage(message) && !isThreadMainMessage(message)) { + // If tshow is true, there is a preview on the main list, in this case we scroll to it + if (message && isThreadMessage(message) && !isThreadMainMessage(message) && message.tshow !== true) { setIsJumpingToMessage(false); return; } diff --git a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.spec.ts b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.spec.ts new file mode 100644 index 0000000000000..2d99ff0eef2f9 --- /dev/null +++ b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.spec.ts @@ -0,0 +1,132 @@ +import { mockAppRoot } from '@rocket.chat/mock-providers'; +import { renderHook, waitFor } from '@testing-library/react'; + +import useTryToJumpToThreadMessage from './useTryToJumpToThreadMessage'; +import { RoomHistoryManager } from '../../../../../app/ui-utils/client'; + +jest.mock('../../../../../app/ui-utils/client', () => ({ + RoomHistoryManager: { + getSurroundingMessages: jest.fn().mockResolvedValue(undefined), + isLoaded: jest.fn().mockReturnValue(false), + getMore: jest.fn().mockResolvedValue(undefined), + }, +})); + +jest.mock('../../../../lib/RoomManager', () => ({ + RoomManager: { + opened: undefined as string | undefined, + }, +})); + +jest.mock('../../../../lib/rooms/roomCoordinator', () => ({ + roomCoordinator: { + openRouteLink: jest.fn(), + }, +})); + +jest.mock('../../../../providers/RouterProvider', () => ({ + router: { + getSearchParameters: jest.fn().mockReturnValue({}), + getRouteParameters: jest.fn().mockReturnValue({}), + }, +})); + +jest.mock('../../../../stores', () => ({ + Subscriptions: { + state: { + find: jest.fn().mockReturnValue(undefined), + }, + }, +})); + +const mockedRoomHistoryManager = jest.mocked(RoomHistoryManager); + +afterEach(() => { + jest.clearAllMocks(); +}); + +describe('useTryToJumpToThreadMessage', () => { + describe('early return when msg param is absent or jumpContext is jumpToUnread', () => { + it('should not navigate or load messages when msg search parameter is absent', () => { + const endpointSpy = jest.fn(); + + renderHook(() => useTryToJumpToThreadMessage(), { + wrapper: mockAppRoot().withEndpoint('GET', '/v1/chat.getMessage', endpointSpy).build(), + }); + + expect(endpointSpy).not.toHaveBeenCalled(); + expect(mockedRoomHistoryManager.getSurroundingMessages).not.toHaveBeenCalled(); + expect(mockedRoomHistoryManager.getMore).not.toHaveBeenCalled(); + }); + + it('should not navigate or load messages when jumpContext is jumpToUnread', async () => { + const threadMessage = { + _id: 'msg-1', + rid: 'room-1', + tmid: 'parent-msg-1', + ts: new Date('2024-01-01T00:00:00Z').toISOString(), + u: { _id: 'user-1', username: 'john' }, + msg: 'Thread reply', + _updatedAt: new Date('2024-01-01T00:00:00Z').toISOString(), + }; + + const endpointSpy = jest.fn().mockResolvedValue({ message: threadMessage }); + + renderHook(() => useTryToJumpToThreadMessage(), { + wrapper: mockAppRoot() + .withRouter({ getSearchParameters: () => ({ msg: 'msg-1', jumpContext: 'jumpToUnread' }) }) + .withEndpoint('GET', '/v1/chat.getMessage', endpointSpy) + .withMethod('getRoomById', () => ({ _id: 'room-1', t: 'c', name: 'general' }) as any) + .build(), + }); + + await waitFor(() => { + expect(endpointSpy).toHaveBeenCalledWith({ msgId: 'msg-1' }); + }); + + await waitFor(async () => { + await new Promise((resolve) => setTimeout(resolve, 300)); + expect(mockedRoomHistoryManager.getMore).not.toHaveBeenCalled(); + }); + + expect(mockedRoomHistoryManager.getSurroundingMessages).not.toHaveBeenCalled(); + expect(mockedRoomHistoryManager.getMore).not.toHaveBeenCalled(); + }); + }); + + describe('when jumpContext is absent', () => { + it('should load more messages when jumpContext is null', async () => { + const threadMessage = { + _id: 'msg-1', + rid: 'room-1', + tmid: 'parent-msg-1', + ts: new Date('2024-01-01T00:00:00Z').toISOString(), + u: { _id: 'user-1', username: 'john' }, + msg: 'Thread reply', + _updatedAt: new Date('2024-01-01T00:00:00Z').toISOString(), + }; + + mockedRoomHistoryManager.isLoaded.mockReturnValue(false); + + const endpointSpy = jest.fn().mockResolvedValue({ message: threadMessage }); + + renderHook(() => useTryToJumpToThreadMessage(), { + wrapper: mockAppRoot() + .withRouter({ getSearchParameters: () => ({ msg: 'msg-1' }) }) + .withEndpoint('GET', '/v1/chat.getMessage', endpointSpy) + .withMethod('getRoomById', () => ({ _id: 'room-1', t: 'c', name: 'general' }) as any) + .build(), + }); + + await waitFor(() => { + expect(endpointSpy).toHaveBeenCalledWith({ msgId: 'msg-1' }); + }); + + await waitFor(() => { + expect(mockedRoomHistoryManager.getMore).toHaveBeenCalledWith('room-1'); + }); + + expect(mockedRoomHistoryManager.getSurroundingMessages).not.toHaveBeenCalled(); + }); + }); +}); diff --git a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.ts b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.ts index 604aa1e72a9f2..d68f05ad62ac5 100644 --- a/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.ts +++ b/apps/meteor/client/views/room/MessageList/hooks/useTryToJumpToThreadMessage.ts @@ -11,6 +11,7 @@ import { useGoToRoom } from '../../hooks/useGoToRoom'; const useTryToJumpToThreadMessage = (): void => { const messageJumpParam = useSearchParameter('msg'); + const messageJumpContext = useSearchParameter('jumpContext'); const goToRoom = useGoToRoom(); const tab = useRouteParameter('tab'); const context = useRouteParameter('context'); @@ -28,7 +29,7 @@ const useTryToJumpToThreadMessage = (): void => { }); useEffect(() => { - if (!messageJumpParam) { + if (!messageJumpParam || messageJumpContext === 'jumpToUnread') { return; } @@ -56,7 +57,7 @@ const useTryToJumpToThreadMessage = (): void => { await RoomHistoryManager.getMore(message.rid); } })(); - }, [messageJumpParam, message, goToRoom, tab, context]); + }, [messageJumpParam, message, goToRoom, tab, context, messageJumpContext]); }; export default useTryToJumpToThreadMessage; diff --git a/apps/meteor/client/views/room/body/hooks/useUnreadMessages.ts b/apps/meteor/client/views/room/body/hooks/useUnreadMessages.ts index 80a4105a57fd2..cd552056ed214 100644 --- a/apps/meteor/client/views/room/body/hooks/useUnreadMessages.ts +++ b/apps/meteor/client/views/room/body/hooks/useUnreadMessages.ts @@ -64,14 +64,15 @@ export const useHandleUnread = ( let message = firstUnread; if (!message) { message = findFirstMessage( - (record) => record.rid === rid && record.ts.getTime() > (unread?.since.getTime() ?? -Infinity), + (record) => + record.rid === rid && record.ts.getTime() > (unread?.since.getTime() ?? -Infinity) && (!record.tmid || record.tshow === true), (a, b) => a.ts.getTime() - b.ts.getTime(), ); } if (!message) { return; } - setMessageJumpQueryStringParameter(message?._id); + setMessageJumpQueryStringParameter(message?._id, 'jumpToUnread'); chat.readStateManager.markAsRead(); setUnreadCount(0); }, [room._id, setUnreadCount, findFirstMessage, unread?.since, chat.readStateManager]); diff --git a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx index 9d05fc53c519e..a3161fdae4e9d 100644 --- a/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx +++ b/apps/meteor/client/views/room/contextualBar/Threads/components/ThreadMessageList.tsx @@ -73,7 +73,8 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot const { messageListRef } = useMessageListNavigation(); const virtualizerRef = useRef(null); - const isAtBottom = useRef(true); + const isAtBottom = useRef(null); + const lastScrollSizeRef = useRef(0); const items = loading ? [] : [mainMessage, ...messages]; @@ -104,7 +105,7 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot setShouldJumpToBottom(false); return; } - if (isAtBottom.current && lastScrollSizeRef.current !== handle?.scrollSize) { + if (isAtBottom.current === true && lastScrollSizeRef.current !== handle?.scrollSize) { lastScrollSizeRef.current = handle?.scrollSize ?? 0; setShouldJumpToBottom(true); } @@ -130,12 +131,29 @@ const ThreadMessageList = ({ mainMessage, shouldJumpToBottom, setShouldJumpToBot setShouldJumpToBottom(false); handle.scrollToIndex(threadMsgTargetIndex, { align: 'center' }); setHighlightMessage(msgJumpParam); - setMessageJumpQueryStringParameter(null); setTimeout(() => { clearHighlightMessage(); }, 2000); }, [threadMsgTargetIndex, msgJumpParam, mainMessage._id, setShouldJumpToBottom]); + useEffect(() => { + if (!msgJumpParam) { + return; + } + const clearMsgJumpParam = () => { + if (messages.find((m) => m._id === msgJumpParam) && mainMessage._id !== msgJumpParam) { + setMessageJumpQueryStringParameter(null); + } + }; + const timeoutId = setTimeout(() => { + clearMsgJumpParam(); + }, 500); + return () => { + clearMsgJumpParam(); + clearTimeout(timeoutId); + }; + }, [msgJumpParam, messages, mainMessage._id]); + useEffect(() => { const handlerId = `thread-scroll-${mainMessage._id}`; clientCallbacks.add( From caf0b1b2d3307e14d611959729c1262899f86b27 Mon Sep 17 00:00:00 2001 From: Martin Schoeler Date: Tue, 26 May 2026 20:57:29 -0300 Subject: [PATCH 36/69] regression: remove unnecessary `
  • ` item (#40645) Co-authored-by: gabriellsh <40830821+gabriellsh@users.noreply.github.com> --- apps/meteor/client/views/room/MessageList/MessageListItem.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/views/room/MessageList/MessageListItem.tsx b/apps/meteor/client/views/room/MessageList/MessageListItem.tsx index 6b69cb8d6c3ce..5cb67d63a05d6 100644 --- a/apps/meteor/client/views/room/MessageList/MessageListItem.tsx +++ b/apps/meteor/client/views/room/MessageList/MessageListItem.tsx @@ -78,7 +78,7 @@ export const MessageListItem = ({ /> )} {isThreadMessage(message) && ( -
  • +
    -
  • +
    )} {system && } From 9bd3da73b1ca5fa7a2ab28dd5741d1ba99b7f7f6 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Tue, 26 May 2026 20:59:07 -0300 Subject: [PATCH 37/69] regression: Password TOTP failing for meteor methods (#40626) --- apps/meteor/client/lib/2fa/process2faReturn.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/apps/meteor/client/lib/2fa/process2faReturn.ts b/apps/meteor/client/lib/2fa/process2faReturn.ts index 7bdac41bc1f50..36c46c0cec6e6 100644 --- a/apps/meteor/client/lib/2fa/process2faReturn.ts +++ b/apps/meteor/client/lib/2fa/process2faReturn.ts @@ -141,12 +141,13 @@ export const invokeTwoFactorModal = async ( props: { ...props, onConfirm: async (code: string, method: string): Promise => { + const actualCode = method === 'password' ? SHA256(code) : code; if (validateCode) { - await validateCode(code, method); + await validateCode(actualCode, method); } isResolved = true; imperativeModal.close(); - resolve(method === 'password' ? SHA256(code) : code); + resolve(actualCode); }, onClose: (): void => { if (isClosed) { From 905c04176a38fcfdf8846c51fb7a1121c7cadf38 Mon Sep 17 00:00:00 2001 From: Douglas Gubert Date: Wed, 27 May 2026 10:13:59 -0300 Subject: [PATCH 38/69] regression: move AppsPermissions definition back to @rocket.chat/apps-engine (#40691) --- .../src/definition/metadata/AppPermissions.ts | 166 +++++++++++++++++ .../src/definition/metadata/index.ts | 1 + .../src/server/permissions/AppPermissions.ts | 172 +----------------- 3 files changed, 168 insertions(+), 171 deletions(-) create mode 100644 packages/apps-engine/src/definition/metadata/AppPermissions.ts diff --git a/packages/apps-engine/src/definition/metadata/AppPermissions.ts b/packages/apps-engine/src/definition/metadata/AppPermissions.ts new file mode 100644 index 0000000000000..4d02fe63abd9e --- /dev/null +++ b/packages/apps-engine/src/definition/metadata/AppPermissions.ts @@ -0,0 +1,166 @@ +import type { INetworkingPermission, IPermission, IReadSettingPermission, IWorkspaceTokenPermission } from '../permissions/IPermission'; + +/** + * @description + * + * App Permission naming rules: + * + * 'scope-name': { + * 'permission-name': { name: 'scope-name.permission-name' } + * } + * + * You can retrieve this permission by using: + * AppPermissions['scope-name']['permission-name'] -> { name: 'scope-name.permission-name' } + * + * @example + * + * AppPermissions.upload.read // { name: 'upload.read', domains: [] } + */ +export const AppPermissions = { + 'user': { + read: { name: 'user.read' }, + write: { name: 'user.write' }, + }, + 'upload': { + read: { name: 'upload.read' }, + write: { name: 'upload.write' }, + }, + 'email': { + send: { name: 'email.send' }, + }, + 'ui': { + interaction: { name: 'ui.interact' }, + registerButtons: { name: 'ui.registerButtons' }, + }, + 'setting': { + read: { name: 'server-setting.read', hiddenSettings: [] } as IReadSettingPermission, + write: { name: 'server-setting.write' }, + }, + 'room': { + 'read': { name: 'room.read' }, + 'write': { name: 'room.write' }, + 'system-view-all': { name: 'room.system.view-all' }, + }, + 'role': { + read: { name: 'role.read' }, + write: { name: 'role.write' }, + }, + 'message': { + read: { name: 'message.read' }, + write: { name: 'message.write' }, + }, + 'moderation': { + read: { name: 'moderation.read' }, + write: { name: 'moderation.write' }, + }, + 'contact': { + read: { name: 'contact.read' }, + write: { name: 'contact.write' }, + }, + 'threads': { + read: { name: 'threads.read' }, + }, + 'livechat-status': { + read: { name: 'livechat-status.read' }, + }, + 'livechat-custom-fields': { + write: { name: 'livechat-custom-fields.write' }, + }, + 'livechat-visitor': { + read: { name: 'livechat-visitor.read' }, + write: { name: 'livechat-visitor.write' }, + }, + 'livechat-message': { + read: { name: 'livechat-message.read' }, + write: { name: 'livechat-message.write' }, + multiple: { name: 'livechat-message.multiple' }, + }, + 'livechat-room': { + read: { name: 'livechat-room.read' }, + write: { name: 'livechat-room.write' }, + }, + 'livechat-department': { + read: { name: 'livechat-department.read' }, + write: { name: 'livechat-department.write' }, + multiple: { name: 'livechat-department.multiple' }, + }, + 'env': { + read: { name: 'env.read' }, + }, + 'cloud': { + 'workspace-token': { name: 'cloud.workspace-token', scopes: [] } as IWorkspaceTokenPermission, + }, + // Internal permissions + 'scheduler': { + default: { name: 'scheduler' }, + }, + 'networking': { + default: { name: 'networking', domains: [] } as INetworkingPermission, + }, + 'persistence': { + default: { name: 'persistence' }, + }, + 'command': { + default: { name: 'slashcommand' }, + }, + 'videoConference': { + read: { name: 'video-conference.read' }, + write: { name: 'video-conference.write' }, + provider: { name: 'video-conference-provider' }, + }, + 'apis': { + default: { name: 'api' }, + }, + 'oauth-app': { + read: { name: 'oauth-app.read' }, + write: { name: 'oauth-app.write' }, + }, + 'outboundComms': { + provide: { name: 'outbound-communication.provide' }, + }, + 'experimental': { + default: { name: 'experimental.default' }, + }, + 'abac': { + read: { name: 'abac.read' }, + }, +}; + +/** + * @description + * Default permissions for apps + * Used to ensure backward compatibility with apps + * that were developed before the permission system was introduced. + */ +export const defaultPermissions: Array = [ + AppPermissions.user.read, + AppPermissions.user.write, + AppPermissions.upload.read, + AppPermissions.upload.write, + AppPermissions.ui.interaction, + AppPermissions.setting.read, + AppPermissions.setting.write, + AppPermissions.room.read, + AppPermissions.room.write, + AppPermissions.message.read, + AppPermissions.message.write, + AppPermissions['livechat-department'].read, + AppPermissions['livechat-department'].write, + AppPermissions['livechat-room'].read, + AppPermissions['livechat-room'].write, + AppPermissions['livechat-message'].read, + AppPermissions['livechat-message'].write, + AppPermissions['livechat-visitor'].read, + AppPermissions['livechat-visitor'].write, + AppPermissions['livechat-status'].read, + AppPermissions['livechat-custom-fields'].write, + AppPermissions.scheduler.default, + AppPermissions.networking.default, + AppPermissions.persistence.default, + AppPermissions.env.read, + AppPermissions.command.default, + AppPermissions.videoConference.provider, + AppPermissions.videoConference.read, + AppPermissions.videoConference.write, + AppPermissions.apis.default, +]; diff --git a/packages/apps-engine/src/definition/metadata/index.ts b/packages/apps-engine/src/definition/metadata/index.ts index 7ebcad79d20d8..37e5aea83c1bb 100644 --- a/packages/apps-engine/src/definition/metadata/index.ts +++ b/packages/apps-engine/src/definition/metadata/index.ts @@ -4,6 +4,7 @@ import type { IAppInfo } from './IAppInfo'; import { RocketChatAssociationModel, RocketChatAssociationRecord } from './RocketChatAssociations'; export * from './AppInterface'; +export * from './AppPermissions'; export type { IAppAuthorInfo, IAppInfo }; export { AppMethod, RocketChatAssociationModel, RocketChatAssociationRecord }; diff --git a/packages/apps/src/server/permissions/AppPermissions.ts b/packages/apps/src/server/permissions/AppPermissions.ts index 9485aff8593d4..821f621dd3281 100644 --- a/packages/apps/src/server/permissions/AppPermissions.ts +++ b/packages/apps/src/server/permissions/AppPermissions.ts @@ -1,171 +1 @@ -import type { - INetworkingPermission, - IPermission, - IReadSettingPermission, - IWorkspaceTokenPermission, -} from '@rocket.chat/apps-engine/definition/permissions/IPermission'; - -/** - * @description - * - * App Permission naming rules: - * - * 'scope-name': { - * 'permission-name': { name: 'scope-name.permission-name' } - * } - * - * You can retrive this permission by using: - * AppPermissions['scope-name']['permission-name'] -> { name: 'scope-name.permission-name' } - * - * @example - * - * AppPermissions.upload.read // { name: 'upload.read', domains: [] } - */ -export const AppPermissions = { - 'user': { - read: { name: 'user.read' }, - write: { name: 'user.write' }, - }, - 'upload': { - read: { name: 'upload.read' }, - write: { name: 'upload.write' }, - }, - 'email': { - send: { name: 'email.send' }, - }, - 'ui': { - interaction: { name: 'ui.interact' }, - registerButtons: { name: 'ui.registerButtons' }, - }, - 'setting': { - read: { name: 'server-setting.read', hiddenSettings: [] } as IReadSettingPermission, - write: { name: 'server-setting.write' }, - }, - 'room': { - 'read': { name: 'room.read' }, - 'write': { name: 'room.write' }, - 'system-view-all': { name: 'room.system.view-all' }, - }, - 'role': { - read: { name: 'role.read' }, - write: { name: 'role.write' }, - }, - 'message': { - read: { name: 'message.read' }, - write: { name: 'message.write' }, - }, - 'moderation': { - read: { name: 'moderation.read' }, - write: { name: 'moderation.write' }, - }, - 'contact': { - read: { name: 'contact.read' }, - write: { name: 'contact.write' }, - }, - 'threads': { - read: { name: 'threads.read' }, - }, - 'livechat-status': { - read: { name: 'livechat-status.read' }, - }, - 'livechat-custom-fields': { - write: { name: 'livechat-custom-fields.write' }, - }, - 'livechat-visitor': { - read: { name: 'livechat-visitor.read' }, - write: { name: 'livechat-visitor.write' }, - }, - 'livechat-message': { - read: { name: 'livechat-message.read' }, - write: { name: 'livechat-message.write' }, - multiple: { name: 'livechat-message.multiple' }, - }, - 'livechat-room': { - read: { name: 'livechat-room.read' }, - write: { name: 'livechat-room.write' }, - }, - 'livechat-department': { - read: { name: 'livechat-department.read' }, - write: { name: 'livechat-department.write' }, - multiple: { name: 'livechat-department.multiple' }, - }, - 'env': { - read: { name: 'env.read' }, - }, - 'cloud': { - 'workspace-token': { name: 'cloud.workspace-token', scopes: [] } as IWorkspaceTokenPermission, - }, - // Internal permissions - 'scheduler': { - default: { name: 'scheduler' }, - }, - 'networking': { - default: { name: 'networking', domains: [] } as INetworkingPermission, - }, - 'persistence': { - default: { name: 'persistence' }, - }, - 'command': { - default: { name: 'slashcommand' }, - }, - 'videoConference': { - read: { name: 'video-conference.read' }, - write: { name: 'video-conference.write' }, - provider: { name: 'video-conference-provider' }, - }, - 'apis': { - default: { name: 'api' }, - }, - 'oauth-app': { - read: { name: 'oauth-app.read' }, - write: { name: 'oauth-app.write' }, - }, - 'outboundComms': { - provide: { name: 'outbound-communication.provide' }, - }, - 'experimental': { - default: { name: 'experimental.default' }, - }, - 'abac': { - read: { name: 'abac.read' }, - }, -}; - -/** - * @description - * Default permissions for apps - * Used to ensure backward compatibility with apps - * that were developed before the permission system was introduced. - */ -export const defaultPermissions: Array = [ - AppPermissions.user.read, - AppPermissions.user.write, - AppPermissions.upload.read, - AppPermissions.upload.write, - AppPermissions.ui.interaction, - AppPermissions.setting.read, - AppPermissions.setting.write, - AppPermissions.room.read, - AppPermissions.room.write, - AppPermissions.message.read, - AppPermissions.message.write, - AppPermissions['livechat-department'].read, - AppPermissions['livechat-department'].write, - AppPermissions['livechat-room'].read, - AppPermissions['livechat-room'].write, - AppPermissions['livechat-message'].read, - AppPermissions['livechat-message'].write, - AppPermissions['livechat-visitor'].read, - AppPermissions['livechat-visitor'].write, - AppPermissions['livechat-status'].read, - AppPermissions['livechat-custom-fields'].write, - AppPermissions.scheduler.default, - AppPermissions.networking.default, - AppPermissions.persistence.default, - AppPermissions.env.read, - AppPermissions.command.default, - AppPermissions.videoConference.provider, - AppPermissions.videoConference.read, - AppPermissions.videoConference.write, - AppPermissions.apis.default, -]; +export { AppPermissions, defaultPermissions } from '@rocket.chat/apps-engine/definition/metadata/AppPermissions'; From c7a54a4ab70c50fbe3720852359607e2b34f6ea8 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Wed, 27 May 2026 16:35:53 -0300 Subject: [PATCH 39/69] Revert "fix: add TEST_MODE=true to OAuth ratelimiter's 'skip' (#40650)" This reverts commit be11acd7839dd94edbee023d8dc2cc9a57450902. --- apps/meteor/server/configuration/configurePassport.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/meteor/server/configuration/configurePassport.ts b/apps/meteor/server/configuration/configurePassport.ts index a7c5461a81e93..48c9ccd9d85cc 100644 --- a/apps/meteor/server/configuration/configurePassport.ts +++ b/apps/meteor/server/configuration/configurePassport.ts @@ -56,7 +56,6 @@ export const configurePassport = (settings: ICachedSettings) => { windowMs: settings.get('API_Enable_Rate_Limiter_Limit_Time_Default'), max: settings.get('API_Enable_Rate_Limiter_Limit_Calls_Default'), skip: () => - process.env.TEST_MODE === 'true' || settings.get('API_Enable_Rate_Limiter') !== true || (process.env.NODE_ENV === 'development' && settings.get('API_Enable_Rate_Limiter_Dev') !== true), handler: (_req, res) => { From 9772a524d24324814729112d2f512f8b99565dcc Mon Sep 17 00:00:00 2001 From: Yash Rajpal <58601732+yash-rajpal@users.noreply.github.com> Date: Thu, 28 May 2026 01:00:24 +0530 Subject: [PATCH 40/69] revert: Phishing resistant multi factor authentication (#40679) Co-authored-by: Tasso Evangelista --- .changeset/flat-poets-cheat.md | 28 -- apps/meteor/app/2fa/server/code/EmailCheck.ts | 4 +- .../app/2fa/server/code/EmailCheckForOAuth.ts | 37 -- apps/meteor/app/2fa/server/code/TOTPCheck.ts | 2 +- .../app/2fa/server/code/TOTPCheckForOAuth.ts | 35 -- apps/meteor/app/2fa/server/code/index.ts | 21 +- apps/meteor/app/api/server/ApiClass.ts | 2 +- apps/meteor/app/api/server/index.ts | 2 +- .../app/api/server/v1/twoFactorChallenges.ts | 112 ----- .../app/apple/lib/handleIdentityToken.ts | 7 +- .../apple/server/appleOauthRegisterService.ts | 133 ++--- apps/meteor/app/apple/server/loginHandler.ts | 4 +- .../app/custom-oauth/server/customOAuth.ts | 393 --------------- .../server/custom_oauth_server.js | 3 - apps/meteor/app/dolphin/server/lib.ts | 39 +- apps/meteor/app/drupal/server/lib.ts | 40 +- apps/meteor/app/gitlab/server/lib.ts | 49 +- .../app/lib/server/methods/createToken.ts | 2 +- apps/meteor/app/linkedin/server/index.ts | 1 - apps/meteor/app/linkedin/server/lib.ts | 49 -- .../app/meteor-developer/server/index.ts | 1 - .../meteor/app/meteor-developer/server/lib.ts | 46 -- apps/meteor/app/nextcloud/server/lib.ts | 45 +- apps/meteor/app/wordpress/server/lib.ts | 26 +- .../TwoFactorModal/TwoFactorEmailModal.tsx | 13 +- .../TwoFactorModal/TwoFactorModal.tsx | 6 +- .../meteor/client/lib/2fa/process2faReturn.ts | 9 +- .../meteor/client/lib/buildAuthDeeplinkURL.ts | 5 - apps/meteor/client/lib/sdk/ddpSdk.ts | 2 +- apps/meteor/client/startup/routes.tsx | 10 - .../OAuthTwoFactorAuthenticationRouter.tsx | 101 ---- apps/meteor/client/views/root/AppLayout.tsx | 4 - .../views/root/hooks/useLoginOtherClients.ts | 30 -- .../views/root/hooks/useLoginViaQuery.ts | 7 +- .../hooks/useShareSessionWithOtherClients.ts | 41 -- .../definition/externals/express-session.d.ts | 7 - apps/meteor/definition/externals/express.d.ts | 6 - .../externals/meteor/accounts-base.d.ts | 6 +- apps/meteor/package.json | 17 - .../server/configuration/accounts_meld.js | 4 + .../server/configuration/configurePassport.ts | 91 ---- apps/meteor/server/configuration/index.ts | 2 - apps/meteor/server/importPackages.ts | 2 - .../lib/oauth/addPassportCustomOAuth.ts | 53 -- .../lib/oauth/configureOAuthServices.ts | 87 ---- .../lib/oauth/createOAuthServiceConfig.ts | 59 --- .../server/lib/oauth/getOAuthServices.ts | 34 -- apps/meteor/server/lib/oauth/oauthConfigs.ts | 36 -- .../server/lib/oauth/passportOAuthCallback.ts | 51 -- apps/meteor/server/lib/oauth/twoFactorAuth.ts | 37 -- .../server/lib/oauth/updateOAuthServices.ts | 10 +- .../meteor/server/lib/oauth/verifyFunction.ts | 40 -- apps/meteor/server/models.ts | 2 - apps/meteor/server/settings/oauth.ts | 7 - .../tests/e2e/fixtures/addCustomOAuth.ts | 3 - .../src/ILoginServiceConfiguration.ts | 5 - .../core-typings/src/ITwoFactorChallenge.ts | 7 - packages/core-typings/src/IUser.ts | 2 +- packages/core-typings/src/index.ts | 2 - packages/desktop-api/src/index.ts | 1 - packages/i18n/src/locales/en.i18n.json | 3 - packages/model-typings/src/index.ts | 1 - .../src/models/ITwoFactorChallengesModel.ts | 10 - packages/models/src/index.ts | 2 - packages/models/src/modelClasses.ts | 1 - .../models/src/models/TwoFactorChallenges.ts | 38 -- packages/rest-typings/src/index.ts | 3 - .../src/v1/twoFactorChallenges.ts | 43 -- packages/web-ui-registration/global.d.ts | 7 - .../web-ui-registration/src/LoginServices.tsx | 43 +- .../src/LoginServicesButton.tsx | 19 +- .../web-ui-registration/tsconfig.build.json | 2 +- packages/web-ui-registration/tsconfig.json | 2 +- yarn.lock | 467 +++++------------- 74 files changed, 275 insertions(+), 2246 deletions(-) delete mode 100644 .changeset/flat-poets-cheat.md delete mode 100644 apps/meteor/app/2fa/server/code/EmailCheckForOAuth.ts delete mode 100644 apps/meteor/app/2fa/server/code/TOTPCheckForOAuth.ts delete mode 100644 apps/meteor/app/api/server/v1/twoFactorChallenges.ts delete mode 100644 apps/meteor/app/custom-oauth/server/customOAuth.ts delete mode 100644 apps/meteor/app/linkedin/server/index.ts delete mode 100644 apps/meteor/app/linkedin/server/lib.ts delete mode 100644 apps/meteor/app/meteor-developer/server/index.ts delete mode 100644 apps/meteor/app/meteor-developer/server/lib.ts delete mode 100644 apps/meteor/client/lib/buildAuthDeeplinkURL.ts delete mode 100644 apps/meteor/client/views/OAuthTwoFactorAuthentication/OAuthTwoFactorAuthenticationRouter.tsx delete mode 100644 apps/meteor/client/views/root/hooks/useLoginOtherClients.ts delete mode 100644 apps/meteor/client/views/root/hooks/useShareSessionWithOtherClients.ts delete mode 100644 apps/meteor/definition/externals/express-session.d.ts delete mode 100644 apps/meteor/server/configuration/configurePassport.ts delete mode 100644 apps/meteor/server/lib/oauth/addPassportCustomOAuth.ts delete mode 100644 apps/meteor/server/lib/oauth/configureOAuthServices.ts delete mode 100644 apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts delete mode 100644 apps/meteor/server/lib/oauth/getOAuthServices.ts delete mode 100644 apps/meteor/server/lib/oauth/oauthConfigs.ts delete mode 100644 apps/meteor/server/lib/oauth/passportOAuthCallback.ts delete mode 100644 apps/meteor/server/lib/oauth/twoFactorAuth.ts delete mode 100644 apps/meteor/server/lib/oauth/verifyFunction.ts delete mode 100644 packages/core-typings/src/ITwoFactorChallenge.ts delete mode 100644 packages/model-typings/src/models/ITwoFactorChallengesModel.ts delete mode 100644 packages/models/src/models/TwoFactorChallenges.ts delete mode 100644 packages/rest-typings/src/v1/twoFactorChallenges.ts delete mode 100644 packages/web-ui-registration/global.d.ts diff --git a/.changeset/flat-poets-cheat.md b/.changeset/flat-poets-cheat.md deleted file mode 100644 index 2560e2d3ee172..0000000000000 --- a/.changeset/flat-poets-cheat.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -'@rocket.chat/web-ui-registration': minor -'@rocket.chat/model-typings': minor -'@rocket.chat/core-typings': minor -'@rocket.chat/rest-typings': minor -'@rocket.chat/desktop-api': minor -'@rocket.chat/models': minor -'@rocket.chat/i18n': minor -'@rocket.chat/meteor': minor ---- - -## Phishing-Resistant Multi-Factor Authentication - -Introduces a more secure and reliable server-side OAuth authentication flow. - -### What’s New - -- **Improved OAuth login security** - OAuth authentication now happens fully on the server, reducing the risk of token theft, phishing attacks, and client-side credential interception. - -- **Built-in CSRF, state validation, and PKCE protection** - OAuth logins now include stronger protection against CSRF attacks, request tampering, and authorization code interception through secure state validation and PKCE support. - -- **Improved two-step verification with OAuth logins** - Users with email or TOTP two-factor authentication enabled will now be asked to complete 2FA even when signing in with providers like Google, GitHub, GitLab, and others. - -- **Improved mobile & desktop app login** - Mobile and desktop apps now support a smoother and more secure deep-link OAuth login flow. diff --git a/apps/meteor/app/2fa/server/code/EmailCheck.ts b/apps/meteor/app/2fa/server/code/EmailCheck.ts index c52531eaac781..5967aa518348b 100644 --- a/apps/meteor/app/2fa/server/code/EmailCheck.ts +++ b/apps/meteor/app/2fa/server/code/EmailCheck.ts @@ -10,7 +10,7 @@ import * as Mailer from '../../../mailer/server/api'; import { settings } from '../../../settings/server'; export class EmailCheck implements ICodeCheck { - public readonly name: string = 'email'; + public readonly name = 'email'; private getUserVerifiedEmails(user: IUser): string[] { if (!Array.isArray(user.emails)) { @@ -145,6 +145,6 @@ ${t('If_you_didnt_try_to_login_in_your_account_please_ignore_this_email')} public async maxFaildedAttemtpsReached(user: IUser) { const maxAttempts = settings.get('Accounts_TwoFactorAuthentication_Max_Invalid_Email_Code_Attempts'); - return Users.maxInvalidEmailCodeAttemptsReached(user._id, maxAttempts); + return (await Users.maxInvalidEmailCodeAttemptsReached(user._id, maxAttempts)) as boolean; } } diff --git a/apps/meteor/app/2fa/server/code/EmailCheckForOAuth.ts b/apps/meteor/app/2fa/server/code/EmailCheckForOAuth.ts deleted file mode 100644 index 68c3e8a05506d..0000000000000 --- a/apps/meteor/app/2fa/server/code/EmailCheckForOAuth.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { TwoFactorChallenges } from '@rocket.chat/models'; - -import { EmailCheck } from './EmailCheck'; - -export class EmailCheckForOAuth extends EmailCheck { - public override readonly name = 'email-oauth'; - - public readonly method = 'email'; - - public async sendTwoFactorChallenge(user: IUser): Promise { - const challengeId = await TwoFactorChallenges.createTwoFactorChallenge(user._id, 'email'); - await this.sendEmailCode(user); - return challengeId; - } - - public async verifyEmailTwoFactorChallenge(user: IUser, challengeId: string, code: string): Promise { - const challenge = await TwoFactorChallenges.findOneByPendingChallengeId(challengeId); - if (!challenge) { - return false; - } - - if (challenge.expireAt && challenge.expireAt < new Date()) { - throw new Meteor.Error('error-challenge-expired', 'challenge expired'); - } - - const isCodeValid = await this.verify(user, code); - - if (!isCodeValid) { - return false; - } - - await TwoFactorChallenges.removeByPendingChallengeId(challengeId); - - return true; - } -} diff --git a/apps/meteor/app/2fa/server/code/TOTPCheck.ts b/apps/meteor/app/2fa/server/code/TOTPCheck.ts index ae9502569457f..236016883f89e 100644 --- a/apps/meteor/app/2fa/server/code/TOTPCheck.ts +++ b/apps/meteor/app/2fa/server/code/TOTPCheck.ts @@ -5,7 +5,7 @@ import { settings } from '../../../settings/server'; import { TOTP } from '../lib/totp'; export class TOTPCheck implements ICodeCheck { - public readonly name: string = 'totp'; + public readonly name = 'totp'; public isEnabled(user: IUser): boolean { if (!settings.get('Accounts_TwoFactorAuthentication_By_TOTP_Enabled')) { diff --git a/apps/meteor/app/2fa/server/code/TOTPCheckForOAuth.ts b/apps/meteor/app/2fa/server/code/TOTPCheckForOAuth.ts deleted file mode 100644 index 02e8267fb59eb..0000000000000 --- a/apps/meteor/app/2fa/server/code/TOTPCheckForOAuth.ts +++ /dev/null @@ -1,35 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { TwoFactorChallenges } from '@rocket.chat/models'; - -import { TOTPCheck } from './TOTPCheck'; - -export class TOTPCheckForOAuth extends TOTPCheck { - public override readonly name = 'totp-oauth'; - - public readonly method = 'totp'; - - public async sendTwoFactorChallenge(user: IUser): Promise { - return TwoFactorChallenges.createTwoFactorChallenge(user._id, 'totp'); - } - - public async verifyEmailTwoFactorChallenge(user: IUser, challengeId: string, code: string): Promise { - const challenge = await TwoFactorChallenges.findOneByPendingChallengeId(challengeId); - if (!challenge) { - return false; - } - - if (challenge.expireAt && challenge.expireAt < new Date()) { - throw new Meteor.Error('error-challenge-expired', 'challenge expired'); - } - - const isCodeValid = await this.verify(user, code); - - if (!isCodeValid) { - return false; - } - - await TwoFactorChallenges.removeByPendingChallengeId(challengeId); - - return true; - } -} diff --git a/apps/meteor/app/2fa/server/code/index.ts b/apps/meteor/app/2fa/server/code/index.ts index 0094b25bd321d..8242b1c66185e 100644 --- a/apps/meteor/app/2fa/server/code/index.ts +++ b/apps/meteor/app/2fa/server/code/index.ts @@ -63,8 +63,8 @@ function getFingerprintFromConnection(connection: IMethodConnection): string { return crypto.createHash('md5').update(data).digest('hex'); } -export function getRememberDate(from: Date = new Date()): Date | undefined { - const rememberFor = settings.get('Accounts_TwoFactorAuthentication_RememberFor'); +function getRememberDate(from: Date = new Date()): Date | undefined { + const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor') as string, 10); if (rememberFor <= 0) { return; @@ -118,20 +118,6 @@ function isAuthorizedForToken(connection: IMethodConnection, user: IUser, option return true; } -export async function rememberAuthorizationByToken(token: string, userId: IUser['_id'], connection: IMethodConnection): Promise { - const user = await Users.findOneByIdAndLoginHashedToken(userId, token, { projection: { _id: 1, services: 1 } }); - if (!user) { - throw new Meteor.Error('error-user-not-found', 'user not found'); - } - - const expires = getRememberDate(); - if (!expires) { - return; - } - - await Users.setTwoFactorAuthorizationHashAndUntilForUserIdAndToken(user._id, token, getFingerprintFromConnection(connection), expires); -} - async function rememberAuthorization(connection: IMethodConnection, user: IUser): Promise { const currentToken = Accounts._getLoginToken(connection.id); @@ -160,7 +146,7 @@ interface ICheckCodeForUser { connection?: IMethodConnection; } -export const getSecondFactorMethod = (user: IUser, method: string | undefined, options: ITwoFactorOptions): ICodeCheck | undefined => { +const getSecondFactorMethod = (user: IUser, method: string | undefined, options: ITwoFactorOptions): ICodeCheck | undefined => { // try first getting one of the available methods or the one that was already provided const selectedMethod = getMethodByNameOrFirstActiveForUser(user, method); if (selectedMethod) { @@ -188,6 +174,7 @@ export async function checkCodeForUser({ user, code, method, options = {}, conne } let existingUser: IUser | null; + if (typeof user === 'string') { existingUser = await getUserForCheck(user); } else { diff --git a/apps/meteor/app/api/server/ApiClass.ts b/apps/meteor/app/api/server/ApiClass.ts index 62a2d7c0601c8..d51726049e0dd 100644 --- a/apps/meteor/app/api/server/ApiClass.ts +++ b/apps/meteor/app/api/server/ApiClass.ts @@ -144,7 +144,7 @@ const rateLimiterDictionary: Record< } > = {}; -export const generateConnection = ( +const generateConnection = ( ipAddress: string, httpHeaders: Record, ): { diff --git a/apps/meteor/app/api/server/index.ts b/apps/meteor/app/api/server/index.ts index c53c56d797cc5..5a6a6f06cbbab 100644 --- a/apps/meteor/app/api/server/index.ts +++ b/apps/meteor/app/api/server/index.ts @@ -45,7 +45,7 @@ import './v1/mailer'; import './v1/teams'; import './v1/moderation'; import './v1/uploads'; -import './v1/twoFactorChallenges'; + // This has to come last so all endpoints are registered before generating the OpenAPI documentation import './default/openApi'; diff --git a/apps/meteor/app/api/server/v1/twoFactorChallenges.ts b/apps/meteor/app/api/server/v1/twoFactorChallenges.ts deleted file mode 100644 index fd48e22ad7123..0000000000000 --- a/apps/meteor/app/api/server/v1/twoFactorChallenges.ts +++ /dev/null @@ -1,112 +0,0 @@ -import type { IMethodConnection } from '@rocket.chat/core-typings'; -import { TwoFactorChallenges } from '@rocket.chat/models'; -import { isTwoFactorChallengesSendEmailCodeParamsPOST, isTwoFactorChallengesVerifyChallengeParamsPOST } from '@rocket.chat/rest-typings'; -import { Accounts } from 'meteor/accounts-base'; - -import { emailCheckForOAuth, getTwoFAMethodForOAuth } from '../../../../server/lib/oauth/twoFactorAuth'; -import { getUserForCheck, rememberAuthorizationByToken } from '../../../2fa/server/code'; -import { generateConnection } from '../ApiClass'; -import { API } from '../api'; - -API.v1.addRoute( - 'twoFactorChallenges.sendEmailCode', - { validateParams: isTwoFactorChallengesSendEmailCodeParamsPOST, rateLimiterOptions: { intervalTimeInMS: 60000, numRequestsAllowed: 5 } }, - { - async post() { - const { challengeId } = this.bodyParams; - - if (!challengeId) { - throw new Meteor.Error('error-parameter-required', 'challengeId is required'); - } - - const challenge = await TwoFactorChallenges.findOneByPendingChallengeId(challengeId); - - if (!challenge) { - throw new Meteor.Error('error-challenge-not-found', 'challenge not found'); - } - - if (challenge.expireAt && challenge.expireAt < new Date()) { - throw new Meteor.Error('error-challenge-expired', 'challenge expired'); - } - - if (challenge.method !== 'email') { - throw new Meteor.Error('error-invalid-challenge-method', 'invalid challenge method'); - } - - const { userId } = challenge; - - const user = await getUserForCheck(userId); - - if (!user) { - throw new Meteor.Error('error-user-not-found', 'user not found'); - } - - await emailCheckForOAuth.sendEmailCode(user); - - return API.v1.success(); - }, - }, -); - -API.v1.addRoute( - 'twoFactorChallenges.verifyChallenge', - { - validateParams: isTwoFactorChallengesVerifyChallengeParamsPOST, - rateLimiterOptions: { intervalTimeInMS: 60000, numRequestsAllowed: 5 }, - }, - { - async post() { - const { challengeId, code } = this.bodyParams; - - if (!challengeId || !code) { - throw new Meteor.Error('error-parameter-required', 'challengeId and code are required'); - } - - const challenge = await TwoFactorChallenges.findOneByPendingChallengeId(challengeId); - - if (!challenge) { - throw new Meteor.Error('error-challenge-not-found', 'challenge not found'); - } - - const { userId } = challenge; - - const user = await getUserForCheck(userId); - - if (!user) { - throw new Meteor.Error('error-user-not-found', 'user not found'); - } - - const twoFAMethod = getTwoFAMethodForOAuth(challenge.method); - - const isCodeValid = await twoFAMethod.verifyEmailTwoFactorChallenge(user, challengeId, code); - - if (!isCodeValid) { - const tooManyAttempts = await twoFAMethod.maxFaildedAttemtpsReached(user); - if (tooManyAttempts) { - await TwoFactorChallenges.removeByPendingChallengeId(challengeId); - throw new Meteor.Error('totp-max-attempts', 'TOTP Maximun Failed Attempts Reached'); - } - return API.v1.failure('error-invalid-code', 'Invalid code'); - } - - const stampedToken = Accounts._generateStampedLoginToken(); - - await Accounts._insertLoginToken(user._id, stampedToken); - - const hashedToken = Accounts._hashLoginToken(stampedToken.token); - - const connection = { - ...generateConnection(this.requestIp, this.request.headers), - token: hashedToken, - } as unknown as IMethodConnection; - - // remember the 2FA authorization for the next requests - await rememberAuthorizationByToken(hashedToken, user._id, connection); - - return API.v1.success({ - loginToken: stampedToken.token, - userId: user._id, - }); - }, - }, -); diff --git a/apps/meteor/app/apple/lib/handleIdentityToken.ts b/apps/meteor/app/apple/lib/handleIdentityToken.ts index 861aa42707077..f3ab1c8f9e66f 100644 --- a/apps/meteor/app/apple/lib/handleIdentityToken.ts +++ b/apps/meteor/app/apple/lib/handleIdentityToken.ts @@ -27,7 +27,7 @@ async function isValidAppleJWT(identityToken: string, header: any): Promise> { +export async function handleIdentityToken(identityToken: string): Promise<{ id: string; email: string; name: string }> { const decodedToken = KJUR.jws.JWS.parse(identityToken); if (!(await isValidAppleJWT(identityToken, decodedToken.headerObj))) { @@ -38,14 +38,15 @@ export async function handleIdentityToken(identityToken: string): Promise { if (!enabled) { - passport.unuse('apple'); return ServiceConfiguration.configurations.removeAsync({ service: 'apple', }); @@ -48,96 +38,43 @@ settings.watchMultiple( return; } - passport.unuse('apple'); - - passport.use( - 'apple', - - new AppleStrategy( - { - clientID: settings.get('Accounts_OAuth_Apple_id'), - teamID: settings.get('Accounts_OAuth_Apple_iss'), - keyID: settings.get('Accounts_OAuth_Apple_kid'), - privateKeyString: settings.get('Accounts_OAuth_Apple_secretKey').replace(/\\n/g, '\n'), - callbackURL: `${settings.get('Site_Url')}/_oauth/apple`, - scope: ['name', 'email'], - passReqToCallback: false, - state: false, - }, - async (accessToken: string, refreshToken: string, idToken: string, profile: Profile, done) => { - try { - const serviceData = await handleIdentityToken(idToken); - if (profile?.name) { - serviceData.name = `${profile.name.firstName}${profile.name.middleName ? ` ${profile.name.middleName}` : ''}${ - profile.name.lastName ? ` ${profile.name.lastName}` : '' - }`; - } - - if (!serviceData.email && profile?.email) { - serviceData.email = profile.email; - } - - const user = await Accounts.updateOrCreateUserFromExternalService( - 'apple', - { - accessToken, - refreshToken, - ...serviceData, - }, - {}, - ); - - if (!user?.userId || typeof user?.userId !== 'string') { - return done(new Error('User not found')); - } - - const userFromDB = await Users.findOneById(user.userId); - - if (!userFromDB) { - return done(new Error('User not found')); - } - - return done(null, userFromDB); - } catch (error: any) { - done(error); - return { - type: 'apple', - error: new MeteorError(Accounts.LoginCancelledError.numericError, error.message), - }; - } - }, - ), + const HEADER = { + kid, + alg: 'ES256', + }; + + const now = new Date(); + const exp = new Date(); + exp.setMonth(exp.getMonth() + 5); // from Apple docs expiration time must no be greater than 6 months + + const secret = KJUR.jws.JWS.sign( + null, + HEADER, + { + iss, + iat: Math.floor(now.getTime() / 1000), + exp: Math.floor(exp.getTime() / 1000), + aud: 'https://appleid.apple.com', + sub: clientId, + }, + serverSecret as string, ); - const callbackHandler = [ - express.urlencoded({ extended: true }), - passport.authenticate('apple', { failWithError: true, session: true, keepSessionInfo: true }), - passportOAuthCallback(settings.get('Site_Url')), - ]; - - oAuthRouter.get( - '/oauth/apple', - (req, _res, next) => { - const { loginClient } = req.query; - if (loginClient === 'mobile' || loginClient === 'desktop') { - req.session.loginClient = loginClient; - req.session.save(() => { - next(); - }); - } else { - //delete stale value from previous sessions if any - delete req.session.loginClient; - next(); - } + await ServiceConfiguration.configurations.upsertAsync( + { + service: 'apple', + }, + { + $set: { + showButton: true, + secret, + enabled: settings.get('Accounts_OAuth_Apple'), + loginStyle: 'popup', + clientId: clientId as string, + buttonColor: '#000', + buttonLabelColor: '#FFF', + }, }, - passport.authenticate('apple', { - scope: ['name', 'email'], - }), ); - - oAuthRouter - .route('/_oauth/apple') - .post(...callbackHandler) - .get(...callbackHandler); }, ); diff --git a/apps/meteor/app/apple/server/loginHandler.ts b/apps/meteor/app/apple/server/loginHandler.ts index dcb17fa06aff9..18ac7ddd75268 100644 --- a/apps/meteor/app/apple/server/loginHandler.ts +++ b/apps/meteor/app/apple/server/loginHandler.ts @@ -29,10 +29,10 @@ Accounts.registerLoginHandler('apple', async (loginRequest) => { profile.name = `${givenName} ${familyName}`; } - const result = await Accounts.updateOrCreateUserFromExternalService('apple', serviceData, { profile }); + const result = Accounts.updateOrCreateUserFromExternalService('apple', serviceData, { profile }); // Ensure processing succeeded - if (result?.userId === undefined) { + if (result === undefined || result.userId === undefined) { return { type: 'apple', error: new Meteor.Error(Accounts.LoginCancelledError.numericError, 'User creation failed from Apple response token'), diff --git a/apps/meteor/app/custom-oauth/server/customOAuth.ts b/apps/meteor/app/custom-oauth/server/customOAuth.ts deleted file mode 100644 index 13c4d4d6ca373..0000000000000 --- a/apps/meteor/app/custom-oauth/server/customOAuth.ts +++ /dev/null @@ -1,393 +0,0 @@ -import { LDAP } from '@rocket.chat/core-services'; -import type { IUser, OAuthConfiguration } from '@rocket.chat/core-typings'; -import { Logger } from '@rocket.chat/logger'; -import { Users } from '@rocket.chat/models'; -import { isAbsoluteURL } from '@rocket.chat/tools'; -import { Accounts } from 'meteor/accounts-base'; -import type { DoneCallback } from 'passport'; -import type { VerifyFunction, StrategyOptions } from 'passport-oauth2'; -import { Strategy } from 'passport-oauth2'; - -import { normalizers, fromTemplate, renameInvalidProperties } from './transform_helpers'; -import { client } from '../../../server/database/utils'; -import { callbacks } from '../../../server/lib/callbacks'; -import { saveUserIdentity } from '../../lib/server/functions/saveUserIdentity'; -import { notifyOnUserChange } from '../../lib/server/lib/notifyListener'; -import { settings } from '../../settings/server/cached'; - -const logger = new Logger('CustomOAuth'); -const BeforeUpdateOrCreateUserFromExternalService: ((serviceName: string, serviceData: Record) => Promise)[] = []; - -export class CustomOAuthStrategy extends Strategy { - options: StrategyOptions; - - config: OAuthConfiguration & { clientSecret: string }; - - identityPath: string; - - emailPath: string; - - tokenSentVia: string; - - identityTokenSentVia: string; - - keyField: string; - - usernameField: string; - - emailField: string; - - nameField: string; - - avatarField: string; - - mergeUsers: boolean; - - mergeUsersDistinctServices: boolean; - - rolesClaim: string; - - accessTokenParam: string; - - serverURL: string; - - tokenPath: string; - - constructor(name: string, config: OAuthConfiguration & { clientSecret: string }, verify: VerifyFunction) { - if (!config.serverURL || typeof config.serverURL !== 'string') { - throw new Meteor.Error('customOAuth: serverURL is required and must be String'); - } - - const options: StrategyOptions = { - authorizationURL: config.serverURL + config.authorizePath, - tokenURL: config.serverURL + config.tokenPath, - clientID: config.clientId, - clientSecret: config.clientSecret, - callbackURL: `${settings.get('Site_Url')}/_oauth/${name}`, - state: true, - pkce: config.pkce ?? true, - scope: config.scope, - }; - - super(options, verify); - - this.serverURL = config.serverURL; - this.tokenPath = config.tokenPath || '/oauth/token'; - this.identityPath = config.identityPath || '/me'; - this.tokenSentVia = config.tokenSentVia; - this.identityTokenSentVia = config.identityTokenSentVia; - this.keyField = config.keyField; - this.usernameField = config.usernameField?.trim(); - this.emailField = config.emailField?.trim(); - this.nameField = config.nameField?.trim(); - this.avatarField = config.avatarField?.trim(); - this.mergeUsers = !!config.mergeUsers; - this.mergeUsersDistinctServices = !!config.mergeUsersDistinctServices; - this.rolesClaim = config.rolesClaim || 'roles'; - this.accessTokenParam = config.accessTokenParam || 'access_token'; - - if (this.identityTokenSentVia == null || this.identityTokenSentVia === 'default') { - this.identityTokenSentVia = this.tokenSentVia; - } - - if (!isAbsoluteURL(this.tokenPath)) { - this.tokenPath = this.serverURL + this.tokenPath; - } - - if (!isAbsoluteURL(this.identityPath)) { - this.identityPath = this.serverURL + this.identityPath; - } - - if (this.emailPath && !isAbsoluteURL(this.emailPath)) { - this.emailPath = this.serverURL + this.emailPath; - } - - if (config.tokenSentVia === 'header') { - this._oauth2.useAuthorizationHeaderforGET(true); - } - - if (config.accessTokenParam && config.accessTokenParam !== 'access_token') { - this._oauth2.setAccessTokenName(config.accessTokenParam); - } - - if (config.addAutopublishFields && typeof config.addAutopublishFields === 'object') { - Accounts.addAutopublishFields(config.addAutopublishFields); - } - - this.name = name; - this.options = options; - this.config = config; - - this.addHookToProcessUser(); - } - - getUsername(data: Record) { - try { - const value = fromTemplate(this.usernameField, data); - - if (!value) { - logger.debug({ msg: 'Username field not found in data', usernameField: this.usernameField, data }); - throw new Meteor.Error('field_not_found', `Username field "${this.usernameField}" not found in data`); - } - - return value as string; - } catch (error) { - throw new Error('CustomOAuth: Failed to extract username', { cause: error }); - } - } - - getEmail(data: Record) { - try { - const value = fromTemplate(this.emailField, data); - - if (!value) { - logger.debug({ msg: 'Email field not found in data', emailField: this.emailField, data }); - throw new Meteor.Error('field_not_found', `Email field "${this.emailField}" not found in data`); - } - return value as string; - } catch (error) { - throw new Error('CustomOAuth: Failed to extract email', { cause: error }); - } - } - - getCustomName(data: Record) { - try { - const value = fromTemplate(this.nameField, data); - - if (!value) { - return this.getName(data); - } - - return value as string; - } catch (error) { - throw new Error('CustomOAuth: Failed to extract custom name', { cause: error }); - } - } - - getAvatarUrl(data: Record) { - try { - const value = fromTemplate(this.avatarField, data); - - if (!value) { - logger.debug({ msg: 'Avatar field not found in data', avatarField: this.avatarField, data }); - } - return value as string; - } catch (error) { - throw new Error('CustomOAuth: Failed to extract avatar url', { cause: error }); - } - } - - getName(identity: Record): string { - const name = (identity.name || - identity.username || - identity.nickname || - identity.CharacterName || - identity.userName || - identity.preferred_username || - identity.user?.name) as string; - return name; - } - - normalizeIdentity(identity: Record) { - if (identity) { - for (const normalizer of Object.values(normalizers)) { - const result = normalizer(identity); - if (result) { - identity = result; - } - } - } - - if (this.usernameField) { - identity.username = this.getUsername(identity); - } - - if (this.emailField) { - identity.email = this.getEmail(identity); - } - - if (this.avatarField) { - identity.avatarUrl = this.getAvatarUrl(identity); - } - - if (this.nameField) { - identity.name = this.getCustomName(identity); - } else { - identity.name = this.getName(identity); - } - - return renameInvalidProperties(identity); - } - - override userProfile(accessToken: string, done: DoneCallback) { - if (!this.identityPath) { - return done(new Error(`identityPath is required for ${this.name} custom oauth`)); - } - - this._oauth2.get(this.identityPath, accessToken, (err, body, res) => { - if (err) { - return done(err); - } - - if ((res && res.statusCode !== 200) || !body) { - return done(new Error(`Failed to fetch identity from ${this.name} at ${this.identityPath}}`)); - } - - try { - const result = JSON.parse(typeof body === 'string' ? body : body.toString()); - const normalizedIdentity = this.normalizeIdentity(result); - //Nextcloud URL needed on addWebdavServer - normalizedIdentity.serverURL = this.serverURL; - return done(null, normalizedIdentity); - } catch (e) { - return done(new Error(`Failed to parse identity from ${this.name} at ${this.identityPath}. ${e}`)); - } - }); - } - - addHookToProcessUser() { - BeforeUpdateOrCreateUserFromExternalService.push(async (serviceName, serviceData) => { - if (serviceName !== this.name) { - return; - } - - if (serviceData.username) { - let user: IUser | null = null; - - if (this.keyField === 'username') { - user = this.mergeUsersDistinctServices - ? await Users.findOneByUsernameIgnoringCase(serviceData.username) - : await Users.findOneByUsernameAndServiceNameIgnoringCase(serviceData.username, serviceData.id, serviceName); - } else if (this.keyField === 'email') { - user = this.mergeUsersDistinctServices - ? await Users.findOneByEmailAddress(serviceData.email) - : await Users.findOneByEmailAddressAndServiceNameIgnoringCase(serviceData.email, serviceData.id, serviceName); - } - - if (!user) { - return; - } - - await callbacks.run('afterProcessOAuthUser', { serviceName, serviceData, user }); - // User already created or merged and has identical name as before - if ( - user.services?.[serviceName as keyof NonNullable] && - user.services[serviceName as keyof NonNullable].id === serviceData.id && - user.name === serviceData.name && - (this.keyField === 'email' || !serviceData.email || user.emails?.find(({ address }) => address === serviceData.email)) - ) { - return; - } - - if (this.mergeUsers !== true) { - throw new Meteor.Error('CustomOAuth', `User with username ${user.username} already exists`); - } - - const serviceIdKey = `services.${serviceName}.id`; - const successCallbacks = [ - async () => { - const updatedUser = await Users.findOneById(user._id, { projection: { name: 1, emails: 1, [serviceIdKey]: 1 } }); - if (updatedUser) { - const { _id, ...diff } = updatedUser; - void notifyOnUserChange({ clientAction: 'updated', id: user._id, diff }); - } - }, - ]; - - const session = client.startSession(); - try { - // Extend the session to match the ExtendedSession type expected by saveUserIdentity - Object.assign(session, { - onceSuccesfulCommit: (cb: () => Promise) => { - successCallbacks.push(cb); - }, - }); - - session.startTransaction(); - - const updater = Users.getUpdater(); - - if (this.keyField === 'username' && serviceData.email) { - updater.set('emails', [{ address: serviceData.email, verified: true }]); - } - - updater.set(serviceIdKey as keyof IUser['services'], serviceData.id); - - await saveUserIdentity({ - _id: user._id, - name: serviceData.name, - updater, - session, - updateUsernameInBackground: true, - // Username needs to be included otherwise the name won't be updated in some collections - username: user.username, - }); - await Users.updateFromUpdater({ _id: user._id }, updater, { session }); - - await session.commitTransaction(); - } catch (e) { - await session.abortTransaction(); - throw e; - } finally { - await session.endSession(); - } - - void Promise.allSettled(successCallbacks.map((cb) => cb())); - } - }); - - Accounts.validateNewUser((user: IUser & { email: string }) => { - if (!user.services?.[this.name as keyof NonNullable]?.id) { - return true; - } - - if (this.usernameField) { - user.username = user.services[this.name as keyof NonNullable].username; - } - - if (this.emailField) { - user.email = user.services[this.name as keyof NonNullable].email; - } - - if (this.nameField) { - user.name = user.services[this.name as keyof NonNullable].name; - } - - return true; - }); - } -} - -const { updateOrCreateUserFromExternalService } = Accounts; - -Accounts.updateOrCreateUserFromExternalService = async function (...args) { - for (const hook of BeforeUpdateOrCreateUserFromExternalService) { - await hook.apply(this, args as unknown as [string, Record]); - } - - const [serviceName, serviceData] = args; - - const user = await updateOrCreateUserFromExternalService.apply(this, args); - - if (!user?.userId) { - return undefined; - } - - const fullUser = await Users.findOneById(user.userId as string); - - if (!fullUser) { - return undefined; - } - - if (settings.get('LDAP_Update_Data_On_OAuth_Login') && fullUser.username) { - await LDAP.loginAuthenticatedUserRequest(fullUser.username); - } - - await callbacks.run('afterValidateNewOAuthUser', { - identity: serviceData, - serviceName, - user: fullUser, - }); - - return user; -}; diff --git a/apps/meteor/app/custom-oauth/server/custom_oauth_server.js b/apps/meteor/app/custom-oauth/server/custom_oauth_server.js index aea366ce4e96c..40495449e8b22 100644 --- a/apps/meteor/app/custom-oauth/server/custom_oauth_server.js +++ b/apps/meteor/app/custom-oauth/server/custom_oauth_server.js @@ -23,9 +23,6 @@ const logger = new Logger('CustomOAuth'); const Services = {}; const BeforeUpdateOrCreateUserFromExternalService = []; -/** - * @deprecated in favor of new Passport OAuth implementation. - */ export class CustomOAuth { constructor(name, options) { logger.debug({ msg: 'Init CustomOAuth', name, options }); diff --git a/apps/meteor/app/dolphin/server/lib.ts b/apps/meteor/app/dolphin/server/lib.ts index 77622fe43edab..826a277b81e4e 100644 --- a/apps/meteor/app/dolphin/server/lib.ts +++ b/apps/meteor/app/dolphin/server/lib.ts @@ -1,15 +1,13 @@ -import type { IUser, OAuthConfiguration } from '@rocket.chat/core-typings'; +import type { IUser } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; import { ServiceConfiguration } from 'meteor/service-configuration'; -import passport from 'passport'; -import _ from 'underscore'; import { callbacks } from '../../../server/lib/callbacks'; import { beforeCreateUserCallback } from '../../../server/lib/callbacks/beforeCreateUserCallback'; -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; +import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; import { settings } from '../../settings/server'; -const config: Partial = { +const config = { serverURL: '', authorizePath: '/m/oauth2/auth/', tokenPath: '/m/oauth2/token/', @@ -22,6 +20,8 @@ const config: Partial = { accessTokenParam: 'access_token', }; +const Dolphin = new CustomOAuth('dolphin', config); + function DolphinOnCreateUser(options: any, user?: IUser) { // TODO: callbacks Fix this if (user?.services?.dolphin?.NickName) { @@ -30,32 +30,11 @@ function DolphinOnCreateUser(options: any, user?: IUser) { return options; } -const configureDolphinOAuth = () => { - passport.unuse('dolphin'); - - const enabled = settings.get('Accounts_OAuth_Dolphin'); - if (!enabled) { - return; - } - - const serverURL = settings.get('Accounts_OAuth_Dolphin_URL').trim().replace(/\/*$/, ''); - const clientId = settings.get('Accounts_OAuth_Dolphin_id'); - const clientSecret = settings.get('Accounts_OAuth_Dolphin_secret'); - - if (!clientId || !clientSecret || !serverURL) { - return; - } - - addPassportCustomOAuth('dolphin', { ...config, serverURL, clientId, clientSecret }); -}; - Meteor.startup(async () => { - const updateConfig = () => _.debounce(configureDolphinOAuth, 300); - - settings.watchMultiple( - ['Accounts_OAuth_Dolphin', 'Accounts_OAuth_Dolphin_URL', 'Accounts_OAuth_Dolphin_id', 'Accounts_OAuth_Dolphin_secret'], - updateConfig, - ); + settings.watch('Accounts_OAuth_Dolphin_URL', (value) => { + config.serverURL = value; + return Dolphin.configure(config); + }); if (settings.get('Accounts_OAuth_Dolphin_URL')) { const data = { diff --git a/apps/meteor/app/drupal/server/lib.ts b/apps/meteor/app/drupal/server/lib.ts index a4f71bd81696f..d137551fb8377 100644 --- a/apps/meteor/app/drupal/server/lib.ts +++ b/apps/meteor/app/drupal/server/lib.ts @@ -1,12 +1,14 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; +import type { OauthConfig } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; -import passport from 'passport'; -import _ from 'underscore'; -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; +import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; import { settings } from '../../settings/server'; -const config: Partial = { +// Drupal Server CallBack URL needs to be http(s)://{rocketchat.server}[:port]/_oauth/drupal +// In RocketChat -> Administration the URL needs to be http(s)://{drupal.server}/ + +const config: OauthConfig = { + serverURL: '', identityPath: '/oauth2/UserInfo', authorizePath: '/oauth2/authorize', tokenPath: '/oauth2/token', @@ -21,29 +23,11 @@ const config: Partial = { accessTokenParam: 'access_token', }; -const configureDrupalOAuth = () => { - passport.unuse('drupal'); - const enabled = settings.get('Accounts_OAuth_Drupal'); - if (!enabled) { - return; - } - - const serverURL = settings.get('API_Drupal_URL').trim().replace(/\/*$/, ''); - const clientId = settings.get('Accounts_OAuth_Drupal_id'); - const clientSecret = settings.get('Accounts_OAuth_Drupal_secret'); - - if (!clientId || !clientSecret || !serverURL) { - return; - } - - addPassportCustomOAuth('drupal', { ...config, serverURL, clientId, clientSecret }); -}; +const Drupal = new CustomOAuth('drupal', config); Meteor.startup(() => { - const updateConfig = _.debounce(configureDrupalOAuth, 300); - - settings.watchMultiple( - ['Accounts_OAuth_Drupal', 'API_Drupal_URL', 'Accounts_OAuth_Drupal_id', 'Accounts_OAuth_Drupal_secret'], - updateConfig, - ); + settings.watch('API_Drupal_URL', (value) => { + config.serverURL = value; + Drupal.configure(config); + }); }); diff --git a/apps/meteor/app/gitlab/server/lib.ts b/apps/meteor/app/gitlab/server/lib.ts index 3df1c1ded5496..0f4d330cf5970 100644 --- a/apps/meteor/app/gitlab/server/lib.ts +++ b/apps/meteor/app/gitlab/server/lib.ts @@ -1,12 +1,11 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; +import type { OauthConfig } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; -import passport from 'passport'; import _ from 'underscore'; -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; +import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; import { settings } from '../../settings/server'; -const config: Partial = { +const config: OauthConfig = { serverURL: 'https://gitlab.com', identityPath: '/api/v4/user', scope: 'read_user', @@ -18,39 +17,15 @@ const config: Partial = { accessTokenParam: 'access_token', }; -const configureGitlabOAuth = () => { - passport.unuse('gitlab'); - - const enabled = settings.get('Accounts_OAuth_Gitlab'); - if (!enabled) { - return; - } - - const clientId = settings.get('Accounts_OAuth_Gitlab_id'); - const clientSecret = settings.get('Accounts_OAuth_Gitlab_secret'); - const serverURL = settings.get('API_Gitlab_URL').trim().replace(/\/*$/, '') || config.serverURL; - const identityPath = settings.get('Accounts_OAuth_Gitlab_identity_path') || config.identityPath; - const mergeUsers = Boolean(settings.get('Accounts_OAuth_Gitlab_merge_users')); - - if (!clientId || !clientSecret) { - return; - } - - addPassportCustomOAuth('gitlab', { ...config, clientId, clientSecret, serverURL, identityPath, mergeUsers }); -}; +const Gitlab = new CustomOAuth('gitlab', config); Meteor.startup(() => { - const updateConfig = _.debounce(configureGitlabOAuth, 300); - - settings.watchMultiple( - [ - 'Accounts_OAuth_Gitlab', - 'API_Gitlab_URL', - 'Accounts_OAuth_Gitlab_id', - 'Accounts_OAuth_Gitlab_secret', - 'Accounts_OAuth_Gitlab_identity_path', - 'Accounts_OAuth_Gitlab_merge_users', - ], - updateConfig, - ); + const updateConfig = _.debounce(() => { + config.serverURL = settings.get('API_Gitlab_URL').trim().replace(/\/*$/, '') || config.serverURL; + config.identityPath = settings.get('Accounts_OAuth_Gitlab_identity_path') || config.identityPath; + config.mergeUsers = Boolean(settings.get('Accounts_OAuth_Gitlab_merge_users')); + Gitlab.configure(config); + }, 300); + + settings.watchMultiple(['API_Gitlab_URL', 'Accounts_OAuth_Gitlab_identity_path', 'Accounts_OAuth_Gitlab_merge_users'], updateConfig); }); diff --git a/apps/meteor/app/lib/server/methods/createToken.ts b/apps/meteor/app/lib/server/methods/createToken.ts index 6e8e2538ab522..63de5b98f4210 100644 --- a/apps/meteor/app/lib/server/methods/createToken.ts +++ b/apps/meteor/app/lib/server/methods/createToken.ts @@ -16,7 +16,7 @@ export async function generateAccessToken(userId: string, secret: string) { } const token = Accounts._generateStampedLoginToken(); - await Accounts._insertLoginToken(userId, token); + Accounts._insertLoginToken(userId, token); await User.ensureLoginTokensLimit(userId); diff --git a/apps/meteor/app/linkedin/server/index.ts b/apps/meteor/app/linkedin/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/linkedin/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/linkedin/server/lib.ts b/apps/meteor/app/linkedin/server/lib.ts deleted file mode 100644 index 6fb0d450d2fda..0000000000000 --- a/apps/meteor/app/linkedin/server/lib.ts +++ /dev/null @@ -1,49 +0,0 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import passport from 'passport'; - -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; -import { settings } from '../../settings/server'; - -const config: Partial = { - serverURL: 'https://www.linkedin.com', - authorizePath: '/oauth/v2/authorization', - tokenPath: '/oauth/v2/accessToken', - identityPath: 'https://api.linkedin.com/v2/userinfo', - scope: 'openid email profile', - tokenSentVia: 'header', - addAutopublishFields: { - forLoggedInUser: ['services.linkedin'], - forOtherUsers: ['services.linkedin.name'], - }, - pkce: false, - emailField: 'email', - avatarField: 'picture', -}; - -const serviceKey = 'linkedin'; - -const configureLinkedInOAuth = (): void => { - passport.unuse(serviceKey); - - const enabled = settings.get('Accounts_OAuth_Linkedin'); - if (!enabled) { - return; - } - - const clientId = settings.get('Accounts_OAuth_Linkedin_id'); - const clientSecret = settings.get('Accounts_OAuth_Linkedin_secret'); - - if (!clientId || !clientSecret) { - return; - } - - addPassportCustomOAuth(serviceKey, { ...config, clientId, clientSecret }); -}; - -Meteor.startup(() => { - settings.watchMultiple( - ['Accounts_OAuth_Linkedin', 'Accounts_OAuth_Linkedin_id', 'Accounts_OAuth_Linkedin_secret'], - configureLinkedInOAuth, - ); -}); diff --git a/apps/meteor/app/meteor-developer/server/index.ts b/apps/meteor/app/meteor-developer/server/index.ts deleted file mode 100644 index cf327e4971bb2..0000000000000 --- a/apps/meteor/app/meteor-developer/server/index.ts +++ /dev/null @@ -1 +0,0 @@ -import './lib'; diff --git a/apps/meteor/app/meteor-developer/server/lib.ts b/apps/meteor/app/meteor-developer/server/lib.ts deleted file mode 100644 index cb532732ead92..0000000000000 --- a/apps/meteor/app/meteor-developer/server/lib.ts +++ /dev/null @@ -1,46 +0,0 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; -import { Meteor } from 'meteor/meteor'; -import passport from 'passport'; - -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; -import { settings } from '../../settings/server'; - -const config: Partial = { - serverURL: 'https://www.meteor.com', - authorizePath: '/oauth2/authorize', - tokenPath: '/oauth2/token', - identityPath: '/api/v1/identity', - scope: 'email', - tokenSentVia: 'header', - addAutopublishFields: { - forLoggedInUser: ['services.meteor-developer'], - forOtherUsers: ['services.meteor-developer.username'], - }, -}; - -const serviceKey = 'meteor-developer'; - -const configureMeteorDeveloperOAuth = (): void => { - passport.unuse(serviceKey); - - const enabled = settings.get('Accounts_OAuth_Meteor'); - if (!enabled) { - return; - } - - const clientId = settings.get('Accounts_OAuth_Meteor_id'); - const clientSecret = settings.get('Accounts_OAuth_Meteor_secret'); - - if (!clientId || !clientSecret) { - return; - } - - addPassportCustomOAuth(serviceKey, { ...config, clientId, clientSecret }); -}; - -Meteor.startup(() => { - settings.watchMultiple( - ['Accounts_OAuth_Meteor', 'Accounts_OAuth_Meteor_id', 'Accounts_OAuth_Meteor_secret'], - configureMeteorDeveloperOAuth, - ); -}); diff --git a/apps/meteor/app/nextcloud/server/lib.ts b/apps/meteor/app/nextcloud/server/lib.ts index fc2b592b7c1ad..28cf52da57a17 100644 --- a/apps/meteor/app/nextcloud/server/lib.ts +++ b/apps/meteor/app/nextcloud/server/lib.ts @@ -1,12 +1,14 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; +import type { OauthConfig } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; +import _ from 'underscore'; -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; -import { settings } from '../../settings/server/cached'; +import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; +import { settings } from '../../settings/server'; -const NEXTCLOUD_PATHS = { +const config: OauthConfig = { + serverURL: '', tokenPath: '/index.php/apps/oauth2/api/v1/token', - tokenSentVia: 'header' as OAuthConfiguration['tokenSentVia'], + tokenSentVia: 'header', authorizePath: '/index.php/apps/oauth2/authorize', identityPath: '/ocs/v2.php/cloud/user?format=json', scope: 'openid', @@ -16,31 +18,20 @@ const NEXTCLOUD_PATHS = { }, }; -function configureNextcloudOAuth(): void { - const enabled = settings.get('Accounts_OAuth_Nextcloud'); - if (!enabled) { - return; - } +const Nextcloud = new CustomOAuth('nextcloud', config); - const serverURL = settings.get('Accounts_OAuth_Nextcloud_URL')?.trim().replace(/\/*$/, ''); - const clientId = settings.get('Accounts_OAuth_Nextcloud_id'); - const clientSecret = settings.get('Accounts_OAuth_Nextcloud_secret'); - - if (!serverURL || !clientId || !clientSecret) { +const fillServerURL = _.debounce((): void => { + const nextcloudURL = settings.get('Accounts_OAuth_Nextcloud_URL'); + if (!nextcloudURL) { + if (nextcloudURL === undefined) { + return fillServerURL(); + } return; } - - addPassportCustomOAuth('nextcloud', { - ...NEXTCLOUD_PATHS, - serverURL, - clientId, - clientSecret, - }); -} + config.serverURL = nextcloudURL.trim().replace(/\/*$/, ''); + return Nextcloud.configure(config); +}, 1000); Meteor.startup(() => { - settings.watchMultiple( - ['Accounts_OAuth_Nextcloud', 'Accounts_OAuth_Nextcloud_URL', 'Accounts_OAuth_Nextcloud_id', 'Accounts_OAuth_Nextcloud_secret'], - configureNextcloudOAuth, - ); + settings.watch('Accounts_OAuth_Nextcloud_URL', () => fillServerURL()); }); diff --git a/apps/meteor/app/wordpress/server/lib.ts b/apps/meteor/app/wordpress/server/lib.ts index eb1ce2c01ceb2..7777ea1382215 100644 --- a/apps/meteor/app/wordpress/server/lib.ts +++ b/apps/meteor/app/wordpress/server/lib.ts @@ -1,13 +1,12 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; +import type { OauthConfig } from '@rocket.chat/core-typings'; import { Meteor } from 'meteor/meteor'; import { ServiceConfiguration } from 'meteor/service-configuration'; -import passport from 'passport'; import _ from 'underscore'; -import { addPassportCustomOAuth } from '../../../server/lib/oauth/addPassportCustomOAuth'; +import { CustomOAuth } from '../../custom-oauth/server/custom_oauth_server'; import { settings } from '../../settings/server'; -const config: Partial = { +const config: OauthConfig = { serverURL: '', identityPath: '/oauth/me', @@ -18,7 +17,7 @@ const config: Partial = { accessTokenParam: 'access_token', }; -const serviceKey = 'wordpress'; +const WordPress = new CustomOAuth('wordpress', config); const fillSettings = _.debounce(async (): Promise => { config.serverURL = settings.get('API_Wordpress_URL'); @@ -29,7 +28,11 @@ const fillSettings = _.debounce(async (): Promise => { return; } - passport.unuse(serviceKey); + delete config.identityPath; + delete config.identityTokenSentVia; + delete config.authorizePath; + delete config.tokenPath; + delete config.scope; const serverType = settings.get('Accounts_OAuth_Wordpress_server_type'); switch (serverType) { @@ -56,7 +59,7 @@ const fillSettings = _.debounce(async (): Promise => { break; case 'wordpress-com': config.identityPath = 'https://public-api.wordpress.com/rest/v1/me'; - config.identityTokenSentVia = 'header' as OAuthConfiguration['identityTokenSentVia']; + config.identityTokenSentVia = 'header'; config.authorizePath = 'https://public-api.wordpress.com/oauth2/authorize'; config.tokenPath = 'https://public-api.wordpress.com/oauth2/token'; config.scope = 'auth'; @@ -66,13 +69,12 @@ const fillSettings = _.debounce(async (): Promise => { break; } - addPassportCustomOAuth(serviceKey, config); - + const result = WordPress.configure(config); const enabled = settings.get('Accounts_OAuth_Wordpress'); if (enabled) { await ServiceConfiguration.configurations.upsertAsync( { - service: serviceKey, + service: 'wordpress', }, { $set: config, @@ -80,9 +82,11 @@ const fillSettings = _.debounce(async (): Promise => { ); } else { await ServiceConfiguration.configurations.removeAsync({ - service: serviceKey, + service: 'wordpress', }); } + + return result; }, 1000); Meteor.startup(() => { diff --git a/apps/meteor/client/components/TwoFactorModal/TwoFactorEmailModal.tsx b/apps/meteor/client/components/TwoFactorModal/TwoFactorEmailModal.tsx index 14f86a832e075..c80fb09e78ae1 100644 --- a/apps/meteor/client/components/TwoFactorModal/TwoFactorEmailModal.tsx +++ b/apps/meteor/client/components/TwoFactorModal/TwoFactorEmailModal.tsx @@ -1,7 +1,7 @@ import { Box, Button } from '@rocket.chat/fuselage'; import { FieldGroup, TextInput, Field, FieldLabel, FieldRow, FieldError } from '@rocket.chat/fuselage-forms'; import { GenericModal } from '@rocket.chat/ui-client'; -import { useToastMessageDispatch } from '@rocket.chat/ui-contexts'; +import { useToastMessageDispatch, useEndpoint } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import { useForm, Controller } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -12,14 +12,14 @@ import { Method } from './TwoFactorModal'; type TwoFactorEmailModalProps = { onConfirm: OnConfirm; onClose: () => void; - resendEmail?: () => Promise; + emailOrUsername: string; }; type TwoFactorEmailFormData = { code: string; }; -const TwoFactorEmailModal = ({ onConfirm, onClose, resendEmail }: TwoFactorEmailModalProps): ReactElement => { +const TwoFactorEmailModal = ({ onConfirm, onClose, emailOrUsername }: TwoFactorEmailModalProps): ReactElement => { const dispatchToastMessage = useToastMessageDispatch(); const { t } = useTranslation(); @@ -33,12 +33,11 @@ const TwoFactorEmailModal = ({ onConfirm, onClose, resendEmail }: TwoFactorEmail defaultValues: { code: '' }, }); + const sendEmailCode = useEndpoint('POST', '/v1/users.2fa.sendEmailCode'); + const onClickResendCode = async (): Promise => { try { - if (!resendEmail) { - throw new Error('resendEmail is not defined'); - } - await resendEmail(); + await sendEmailCode({ emailOrUsername }); dispatchToastMessage({ type: 'success', message: t('Email_sent') }); } catch (error) { dispatchToastMessage({ diff --git a/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx b/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx index 04f603882c531..ef056ee717ccb 100644 --- a/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx +++ b/apps/meteor/client/components/TwoFactorModal/TwoFactorModal.tsx @@ -21,7 +21,7 @@ type TwoFactorModalProps = { } | { method: 'email'; - resendEmail?: () => Promise; + emailOrUsername: string; } ); @@ -31,9 +31,9 @@ const TwoFactorModal = ({ onConfirm, onClose, ...props }: TwoFactorModalProps): } if (props.method === Method.EMAIL) { - const { resendEmail } = props; + const { emailOrUsername } = props; - return ; + return ; } if (props.method === Method.PASSWORD) { diff --git a/apps/meteor/client/lib/2fa/process2faReturn.ts b/apps/meteor/client/lib/2fa/process2faReturn.ts index 36c46c0cec6e6..fe7d73c933e18 100644 --- a/apps/meteor/client/lib/2fa/process2faReturn.ts +++ b/apps/meteor/client/lib/2fa/process2faReturn.ts @@ -5,7 +5,6 @@ import { lazy } from 'react'; import type { LoginCallback } from './overrideLoginMethod'; import type { MeteorErrorLike } from './types'; import { isTotpInvalidError, isTotpRequiredError } from './utils'; -import { sdk } from '../../../app/utils/client/lib/SDKClient'; import { getUser } from '../user'; const TwoFactorModal = lazy(() => import('../../components/TwoFactorModal')); @@ -32,9 +31,7 @@ const hasRequiredTwoFactorMethod = ( function assertModalProps(props: { method: TwoFactorMethod; emailOrUsername?: string; -}): asserts props is - | { method: 'totp' | 'password'; invalidAttempt?: boolean } - | { method: 'email'; emailOrUsername: string; invalidAttempt?: boolean } { +}): asserts props is { method: 'totp' } | { method: 'password' } | { method: 'email'; emailOrUsername: string } { if (props.method === 'email' && typeof props.emailOrUsername !== 'string') { throw new Error('Invalid Two Factor method'); } @@ -165,10 +162,6 @@ export const invokeTwoFactorModal = async ( reject(new Error('totp-canceled')); } }, - ...(props.method === 'email' && - props.emailOrUsername && { - resendEmail: (): Promise => sdk.rest.post('/v1/users.2fa.sendEmailCode', { emailOrUsername: props.emailOrUsername }), - }), }, }); }); diff --git a/apps/meteor/client/lib/buildAuthDeeplinkURL.ts b/apps/meteor/client/lib/buildAuthDeeplinkURL.ts deleted file mode 100644 index e4481fed271d3..0000000000000 --- a/apps/meteor/client/lib/buildAuthDeeplinkURL.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const buildDeepLinkURL = (resumeToken: string, userId: string) => { - const url = new URL(window.location.href); - const { origin } = url; - return `rocketchat://auth?host=${origin}&token=${resumeToken}&userId=${userId}`; -}; diff --git a/apps/meteor/client/lib/sdk/ddpSdk.ts b/apps/meteor/client/lib/sdk/ddpSdk.ts index 09c2b43ac10a7..35ed4169e29e3 100644 --- a/apps/meteor/client/lib/sdk/ddpSdk.ts +++ b/apps/meteor/client/lib/sdk/ddpSdk.ts @@ -68,7 +68,7 @@ export const getDdpSdk = (): DDPSDK => { return instance; }; -export const readStoredLoginToken = (): string | null => getStoredItem(STORAGE_KEYS.LOGIN_TOKEN); +const readStoredLoginToken = (): string | null => getStoredItem(STORAGE_KEYS.LOGIN_TOKEN); let inflightLogin: Promise | undefined; diff --git a/apps/meteor/client/startup/routes.tsx b/apps/meteor/client/startup/routes.tsx index 2b8e1c43e35e2..77f76158cb65d 100644 --- a/apps/meteor/client/startup/routes.tsx +++ b/apps/meteor/client/startup/routes.tsx @@ -3,7 +3,6 @@ import { createElement, lazy, useEffect } from 'react'; import { appLayout } from '../lib/appLayout'; import { router } from '../providers/RouterProvider'; -import OAuthTwoFactorAuthenticationRouter from '../views/OAuthTwoFactorAuthentication/OAuthTwoFactorAuthenticationRouter'; import MainLayout from '../views/root/MainLayout'; const IndexRoute = lazy(() => import('../views/root/IndexRoute')); @@ -40,10 +39,6 @@ declare module '@rocket.chat/ui-contexts' { pathname: `/meet/${string}`; pattern: '/meet/:rid'; }; - '2fa': { - pathname: `/2fa/${string}/${string}`; - pattern: '/2fa/:method/:challengeId'; - }; 'home': { pathname: '/home'; pattern: '/home'; @@ -136,11 +131,6 @@ router.defineRoutes([ return null; }), }, - { - path: '/2fa/:method/:challengeId', - id: '2fa', - element: appLayout.wrap(), - }, { path: '/home', id: 'home', diff --git a/apps/meteor/client/views/OAuthTwoFactorAuthentication/OAuthTwoFactorAuthenticationRouter.tsx b/apps/meteor/client/views/OAuthTwoFactorAuthentication/OAuthTwoFactorAuthenticationRouter.tsx deleted file mode 100644 index 2394d0a8cfdaf..0000000000000 --- a/apps/meteor/client/views/OAuthTwoFactorAuthentication/OAuthTwoFactorAuthenticationRouter.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import { useStableCallback } from '@rocket.chat/fuselage-hooks'; -import { Page } from '@rocket.chat/ui-client'; -import { - useEndpoint, - useLoginWithToken, - useRouteParameter, - useRouter, - useSetModal, - useToastMessageDispatch, -} from '@rocket.chat/ui-contexts'; -import { useEffect } from 'react'; -import { useTranslation } from 'react-i18next'; - -import TwoFactorModal from '../../components/TwoFactorModal/TwoFactorModal'; - -const throwErrorOnInvalidMethod = (method: never): never => { - throw new Error(`Invalid Two Factor method: ${method}`); -}; - -const OAuthTwoFactorAuthenticationRouter = () => { - const method = useRouteParameter('method') as 'totp' | 'email' | undefined; - const challengeId = useRouteParameter('challengeId'); - const router = useRouter(); - const dispatchToastMessage = useToastMessageDispatch(); - const setModal = useSetModal(); - const loginWithToken = useLoginWithToken(); - const { t } = useTranslation(); - const verifyChallenge = useEndpoint('POST', '/v1/twoFactorChallenges.verifyChallenge'); - const sendEmailCode = useEndpoint('POST', '/v1/twoFactorChallenges.sendEmailCode'); - - const navigateToHome = useStableCallback(() => { - setModal(null); - router.navigate('/home', { replace: true }); - }); - - const resendEmail = useStableCallback(async () => { - if (!challengeId) { - return null; - } - await sendEmailCode({ challengeId }); - return null; - }); - - const onConfirm = useStableCallback(async (code: string) => { - if (!challengeId || !code) { - return; - } - try { - const { loginToken, userId } = await verifyChallenge({ challengeId, code }); - - const { loginClient } = router.getSearchParameters(); - - if (loginClient === 'mobile' || loginClient === 'desktop') { - setModal(null); - router.navigate({ name: 'home', search: { resumeToken: loginToken, userId, loginClient } }, { replace: true }); - return; - } - - await loginWithToken(loginToken); - navigateToHome(); - } catch (error: any) { - console.error('Failed to verify challenge', error); - if (error.errorType === 'totp-max-attempts') { - setModal(null); - dispatchToastMessage({ type: 'error', message: t('Maximum_number_of_attempts_reached_please_try_again_later') }); - router.navigate('/login', { replace: true }); - return; - } - if (error.errorType === 'error-challenge-expired' || error.errorType === 'error-challenge-not-found') { - setModal(null); - dispatchToastMessage({ type: 'error', message: t('Challenge_expired_please_try_again_later') }); - router.navigate('/login', { replace: true }); - return; - } - throw error; - } - }); - - useEffect(() => { - if (!method || !challengeId) { - router.navigate('/home'); - return; - } - - if (method === 'email') { - setModal(); - return; - } - - if (method === 'totp') { - setModal(); - return; - } - - throwErrorOnInvalidMethod(method); - }, [method, challengeId, router, setModal, onConfirm, resendEmail, navigateToHome]); - - return ; -}; - -export default OAuthTwoFactorAuthenticationRouter; diff --git a/apps/meteor/client/views/root/AppLayout.tsx b/apps/meteor/client/views/root/AppLayout.tsx index 250690e98d78f..b355d9c7b44f2 100644 --- a/apps/meteor/client/views/root/AppLayout.tsx +++ b/apps/meteor/client/views/root/AppLayout.tsx @@ -27,13 +27,11 @@ import { useKeyboardShortcutsHotkey } from './hooks/useKeyboardShortcutsHotkey'; import { useLivechatEnterprise } from './hooks/useLivechatEnterprise'; import { useLoadMissedMessages } from './hooks/useLoadMissedMessages'; import { useLoadRoomForAllowedAnonymousRead } from './hooks/useLoadRoomForAllowedAnonymousRead'; -import { useLoginOtherClients } from './hooks/useLoginOtherClients'; import { useLoginViaQuery } from './hooks/useLoginViaQuery'; import { useMessageLinkClicks } from './hooks/useMessageLinkClicks'; import { useNotificationPermission } from './hooks/useNotificationPermission'; import { useRedirectToSetupWizard } from './hooks/useRedirectToSetupWizard'; import { useSettingsOnLoadSiteUrl } from './hooks/useSettingsOnLoadSiteUrl'; -import { useShareSessionWithOtherClients } from './hooks/useShareSessionWithOtherClients'; import { useStartupEvent } from './hooks/useStartupEvent'; import { appLayout } from '../../lib/appLayout'; @@ -72,8 +70,6 @@ const AppLayout = () => { useAutoupdate(); useCodeHighlight(); useLoginViaQuery(); - useLoginOtherClients(); - useShareSessionWithOtherClients(); useLoadMissedMessages(); useDesktopFavicon(); useDesktopTitle(); diff --git a/apps/meteor/client/views/root/hooks/useLoginOtherClients.ts b/apps/meteor/client/views/root/hooks/useLoginOtherClients.ts deleted file mode 100644 index a826091886772..0000000000000 --- a/apps/meteor/client/views/root/hooks/useLoginOtherClients.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useRouter, useSearchParameter } from '@rocket.chat/ui-contexts'; -import { useEffect } from 'react'; - -import { buildDeepLinkURL } from '../../../lib/buildAuthDeeplinkURL'; - -export const useLoginOtherClients = () => { - const router = useRouter(); - const resumeToken = useSearchParameter('resumeToken'); - const loginClient = useSearchParameter('loginClient'); - const userId = useSearchParameter('userId'); - - useEffect(() => { - if (!resumeToken || !userId) { - return; - } - - if (loginClient !== 'desktop' && loginClient !== 'mobile') { - return; - } - - const loginURL = buildDeepLinkURL(resumeToken, userId); - window.location.href = loginURL; - - const timeout = setTimeout(() => { - router.navigate('/home', { replace: true }); - }, 0); - - return () => clearTimeout(timeout); - }, [resumeToken, userId, loginClient, router]); -}; diff --git a/apps/meteor/client/views/root/hooks/useLoginViaQuery.ts b/apps/meteor/client/views/root/hooks/useLoginViaQuery.ts index 7bc3b2b93ecb0..a67739eb7b025 100644 --- a/apps/meteor/client/views/root/hooks/useLoginViaQuery.ts +++ b/apps/meteor/client/views/root/hooks/useLoginViaQuery.ts @@ -7,17 +7,12 @@ export const useLoginViaQuery = () => { useEffect(() => { const handleLogin = async () => { - const { resumeToken, loginClient } = router.getSearchParameters(); + const { resumeToken } = router.getSearchParameters(); if (!resumeToken) { return; } - //Case handled by useLoginOtherClients, we don't want to login here. - if (loginClient) { - return; - } - try { await loginWithToken(resumeToken); diff --git a/apps/meteor/client/views/root/hooks/useShareSessionWithOtherClients.ts b/apps/meteor/client/views/root/hooks/useShareSessionWithOtherClients.ts deleted file mode 100644 index 62fd2fee04818..0000000000000 --- a/apps/meteor/client/views/root/hooks/useShareSessionWithOtherClients.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { useRouter, useSearchParameter, useUserId } from '@rocket.chat/ui-contexts'; -import { useEffect } from 'react'; - -import { buildDeepLinkURL } from '../../../lib/buildAuthDeeplinkURL'; -import { readStoredLoginToken } from '../../../lib/sdk/ddpSdk'; - -export const useShareSessionWithOtherClients = () => { - const router = useRouter(); - const userId = useUserId(); - const resumeToken = useSearchParameter('resumeToken'); - const loginClient = useSearchParameter('loginClient'); - - useEffect(() => { - if (!userId) { - return; - } - - const loginToken = readStoredLoginToken(); - - if (!loginToken) { - return; - } - - if (resumeToken) { - return; - } - - if (loginClient !== 'desktop' && loginClient !== 'mobile') { - return; - } - - const loginURL = buildDeepLinkURL(loginToken, userId); - window.location.href = loginURL; - - const timeout = setTimeout(() => { - router.navigate('/home', { replace: true }); - }, 100); - - return () => clearTimeout(timeout); - }, [resumeToken, loginClient, router, userId]); -}; diff --git a/apps/meteor/definition/externals/express-session.d.ts b/apps/meteor/definition/externals/express-session.d.ts deleted file mode 100644 index 6a59655d241a7..0000000000000 --- a/apps/meteor/definition/externals/express-session.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import 'express-session'; - -declare module 'express-session' { - interface SessionData { - loginClient?: string; - } -} diff --git a/apps/meteor/definition/externals/express.d.ts b/apps/meteor/definition/externals/express.d.ts index 251d8310daf9f..1661385d94f77 100644 --- a/apps/meteor/definition/externals/express.d.ts +++ b/apps/meteor/definition/externals/express.d.ts @@ -9,9 +9,3 @@ declare module 'express' { unauthorized?: boolean; } } -declare global { - namespace Express { - // eslint-disable-next-line @typescript-eslint/no-empty-interface -- merges with Passport's Express.User - interface User extends IUser {} - } -} diff --git a/apps/meteor/definition/externals/meteor/accounts-base.d.ts b/apps/meteor/definition/externals/meteor/accounts-base.d.ts index 9676c1c6d8678..39ea55788e9a7 100644 --- a/apps/meteor/definition/externals/meteor/accounts-base.d.ts +++ b/apps/meteor/definition/externals/meteor/accounts-base.d.ts @@ -23,7 +23,7 @@ declare module 'meteor/accounts-base' { function _generateStampedLoginToken(): { token: string; when: Date }; - function _insertLoginToken(userId: string, token: { token: string; when: Date }): Promise; + function _insertLoginToken(userId: string, token: { token: string; when: Date }): void; function _runLoginHandlers(methodInvocation: T, loginRequest: Record): Promise; @@ -41,9 +41,7 @@ declare module 'meteor/accounts-base' { serviceName: string, serviceData: Record, options: Record, - ): Promise | undefined>; - - function addAutopublishFields(options: Record): void; + ): Record; function _clearAllLoginTokens(userId: string | null): void; diff --git a/apps/meteor/package.json b/apps/meteor/package.json index 726e1e5c150b4..1293d2a94219c 100644 --- a/apps/meteor/package.json +++ b/apps/meteor/package.json @@ -183,7 +183,6 @@ "colorette": "^2.0.20", "colors": "^1.4.0", "connect": "^3.7.0", - "connect-mongo": "5.1.0", "cookie": "^0.7.2", "cookie-parser": "^1.4.7", "cors": "^2.8.6", @@ -206,7 +205,6 @@ "expiry-map": "^2.0.0", "express": "^4.21.2", "express-rate-limit": "^5.5.1", - "express-session": "^1.19.0", "fast-redact": "^3.5.0", "fastq": "^1.17.1", "fflate": "^0.8.2", @@ -263,13 +261,6 @@ "object-path": "^0.11.8", "overlayscrollbars": "~2.11.5", "overlayscrollbars-react": "^0.5.6", - "passport": "^0.7.0", - "passport-apple": "^2.0.2", - "passport-facebook": "^3.0.0", - "passport-github2": "^0.1.12", - "passport-google-oauth20": "^2.0.0", - "passport-oauth2": "^1.8.0", - "passport-twitter": "^1.0.4", "path": "^0.12.7", "path-to-regexp": "^6.3.0", "pino": "10.3.1", @@ -365,7 +356,6 @@ "@types/ejson": "^2.2.2", "@types/express": "^4.17.25", "@types/express-rate-limit": "^5.1.3", - "@types/express-session": "^1", "@types/fast-redact": "^3", "@types/google-libphonenumber": "^7.4.30", "@types/gravatar": "^1.8.6", @@ -396,13 +386,6 @@ "@types/oauth2-server": "^3.0.18", "@types/object-path": "^0.11.4", "@types/parseurl": "^1.3.3", - "@types/passport": "^1.0.17", - "@types/passport-apple": "^2", - "@types/passport-facebook": "^3.0.4", - "@types/passport-github2": "^1.2.9", - "@types/passport-google-oauth20": "^2", - "@types/passport-oauth2": "^1", - "@types/passport-twitter": "^1", "@types/prometheus-gc-stats": "^0.6.4", "@types/proxy-from-env": "^1.0.4", "@types/proxyquire": "^1.3.31", diff --git a/apps/meteor/server/configuration/accounts_meld.js b/apps/meteor/server/configuration/accounts_meld.js index 2c8fff11a820b..037150def37ee 100644 --- a/apps/meteor/server/configuration/accounts_meld.js +++ b/apps/meteor/server/configuration/accounts_meld.js @@ -18,6 +18,10 @@ export async function configureAccounts() { } } + if (serviceName === 'linkedin') { + serviceData.email = serviceData.emailAddress; + } + if (serviceData.email) { const user = await Users.findOneByEmailAddress(serviceData.email); if (user != null && user.services?.[serviceName]?.id !== serviceData.id) { diff --git a/apps/meteor/server/configuration/configurePassport.ts b/apps/meteor/server/configuration/configurePassport.ts deleted file mode 100644 index 48c9ccd9d85cc..0000000000000 --- a/apps/meteor/server/configuration/configurePassport.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import bodyParser from 'body-parser'; -import MongoStore from 'connect-mongo'; -import express from 'express'; -import rateLimit from 'express-rate-limit'; -import session from 'express-session'; -import { MongoInternals } from 'meteor/mongo'; -import { WebApp } from 'meteor/webapp'; -import passport from 'passport'; - -import type { ICachedSettings } from '../../app/settings/server/CachedSettings'; -import { configureOAuthServices } from '../lib/oauth/configureOAuthServices'; -import { createOAuthServiceConfig } from '../lib/oauth/createOAuthServiceConfig'; -import { getOAuthServices } from '../lib/oauth/getOAuthServices'; - -const oAuthPaths = ['/oauth', '/_oauth']; - -const { Router: router } = express; - -export const oAuthRouter = router(); - -const oAuthApp = express(); -oAuthApp.set('trust proxy', true); - -export const configurePassport = (settings: ICachedSettings) => { - const { client } = MongoInternals.defaultRemoteCollectionDriver().mongo; - - oAuthApp.use( - oAuthPaths, - session({ - name: 'oauth', - secret: settings.get('Accounts_OAuth_Session_Secret'), - resave: false, - saveUninitialized: false, - proxy: true, - store: MongoStore.create({ - client, - collectionName: 'rocketchat_oauth_sessions', - ttl: 5 * 60, - autoRemove: 'native', - }), - cookie: { - httpOnly: true, - secure: process.env.NODE_ENV === 'production', - maxAge: 5 * 60 * 1000, // 5 minutes - sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax', - }, - }), - ); - - oAuthApp.use(oAuthPaths, passport.initialize()); - oAuthApp.use(oAuthPaths, passport.session()); - oAuthApp.use(oAuthPaths, bodyParser.urlencoded({ extended: true })); - - const oauthRateLimiter = rateLimit({ - windowMs: settings.get('API_Enable_Rate_Limiter_Limit_Time_Default'), - max: settings.get('API_Enable_Rate_Limiter_Limit_Calls_Default'), - skip: () => - settings.get('API_Enable_Rate_Limiter') !== true || - (process.env.NODE_ENV === 'development' && settings.get('API_Enable_Rate_Limiter_Dev') !== true), - handler: (_req, res) => { - res.status(429).json({ - success: false, - error: 'Too many requests. Please try again later.', - }); - }, - }); - - oAuthRouter.use(oAuthPaths, oauthRateLimiter); - - // Register OAuth Routes - oAuthApp.use(oAuthRouter); - - passport.serializeUser((user: any, done) => { - done(null, user._id); - }); - - passport.deserializeUser(async (id, done) => { - const user = await Users.findOneById(id as string); - // we don’t actually use this user later - done(null, user); - }); - - settings.watchByRegex(/^(Accounts_OAuth_)[a-z0-9_]+$/i, () => { - const services = getOAuthServices(settings); - const oauthServiceConfigs = createOAuthServiceConfig(settings, services); - configureOAuthServices(oauthServiceConfigs, settings); - }); - - WebApp.rawConnectHandlers.use(oAuthApp); -}; diff --git a/apps/meteor/server/configuration/index.ts b/apps/meteor/server/configuration/index.ts index 79f3160120ba1..491c410e26f4a 100644 --- a/apps/meteor/server/configuration/index.ts +++ b/apps/meteor/server/configuration/index.ts @@ -7,7 +7,6 @@ import { configureCORS } from './configureCORS'; import { configureDirectReply } from './configureDirectReply'; import { configureIRC } from './configureIRC'; import { configureLogLevel } from './configureLogLevel'; -import { configurePassport } from './configurePassport'; import { configureSMTP } from './configureSMTP'; import { configureLDAP } from './ldap'; import { configureOAuth } from './oauth'; @@ -29,6 +28,5 @@ export async function configureServer(settings: ICachedSettings) { configureDirectReply(settings), configureSMTP(settings), configureIRC(settings), - configurePassport(settings), ]); } diff --git a/apps/meteor/server/importPackages.ts b/apps/meteor/server/importPackages.ts index 228d809fe6dc2..645ff19932e0a 100644 --- a/apps/meteor/server/importPackages.ts +++ b/apps/meteor/server/importPackages.ts @@ -33,8 +33,6 @@ import '../app/importer-slack-users/server'; import '../app/integrations/server'; import '../app/irc/server'; import '../app/lib/server'; -import '../app/meteor-developer/server'; -import '../app/linkedin/server'; import '../app/token-login/server'; import '../app/mailer/server/api'; import '../app/markdown/server'; diff --git a/apps/meteor/server/lib/oauth/addPassportCustomOAuth.ts b/apps/meteor/server/lib/oauth/addPassportCustomOAuth.ts deleted file mode 100644 index e26f51bdf9c72..0000000000000 --- a/apps/meteor/server/lib/oauth/addPassportCustomOAuth.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { OAuthConfiguration } from '@rocket.chat/core-typings'; -import passport from 'passport'; -import type { DoneCallback, Profile } from 'passport'; - -import { passportOAuthCallback } from './passportOAuthCallback'; -import { verifyFunction } from './verifyFunction'; -import { CustomOAuthStrategy } from '../../../app/custom-oauth/server/customOAuth'; -import { settings } from '../../../app/settings/server'; -import { oAuthRouter } from '../../configuration/configurePassport'; - -export const addPassportCustomOAuth = (serviceName: string, config: Partial) => { - passport.unuse(serviceName); - - if (!config.clientId || !config.clientSecret || !config.serverURL) { - return; - } - - passport.use( - serviceName, - new CustomOAuthStrategy( - serviceName, - config as OAuthConfiguration & { clientSecret: string }, - (accessToken: string, refreshToken: string, profile: Profile, done: DoneCallback) => - verifyFunction(accessToken, refreshToken, profile, done, serviceName), - ), - ); - - const siteUrl = settings.get('Site_Url'); - - oAuthRouter.get( - `/oauth/${serviceName}`, - (req, _res, next) => { - const { loginClient } = req.query; - if (loginClient === 'mobile' || loginClient === 'desktop') { - req.session.loginClient = loginClient; - req.session.save(() => { - next(); - }); - } else { - //delete stale value from previous sessions if any - delete req.session.loginClient; - next(); - } - }, - passport.authenticate(serviceName, { scope: config.scope, prompt: 'consent', failureRedirect: '/login', keepSessionInfo: true }), - ); - - oAuthRouter.get( - `/_oauth/${serviceName}`, - passport.authenticate(serviceName, { failureRedirect: '/login', failureFlash: true, failWithError: true, keepSessionInfo: true }), - passportOAuthCallback(siteUrl), - ); -}; diff --git a/apps/meteor/server/lib/oauth/configureOAuthServices.ts b/apps/meteor/server/lib/oauth/configureOAuthServices.ts deleted file mode 100644 index 5ff0b202a2e89..0000000000000 --- a/apps/meteor/server/lib/oauth/configureOAuthServices.ts +++ /dev/null @@ -1,87 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import passport from 'passport'; -import type { Profile, DoneCallback } from 'passport'; - -import type { OAuthServiceConfig } from './createOAuthServiceConfig'; -import { passportOAuthCallback } from './passportOAuthCallback'; -import type { ICachedSettings } from '../../../app/settings/server/CachedSettings'; -import { oAuthRouter } from '../../configuration/configurePassport'; - -export const configureOAuthServices = (oauthServiceConfig: OAuthServiceConfig[], settings: ICachedSettings) => { - oauthServiceConfig.forEach((config) => { - const Strategy = config.strategy; - const siteUrl = settings.get('Site_Url'); - - passport.unuse(config.provider); - - passport.use( - config.provider, - new Strategy( - { - ...config, - clientID: config.clientId, - clientSecret: config.clientSecret, - consumerKey: config.clientId, - consumerSecret: config.clientSecret, - callbackURL: `${siteUrl}/_oauth/${config.provider}`, - state: true, - pkce: true, - profileFields: ['id', 'displayName', 'emails'], - }, - async (accessToken: string, refreshToken: string, profile: Profile, done: DoneCallback) => { - const profileWithRaw = profile as Profile & { _json?: Record; _raw?: string }; - const { _json, _raw, ...restProfile } = profileWithRaw; - - const user = await Accounts.updateOrCreateUserFromExternalService( - config.provider, - { - accessToken, - refreshToken, - name: profile.displayName, - ...restProfile, - ..._json, - email: profile?.emails?.[0]?.value, - }, - {}, - ); - - if (!user?.userId || typeof user?.userId !== 'string') { - return done(new Error('User not found')); - } - - const userFromDB = await Users.findOneById(user.userId); - - if (!userFromDB) { - return done(new Error('User not found')); - } - - return done(null, userFromDB); - }, - ), - ); - - oAuthRouter.get( - `/oauth/${config.provider}`, - (req, _res, next) => { - const { loginClient } = req.query; - if (loginClient === 'mobile' || loginClient === 'desktop') { - req.session.loginClient = loginClient; - req.session.save(() => { - next(); - }); - } else { - //delete stale value from previous sessions if any - delete req.session.loginClient; - next(); - } - }, - passport.authenticate(config.provider, { scope: config.scope, prompt: 'consent', failureRedirect: '/login', keepSessionInfo: true }), - ); - oAuthRouter.get( - `/_oauth/${config.provider}`, - passport.authenticate(config.provider, { failureRedirect: '/login', failureFlash: true, failWithError: true, keepSessionInfo: true }), - passportOAuthCallback(siteUrl), - ); - }); -}; diff --git a/apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts b/apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts deleted file mode 100644 index 3ea8213140b95..0000000000000 --- a/apps/meteor/server/lib/oauth/createOAuthServiceConfig.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { capitalize } from '@rocket.chat/string-helpers'; -import { isTruthy } from '@rocket.chat/tools'; -import type { Strategy } from 'passport'; - -import { OAuthConfigs } from './oauthConfigs'; -import { type ICachedSettings } from '../../../app/settings/server/CachedSettings'; - -export type OAuthServiceConfig = { - provider: string; - strategy: new (...args: any[]) => Strategy; - clientId: string; - clientSecret: string; - scope?: string[]; -}; - -export const createOAuthServiceConfig = (settings: ICachedSettings, services: string[]): OAuthServiceConfig[] => { - return services - .map((service) => { - if (!OAuthConfigs[service]) { - return; - } - - if (service === 'github_enterprise') { - const clientId = settings.get('Accounts_OAuth_GitHub_Enterprise_id'); - const clientSecret = settings.get('Accounts_OAuth_GitHub_Enterprise_secret'); - const serverUrl = settings.get('API_GitHub_Enterprise_URL'); - - if (!clientId || !clientSecret || !serverUrl) { - return; - } - - return { - provider: service, - clientId, - clientSecret, - authorizationURL: `${serverUrl}/login/oauth/authorize`, - tokenURL: `${serverUrl}/login/oauth/access_token`, - userProfileURL: `${serverUrl}/api/v3/user`, - strategy: OAuthConfigs.github_enterprise.strategy, - scope: OAuthConfigs.github_enterprise.scope, - }; - } - - const clientId = settings.get(`Accounts_OAuth_${capitalize(service)}_id`); - const clientSecret = settings.get(`Accounts_OAuth_${capitalize(service)}_secret`); - - if (!clientId || !clientSecret) { - return; - } - - return { - provider: service, - clientId, - clientSecret, - ...OAuthConfigs[service], - }; - }) - .filter(isTruthy); -}; diff --git a/apps/meteor/server/lib/oauth/getOAuthServices.ts b/apps/meteor/server/lib/oauth/getOAuthServices.ts deleted file mode 100644 index 7a431982d9f71..0000000000000 --- a/apps/meteor/server/lib/oauth/getOAuthServices.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { isTruthy } from '@rocket.chat/tools'; - -import { OAuthConfigs } from './oauthConfigs'; -import { type ICachedSettings } from '../../../app/settings/server/CachedSettings'; - -export const getOAuthServices = (settings: ICachedSettings) => { - const services = settings.getByRegexp(/^(Accounts_OAuth_|Accounts_OAuth_Custom-)[a-z0-9_]+$/i); - const filteredServices = services.filter(([, value]) => typeof value === 'boolean' && value === true); - return filteredServices - .map(([key, value]) => { - if (!value) { - return; - } - - let serviceName = key.replace('Accounts_OAuth_', ''); - if (serviceName === 'Meteor') { - serviceName = 'meteor-developer'; - } - - if (/Accounts_OAuth_Custom-/.test(key)) { - return; - } - - const serviceKey = serviceName.toLowerCase(); - - const oauthConfig = OAuthConfigs[serviceKey]; - if (!oauthConfig) { - return; - } - - return serviceKey; - }) - .filter(isTruthy); -}; diff --git a/apps/meteor/server/lib/oauth/oauthConfigs.ts b/apps/meteor/server/lib/oauth/oauthConfigs.ts deleted file mode 100644 index b4c8fe6604fa5..0000000000000 --- a/apps/meteor/server/lib/oauth/oauthConfigs.ts +++ /dev/null @@ -1,36 +0,0 @@ -import type { Strategy } from 'passport'; -import { Strategy as FacebookStrategy } from 'passport-facebook'; -import { Strategy as GitHubStrategy } from 'passport-github2'; -import { Strategy as GoogleStrategy } from 'passport-google-oauth20'; -import { Strategy as TwitterStrategy } from 'passport-twitter'; - -export type OAuthConfig = { - strategy: new (...args: any[]) => Strategy; - scope?: string[]; - includeEmail?: boolean; -}; - -export const OAuthConfigs: Record = { - github: { - strategy: GitHubStrategy, - scope: ['user:email'], - }, - facebook: { - strategy: FacebookStrategy, - scope: ['email'], - }, - google: { - strategy: GoogleStrategy, - scope: ['email', 'profile'], - }, - twitter: { - strategy: TwitterStrategy, - includeEmail: true, - }, - github_enterprise: { - strategy: GitHubStrategy, - scope: ['user:email'], - }, -} as const; - -export type Provider = keyof typeof OAuthConfigs; diff --git a/apps/meteor/server/lib/oauth/passportOAuthCallback.ts b/apps/meteor/server/lib/oauth/passportOAuthCallback.ts deleted file mode 100644 index 7bd128f6ebf7a..0000000000000 --- a/apps/meteor/server/lib/oauth/passportOAuthCallback.ts +++ /dev/null @@ -1,51 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; -import { Logger } from '@rocket.chat/logger'; -import type { Request, Response } from 'express'; -import { Accounts } from 'meteor/accounts-base'; - -import { doesUserRequire2FA } from './twoFactorAuth'; - -const logger = new Logger('OAuth'); - -export const passportOAuthCallback = (siteUrl: string) => async (req: Request, res: Response) => { - const oAuthUser = req.user as IUser; - - if (!oAuthUser) { - return res.redirect('/login'); - } - - const { loginClient } = req.session; - - const secondFactorMethod = doesUserRequire2FA(oAuthUser); - - if (secondFactorMethod) { - const challengeId = await secondFactorMethod.sendTwoFactorChallenge(oAuthUser); - const twoFARedirectUrl = new URL(`/2fa/${secondFactorMethod.method}/${challengeId}`, siteUrl); - - if (loginClient) { - twoFARedirectUrl.searchParams.set('loginClient', loginClient); - } - - return res.redirect(twoFARedirectUrl.toString()); - } - - const stampedToken = Accounts._generateStampedLoginToken(); - await Accounts._insertLoginToken(oAuthUser._id, stampedToken); - - const redirectUrl = new URL(`/home`, siteUrl); - - redirectUrl.searchParams.set('resumeToken', stampedToken.token); - redirectUrl.searchParams.set('userId', oAuthUser._id); - - if (loginClient) { - redirectUrl.searchParams.set('loginClient', loginClient); - } - - setImmediate(() => res.redirect(redirectUrl.toString())); - - req.session.destroy((err) => { - if (err) { - logger.error({ msg: 'Error destroying OAuth session', err }); - } - }); -}; diff --git a/apps/meteor/server/lib/oauth/twoFactorAuth.ts b/apps/meteor/server/lib/oauth/twoFactorAuth.ts deleted file mode 100644 index 2c97ff5fc5244..0000000000000 --- a/apps/meteor/server/lib/oauth/twoFactorAuth.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { IUser } from '@rocket.chat/core-typings'; - -import { getRememberDate } from '../../../app/2fa/server/code'; -import { EmailCheckForOAuth } from '../../../app/2fa/server/code/EmailCheckForOAuth'; -import { TOTPCheckForOAuth } from '../../../app/2fa/server/code/TOTPCheckForOAuth'; - -export const emailCheckForOAuth = new EmailCheckForOAuth(); -export const totpCheckForOAuth = new TOTPCheckForOAuth(); - -const twoFACheckMethodsForOAuth = { - [emailCheckForOAuth.method]: emailCheckForOAuth, - [totpCheckForOAuth.method]: totpCheckForOAuth, -}; - -export const getTwoFAMethodForOAuth = (method: 'email' | 'totp') => { - return twoFACheckMethodsForOAuth[method]; -}; - -const getSecondFactorMethod = (user: IUser) => { - return Array.from(Object.values(twoFACheckMethodsForOAuth)).find((method) => method.isEnabled(user)); -}; - -export const doesUserRequire2FA = (user: IUser) => { - const rememberAfterRegistration = getRememberDate(user.createdAt); - - if (rememberAfterRegistration && rememberAfterRegistration > new Date()) { - return false; - } - - const secondFactorMethod = getSecondFactorMethod(user); - - if (!secondFactorMethod) { - return false; - } - - return secondFactorMethod; -}; diff --git a/apps/meteor/server/lib/oauth/updateOAuthServices.ts b/apps/meteor/server/lib/oauth/updateOAuthServices.ts index f501b9c56888a..784628cae44a9 100644 --- a/apps/meteor/server/lib/oauth/updateOAuthServices.ts +++ b/apps/meteor/server/lib/oauth/updateOAuthServices.ts @@ -7,7 +7,6 @@ import type { } from '@rocket.chat/core-typings'; import { LoginServiceConfiguration } from '@rocket.chat/models'; -import { addPassportCustomOAuth } from './addPassportCustomOAuth'; import { logger } from './logger'; import { CustomOAuth } from '../../../app/custom-oauth/server/custom_oauth_server'; import { @@ -69,7 +68,7 @@ export async function updateOAuthServices(): Promise { data.rolesToSync = settings.get(`${key}-roles_to_sync`); data.showButton = settings.get(`${key}-show_button`); - const config = { + new CustomOAuth(serviceKey, { serverURL: data.serverURL, tokenPath: data.tokenPath, identityPath: data.identityPath, @@ -94,12 +93,7 @@ export async function updateOAuthServices(): Promise { rolesToSync: data.rolesToSync, accessTokenParam: data.accessTokenParam, showButton: data.showButton, - clientSecret: data.secret, - clientId: data.clientId, - }; - - new CustomOAuth(serviceKey, config); - addPassportCustomOAuth(serviceKey, config); + }); } if (serviceName === 'Facebook') { (data as FacebookOAuthConfiguration).appId = data.clientId as string; diff --git a/apps/meteor/server/lib/oauth/verifyFunction.ts b/apps/meteor/server/lib/oauth/verifyFunction.ts deleted file mode 100644 index 74d8c051e5992..0000000000000 --- a/apps/meteor/server/lib/oauth/verifyFunction.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { Users } from '@rocket.chat/models'; -import { Accounts } from 'meteor/accounts-base'; -import type { DoneCallback, Profile } from 'passport'; - -export const verifyFunction = async ( - accessToken: string, - refreshToken: string, - profile: Profile, - done: DoneCallback, - serviceName: string, -) => { - const profileWithRaw = profile as Profile & { _json?: Record; _raw?: string }; - const { _json, _raw, ...restProfile } = profileWithRaw; - - const user = await Accounts.updateOrCreateUserFromExternalService( - serviceName, - { - accessToken, - refreshToken, - name: profile.displayName, - email: profile?.emails?.[0]?.value, - ...profile, - ...restProfile, - ..._json, - }, - {}, - ); - - if (!user?.userId || typeof user?.userId !== 'string') { - return done(new Error('User not found')); - } - - const userFromDB = await Users.findOneById(user.userId); - - if (!userFromDB) { - return done(new Error('User not found')); - } - - return done(null, userFromDB); -}; diff --git a/apps/meteor/server/models.ts b/apps/meteor/server/models.ts index 1d8481923b987..49b5b98b19f08 100644 --- a/apps/meteor/server/models.ts +++ b/apps/meteor/server/models.ts @@ -75,7 +75,6 @@ import { WebdavAccountsRaw, WorkspaceCredentialsRaw, AbacAttributesRaw, - TwoFactorChallengesRaw, } from '@rocket.chat/models'; import type { Collection } from 'mongodb'; @@ -162,4 +161,3 @@ registerModel('IVideoConferenceModel', new VideoConferenceRaw(db)); registerModel('IWebdavAccountsModel', new WebdavAccountsRaw(db)); registerModel('IWorkspaceCredentialsModel', new WorkspaceCredentialsRaw(db)); registerModel('IAbacAttributesModel', new AbacAttributesRaw(db)); -registerModel('ITwoFactorChallengesModel', new TwoFactorChallengesRaw(db)); diff --git a/apps/meteor/server/settings/oauth.ts b/apps/meteor/server/settings/oauth.ts index 8ee583614882b..2aea9b119cf83 100644 --- a/apps/meteor/server/settings/oauth.ts +++ b/apps/meteor/server/settings/oauth.ts @@ -1,5 +1,3 @@ -import { Random } from '@rocket.chat/random'; - import { settingsRegistry } from '../../app/settings/server'; export const createOauthSettings = () => @@ -407,11 +405,6 @@ export const createOauthSettings = () => enableQuery, }); }); - await this.add('Accounts_OAuth_Session_Secret', Random.secret(), { - type: 'string', - secret: true, - hidden: true, - }); return this.section('Proxy', async function () { await this.add('Accounts_OAuth_Proxy_host', 'https://oauth-proxy.rocket.chat', { type: 'string', diff --git a/apps/meteor/tests/e2e/fixtures/addCustomOAuth.ts b/apps/meteor/tests/e2e/fixtures/addCustomOAuth.ts index 70885f1a634fb..5721266b728d5 100644 --- a/apps/meteor/tests/e2e/fixtures/addCustomOAuth.ts +++ b/apps/meteor/tests/e2e/fixtures/addCustomOAuth.ts @@ -15,7 +15,4 @@ export default async function addCustomOAuth(): Promise { await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test`, { data: { value: false }, headers }); await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test-url`, { data: { value: 'https://rocket.chat' }, headers }); await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test-login_style`, { data: { value: 'redirect' }, headers }); - await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test-id`, { data: { value: 'abc' }, headers }); - await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test-secret`, { data: { value: 'def' }, headers }); - await api.post(`${BASE_API_URL}/settings/Accounts_OAuth_Custom-Test-authorize_path`, { data: { value: '/authorize' }, headers }); } diff --git a/packages/core-typings/src/ILoginServiceConfiguration.ts b/packages/core-typings/src/ILoginServiceConfiguration.ts index c3fb05fa8e18f..76a4779e806e9 100644 --- a/packages/core-typings/src/ILoginServiceConfiguration.ts +++ b/packages/core-typings/src/ILoginServiceConfiguration.ts @@ -34,11 +34,6 @@ export type OAuthConfiguration = { mergeRoles: boolean; rolesToSync: string; showButton: boolean; - addAutopublishFields?: { - forLoggedInUser: string[]; - forOtherUsers: string[]; - }; - pkce?: boolean; }; export type FacebookOAuthConfiguration = Omit, 'clientId'> & { diff --git a/packages/core-typings/src/ITwoFactorChallenge.ts b/packages/core-typings/src/ITwoFactorChallenge.ts deleted file mode 100644 index 783309001ee5d..0000000000000 --- a/packages/core-typings/src/ITwoFactorChallenge.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface ITwoFactorChallenge { - _id: string; - userId: string; - method: 'email' | 'totp'; - expireAt: Date; - createdAt: Date; -} diff --git a/packages/core-typings/src/IUser.ts b/packages/core-typings/src/IUser.ts index bd240e0cdc7bb..857d4a07fd91b 100644 --- a/packages/core-typings/src/IUser.ts +++ b/packages/core-typings/src/IUser.ts @@ -233,7 +233,7 @@ export interface IUser extends IRocketChatRecord { isOAuthUser?: boolean; // client only field __rooms?: string[]; inactiveReason?: 'deactivated' | 'pending_approval' | 'idle_too_long'; - providerId?: string; + abacAttributes?: IAbacAttributeDefinition[]; } diff --git a/packages/core-typings/src/index.ts b/packages/core-typings/src/index.ts index 0b4cd9a471675..90dd9c4e638a8 100644 --- a/packages/core-typings/src/index.ts +++ b/packages/core-typings/src/index.ts @@ -134,5 +134,3 @@ export type * from './ServerAudit/IAuditServerAbacAction'; export type * from './ServerAudit/IAuditUserChangedEvent'; export { schemas } from './Ajv'; - -export type * from './ITwoFactorChallenge'; diff --git a/packages/desktop-api/src/index.ts b/packages/desktop-api/src/index.ts index 5344ad5d18005..9d10c1f89d1c5 100644 --- a/packages/desktop-api/src/index.ts +++ b/packages/desktop-api/src/index.ts @@ -63,5 +63,4 @@ export interface IRocketChatDesktop { setUserToken: (token: string, userId: string) => void; openDocumentViewer: (url: string, format: string, options: any) => void; reloadServer: () => void; - openInBrowser: (url: string) => void; } diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index e05c1718ea03b..06cf250932846 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -1080,7 +1080,6 @@ "Categories": "Categories", "Categories*": "Categories*", "Certificates_and_Keys": "Certificates and Keys", - "Challenge_expired_please_try_again_later": "Challenge expired. Please try again later.", "Change_Room_Type": "Changing the Room Type", "Changed_from": "Changed from", "Changed_to": "Changed to", @@ -3413,7 +3412,6 @@ "Max_number_of_chats_per_agent_description": "The max. number of simultaneous chats that the agents can attend", "Max_number_of_uses": "Max number of uses", "Maximum": "Maximum", - "Maximum_number_of_attempts_reached_please_try_again_later": "Maximum number of attempts reached. Please try again later.", "Maximum_number_of_guests_reached": "Maximum number of guests reached", "Me": "Me", "Media": "Media", @@ -6826,7 +6824,6 @@ "registration.component.form.usernameAlreadyInUse": "Username already in use", "registration.component.form.usernameContainsInvalidChars": "Username contains invalid characters", "registration.component.login": "Login", - "registration.component.login.onWeb": "Login on web", "registration.component.login.incorrectPassword": "Incorrect password", "registration.component.login.userNotFound": "User not found", "registration.component.resetPassword": "Reset password", diff --git a/packages/model-typings/src/index.ts b/packages/model-typings/src/index.ts index 7e459803350b9..439447c49ea02 100644 --- a/packages/model-typings/src/index.ts +++ b/packages/model-typings/src/index.ts @@ -81,4 +81,3 @@ export type * from './updater'; export type * from './models/IWorkspaceCredentialsModel'; export type * from './models/ICallHistoryModel'; export type * from './models/IAbacAttributesModel'; -export type * from './models/ITwoFactorChallengesModel'; diff --git a/packages/model-typings/src/models/ITwoFactorChallengesModel.ts b/packages/model-typings/src/models/ITwoFactorChallengesModel.ts deleted file mode 100644 index e0f523ae49104..0000000000000 --- a/packages/model-typings/src/models/ITwoFactorChallengesModel.ts +++ /dev/null @@ -1,10 +0,0 @@ -import type { ITwoFactorChallenge } from '@rocket.chat/core-typings'; -import type { DeleteResult, FindOptions } from 'mongodb'; - -import type { IBaseModel } from './IBaseModel'; - -export interface ITwoFactorChallengesModel extends IBaseModel { - findOneByPendingChallengeId(id: string, options?: FindOptions): Promise; - removeByPendingChallengeId(id: string): Promise; - createTwoFactorChallenge(userId: string, method: ITwoFactorChallenge['method']): Promise; -} diff --git a/packages/models/src/index.ts b/packages/models/src/index.ts index 753e851d67a62..099420cd2f7ae 100644 --- a/packages/models/src/index.ts +++ b/packages/models/src/index.ts @@ -80,7 +80,6 @@ import type { IMediaCallNegotiationsModel, ICallHistoryModel, IAbacAttributesModel, - ITwoFactorChallengesModel, } from '@rocket.chat/model-typings'; import type { Collection, Db } from 'mongodb'; @@ -208,7 +207,6 @@ export const Migrations = proxify('IMigrationsModel'); export const ModerationReports = proxify('IModerationReportsModel'); export const WorkspaceCredentials = proxify('IWorkspaceCredentialsModel'); export const AbacAttributes = proxify('IAbacAttributesModel'); -export const TwoFactorChallenges = proxify('ITwoFactorChallengesModel'); export function registerServiceModels(db: Db, trash?: Collection>): void { registerModel('IUsersSessionsModel', () => new UsersSessionsRaw(db)); diff --git a/packages/models/src/modelClasses.ts b/packages/models/src/modelClasses.ts index b9d446e64c1ac..c554fc9698550 100644 --- a/packages/models/src/modelClasses.ts +++ b/packages/models/src/modelClasses.ts @@ -73,4 +73,3 @@ export * from './models/MediaCallNegotiations'; export * from './models/WorkspaceCredentials'; export * from './models/Trash'; export * from './models/CallHistory'; -export * from './models/TwoFactorChallenges'; diff --git a/packages/models/src/models/TwoFactorChallenges.ts b/packages/models/src/models/TwoFactorChallenges.ts deleted file mode 100644 index 2d4fb748c1d15..0000000000000 --- a/packages/models/src/models/TwoFactorChallenges.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { randomBytes } from 'crypto'; - -import type { ITwoFactorChallenge } from '@rocket.chat/core-typings'; -import type { ITwoFactorChallengesModel } from '@rocket.chat/model-typings'; -import type { Db, FindOptions, IndexDescription } from 'mongodb'; - -import { BaseRaw } from './BaseRaw'; - -export class TwoFactorChallengesRaw extends BaseRaw implements ITwoFactorChallengesModel { - constructor(db: Db) { - super(db, 'two_factor_challenges'); - } - - override modelIndexes(): IndexDescription[] { - return [{ key: { expireAt: 1 }, expireAfterSeconds: 0 }]; - } - - findOneByPendingChallengeId(pendingChallengeId: string, options?: FindOptions) { - return this.findOne({ _id: pendingChallengeId }, options); - } - - removeByPendingChallengeId(pendingChallengeId: string) { - return this.deleteOne({ _id: pendingChallengeId }); - } - - async createTwoFactorChallenge(userId: string, method: ITwoFactorChallenge['method']): Promise { - const now = new Date(); - const challengeId = randomBytes(32).toString('hex'); - await this.insertOne({ - _id: challengeId, - userId, - method, - createdAt: now, - expireAt: new Date(now.getTime() + 1000 * 60 * 5), - }); - return challengeId; - } -} diff --git a/packages/rest-typings/src/index.ts b/packages/rest-typings/src/index.ts index ef1f94da30eb1..9c25e22e983f8 100644 --- a/packages/rest-typings/src/index.ts +++ b/packages/rest-typings/src/index.ts @@ -41,7 +41,6 @@ import type { SettingsEndpoints } from './v1/settings'; import type { StatisticsEndpoints } from './v1/statistics'; import type { SubscriptionsEndpoints } from './v1/subscriptionsEndpoints'; import type { TeamsEndpoints } from './v1/teams'; -import type { TwoFactorChallengesEndpoints } from './v1/twoFactorChallenges'; import type { UsersEndpoints } from './v1/users'; import type { VideoConferenceEndpoints } from './v1/videoConference'; @@ -91,7 +90,6 @@ export interface Endpoints AuthEndpoints, ImportEndpoints, ServerEventsEndpoints, - TwoFactorChallengesEndpoints, DefaultEndpoints {} type OperationsByPathPatternAndMethod< @@ -266,7 +264,6 @@ export * from './v1/auth'; export * from './v1/cloud'; export * from './v1/banners'; export * from './default'; -export * from './v1/twoFactorChallenges'; // Export the ajv instance for use in other packages export * from './v1/Ajv'; diff --git a/packages/rest-typings/src/v1/twoFactorChallenges.ts b/packages/rest-typings/src/v1/twoFactorChallenges.ts deleted file mode 100644 index 42b471b244a48..0000000000000 --- a/packages/rest-typings/src/v1/twoFactorChallenges.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { ajv } from './Ajv'; - -type TwoFactorChallengesSendEmailCode = { challengeId: string }; - -const TwoFactorChallengesSendEmailCodeSchema = { - type: 'object', - properties: { - challengeId: { - type: 'string', - }, - }, - required: ['challengeId'], - additionalProperties: false, -}; - -export const isTwoFactorChallengesSendEmailCodeParamsPOST = ajv.compile( - TwoFactorChallengesSendEmailCodeSchema, -); - -type TwoFactorChallengesVerifyChallenge = { challengeId: string; code: string }; - -const TwoFactorChallengesVerifyChallengeSchema = { - type: 'object', - properties: { - challengeId: { type: 'string' }, - code: { type: 'string' }, - }, - required: ['challengeId', 'code'], - additionalProperties: false, -}; - -export const isTwoFactorChallengesVerifyChallengeParamsPOST = ajv.compile( - TwoFactorChallengesVerifyChallengeSchema, -); - -export type TwoFactorChallengesEndpoints = { - '/v1/twoFactorChallenges.sendEmailCode': { - POST: (params: TwoFactorChallengesSendEmailCode) => void; - }; - '/v1/twoFactorChallenges.verifyChallenge': { - POST: (params: TwoFactorChallengesVerifyChallenge) => { loginToken: string; userId: string }; - }; -}; diff --git a/packages/web-ui-registration/global.d.ts b/packages/web-ui-registration/global.d.ts deleted file mode 100644 index 51c30e263ccad..0000000000000 --- a/packages/web-ui-registration/global.d.ts +++ /dev/null @@ -1,7 +0,0 @@ -import type { IRocketChatDesktop } from '@rocket.chat/desktop-api'; - -declare global { - interface Window { - RocketChatDesktop?: IRocketChatDesktop; - } -} diff --git a/packages/web-ui-registration/src/LoginServices.tsx b/packages/web-ui-registration/src/LoginServices.tsx index df490dfcd4d59..e36c032e0436f 100644 --- a/packages/web-ui-registration/src/LoginServices.tsx +++ b/packages/web-ui-registration/src/LoginServices.tsx @@ -1,13 +1,11 @@ -import { Button, ButtonGroup, Divider } from '@rocket.chat/fuselage'; +import { ButtonGroup, Divider } from '@rocket.chat/fuselage'; import { useLoginServices, useSetting } from '@rocket.chat/ui-contexts'; -import { useMemo, type Dispatch, type ReactElement, type SetStateAction } from 'react'; +import type { Dispatch, ReactElement, SetStateAction } from 'react'; import { useTranslation } from 'react-i18next'; import type { LoginErrorState } from './LoginForm'; import LoginServicesButton from './LoginServicesButton'; -const servicesToBeShownOnDesktop = ['saml', 'cas', 'ldap']; - const LoginServices = ({ disabled, setError, @@ -19,28 +17,10 @@ const LoginServices = ({ const services = useLoginServices(); const showFormLogin = useSetting('Accounts_ShowFormLogin'); - const isDesktopApp = !!window.RocketChatDesktop?.openInBrowser; - - const servicesToShow = useMemo( - () => (isDesktopApp ? services.filter(({ service }) => servicesToBeShownOnDesktop.includes(service)) : services), - [isDesktopApp, services], - ); - if (services.length === 0) { return null; } - const handleLoginOnWeb = () => { - if (!isDesktopApp) { - return; - } - - const redirectUrl = new URL(window.location.href); - redirectUrl.searchParams.set('loginClient', 'desktop'); - - window.RocketChatDesktop?.openInBrowser(redirectUrl.toString()); - }; - return ( <> {showFormLogin && ( @@ -48,20 +28,11 @@ const LoginServices = ({ {t('registration.component.form.divider')} )} - - {servicesToShow.length > 0 && ( - - {servicesToShow.map((service) => ( - - ))} - - )} - - {isDesktopApp && ( - - )} + + {services.map((service) => ( + + ))} + ); }; diff --git a/packages/web-ui-registration/src/LoginServicesButton.tsx b/packages/web-ui-registration/src/LoginServicesButton.tsx index 62d3d9856cd17..7eb22ad5dbfc6 100644 --- a/packages/web-ui-registration/src/LoginServicesButton.tsx +++ b/packages/web-ui-registration/src/LoginServicesButton.tsx @@ -8,8 +8,6 @@ import { useTranslation } from 'react-i18next'; import type { LoginErrorState, LoginErrors } from './LoginForm'; -const servicesSupportedByMeteor = ['saml', 'cas', 'ldap']; - const LoginServicesButton = ({ buttonLabelText, icon, @@ -30,28 +28,13 @@ const LoginServicesButton = ({ const handler = useLoginWithService({ service, buttonLabelText, ...props }); const handleOnClick = useCallback(() => { - if (!servicesSupportedByMeteor.includes(service)) { - const url = new URL(window.location.href); - const queryParams = url.searchParams; - const loginClient = queryParams.get('loginClient'); - - const redirectUrl = new URL(`/oauth/${service}`, window.location.origin); - - if (loginClient) { - redirectUrl.searchParams.set('loginClient', loginClient); - } - - window.location.href = redirectUrl.toString(); - return; - } - handler().catch((e: { error?: LoginErrors; reason?: string }) => { if (!e.error || typeof e.error !== 'string') { return; } setError?.([e.error, e.reason]); }); - }, [handler, setError, service]); + }, [handler, setError]); return (