From e6a98a62c85909a42d19c02abc699590623142f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 May 2026 22:15:56 +0000 Subject: [PATCH 1/2] build(deps): bump matrix-js-sdk from 24.1.0 to 41.6.0 Bumps [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk) from 24.1.0 to 41.6.0. - [Release notes](https://github.com/matrix-org/matrix-js-sdk/releases) - [Changelog](https://github.com/matrix-org/matrix-js-sdk/blob/develop/CHANGELOG.md) - [Commits](https://github.com/matrix-org/matrix-js-sdk/compare/v24.1.0...v41.6.0) --- updated-dependencies: - dependency-name: matrix-js-sdk dependency-version: 41.4.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 225 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 119 insertions(+), 108 deletions(-) diff --git a/package-lock.json b/package-lock.json index 95a6229f..3eb8cdcb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "express": "^5.2.1", "kafkajs": "^2.2.4", "knex": "^3.2.4", - "matrix-js-sdk": "24.1.0", + "matrix-js-sdk": "41.6.0", "pg": "^8.20.0", "prom-client": "^15.1.3", "reflect-metadata": "^0.2.2", @@ -1516,13 +1516,13 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@matrix-org/matrix-sdk-crypto-js": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-js/-/matrix-sdk-crypto-js-0.1.4.tgz", - "integrity": "sha512-OxG84iSeR89zYLFeb+DCaFtZT+DDiIu+kTkqY8OYfhE5vpGLFX2sDVBRrAdos1IUqEoboDloDBR9+yU7hNRyog==", + "node_modules/@matrix-org/matrix-sdk-crypto-wasm": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-18.3.0.tgz", + "integrity": "sha512-9a4feyt8QLysARu7PHKaRWT+wcCd+IYH074LXp9QK5WqfN4zUXueRhiSSMNT18Bm+8q3sBR/4zxDxOSDR0M8Kg==", "license": "Apache-2.0", "engines": { - "node": ">= 10" + "node": ">= 18" } }, "node_modules/@napi-rs/wasm-runtime": { @@ -1847,12 +1847,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" - }, "node_modules/@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", @@ -3219,9 +3213,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT" }, "node_modules/baseline-browser-mapping": { @@ -3365,12 +3359,12 @@ } }, "node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "dependencies": { - "base-x": "^4.0.0" + "base-x": "^5.0.0" } }, "node_modules/bser": { @@ -5964,6 +5958,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-network-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7035,6 +7041,15 @@ "node": ">=6" } }, + "node_modules/jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/kafkajs": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", @@ -7449,26 +7464,27 @@ "integrity": "sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==" }, "node_modules/matrix-js-sdk": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-24.1.0.tgz", - "integrity": "sha512-xEx2ZoNsS56dwgqLJ3rIv2SUpFxdQLrLKmJCpMatMUKCAg+NGuZfpQ3QXblIbGaqFNQZCH7fC7S48AeTMZp1Jw==", + "version": "41.6.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-41.6.0.tgz", + "integrity": "sha512-FOEQBE9i3I+yRymMzKdDO5ptonawqrbtwxSqlkkpqaiFRnsA5zplaPZozdukt+IjBTuE2KceFY+bjFXiNi/+Eg==", "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.12.5", - "@matrix-org/matrix-sdk-crypto-js": "^0.1.0-alpha.5", + "@matrix-org/matrix-sdk-crypto-wasm": "^18.2.0", "another-json": "^0.2.0", - "bs58": "^5.0.0", + "bs58": "^6.0.0", "content-type": "^1.0.4", - "loglevel": "^1.7.1", + "jwt-decode": "^4.0.0", + "loglevel": "^1.9.2", "matrix-events-sdk": "0.0.1", - "matrix-widget-api": "^1.3.1", - "p-retry": "4", - "sdp-transform": "^2.14.1", - "unhomoglyph": "^1.0.6", - "uuid": "9" + "matrix-widget-api": "^1.16.1", + "oidc-client-ts": "^3.0.1", + "p-retry": "8", + "sdp-transform": "^3.0.0", + "unhomoglyph": "^1.0.6" }, "engines": { - "node": ">=16.0.0" + "node": ">=22.0.0" } }, "node_modules/matrix-widget-api": { @@ -7761,6 +7777,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/oidc-client-ts": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.5.0.tgz", + "integrity": "sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A==", + "license": "Apache-2.0", + "dependencies": { + "jwt-decode": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -7872,16 +7900,18 @@ } }, "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", + "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", "license": "MIT", "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "is-network-error": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">=22" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -8621,15 +8651,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", @@ -8766,9 +8787,9 @@ "license": "MIT" }, "node_modules/sdp-transform": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.15.0.tgz", - "integrity": "sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-3.0.0.tgz", + "integrity": "sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ==", "license": "MIT", "bin": { "sdp-verify": "checker.js" @@ -10148,19 +10169,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", @@ -11734,10 +11742,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "@matrix-org/matrix-sdk-crypto-js": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-js/-/matrix-sdk-crypto-js-0.1.4.tgz", - "integrity": "sha512-OxG84iSeR89zYLFeb+DCaFtZT+DDiIu+kTkqY8OYfhE5vpGLFX2sDVBRrAdos1IUqEoboDloDBR9+yU7hNRyog==" + "@matrix-org/matrix-sdk-crypto-wasm": { + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@matrix-org/matrix-sdk-crypto-wasm/-/matrix-sdk-crypto-wasm-18.3.0.tgz", + "integrity": "sha512-9a4feyt8QLysARu7PHKaRWT+wcCd+IYH074LXp9QK5WqfN4zUXueRhiSSMNT18Bm+8q3sBR/4zxDxOSDR0M8Kg==" }, "@napi-rs/wasm-runtime": { "version": "0.2.12", @@ -12023,11 +12031,6 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, - "@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==" - }, "@types/send": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", @@ -12863,9 +12866,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", + "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==" }, "baseline-browser-mapping": { "version": "2.10.9", @@ -12954,11 +12957,11 @@ } }, "bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "requires": { - "base-x": "^4.0.0" + "base-x": "^5.0.0" } }, "bser": { @@ -14638,6 +14641,11 @@ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, + "is-network-error": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", + "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -15382,6 +15390,11 @@ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, + "jwt-decode": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", + "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==" + }, "kafkajs": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/kafkajs/-/kafkajs-2.2.4.tgz", @@ -15650,22 +15663,23 @@ "integrity": "sha512-1QEOsXO+bhyCroIe2/A5OwaxHvBm7EsSQ46DEDn8RBIfQwN5HWBpFvyWWR4QY0KHPPnnJdI99wgRiAl7Ad5qaA==" }, "matrix-js-sdk": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-24.1.0.tgz", - "integrity": "sha512-xEx2ZoNsS56dwgqLJ3rIv2SUpFxdQLrLKmJCpMatMUKCAg+NGuZfpQ3QXblIbGaqFNQZCH7fC7S48AeTMZp1Jw==", + "version": "41.6.0", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-41.6.0.tgz", + "integrity": "sha512-FOEQBE9i3I+yRymMzKdDO5ptonawqrbtwxSqlkkpqaiFRnsA5zplaPZozdukt+IjBTuE2KceFY+bjFXiNi/+Eg==", "requires": { "@babel/runtime": "^7.12.5", - "@matrix-org/matrix-sdk-crypto-js": "^0.1.0-alpha.5", + "@matrix-org/matrix-sdk-crypto-wasm": "^18.2.0", "another-json": "^0.2.0", - "bs58": "^5.0.0", + "bs58": "^6.0.0", "content-type": "^1.0.4", - "loglevel": "^1.7.1", + "jwt-decode": "^4.0.0", + "loglevel": "^1.9.2", "matrix-events-sdk": "0.0.1", - "matrix-widget-api": "^1.3.1", - "p-retry": "4", - "sdp-transform": "^2.14.1", - "unhomoglyph": "^1.0.6", - "uuid": "9" + "matrix-widget-api": "^1.16.1", + "oidc-client-ts": "^3.0.1", + "p-retry": "8", + "sdp-transform": "^3.0.0", + "unhomoglyph": "^1.0.6" } }, "matrix-widget-api": { @@ -15856,6 +15870,14 @@ "es-object-atoms": "^1.0.0" } }, + "oidc-client-ts": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/oidc-client-ts/-/oidc-client-ts-3.5.0.tgz", + "integrity": "sha512-l2q8l9CTCTOlbX+AnK4p3M+4CEpKpyQhle6blQkdFhm0IsBqsxm15bYaSa11G7pWdsYr6epdsRZxJpCyCRbT8A==", + "requires": { + "jwt-decode": "^4.0.0" + } + }, "on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -15933,12 +15955,11 @@ } }, "p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", + "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", "requires": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" + "is-network-error": "^1.3.0" } }, "p-try": { @@ -16433,11 +16454,6 @@ } } }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - }, "rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", @@ -16537,9 +16553,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sdp-transform": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-2.15.0.tgz", - "integrity": "sha512-KrOH82c/W+GYQ0LHqtr3caRpM3ITglq3ljGUIb8LTki7ByacJZ9z+piSGiwZDsRyhQbYBOBJgr2k6X4BZXi3Kw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/sdp-transform/-/sdp-transform-3.0.0.tgz", + "integrity": "sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ==" }, "semver": { "version": "7.7.4", @@ -17428,11 +17444,6 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==" - }, "v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", diff --git a/package.json b/package.json index 91b98028..57c428fa 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "express": "^5.2.1", "kafkajs": "^2.2.4", "knex": "^3.2.4", - "matrix-js-sdk": "24.1.0", + "matrix-js-sdk": "41.6.0", "pg": "^8.20.0", "prom-client": "^15.1.3", "reflect-metadata": "^0.2.2", From 61e849b06978dfa24371f6222bdcaed0e3b01e8c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 29 May 2026 08:37:04 +0000 Subject: [PATCH 2/2] fix: resolve CI failures after matrix-js-sdk bump --- src/services/synapse/SynapseService.spec.ts | 15 +-- src/services/synapse/SynapseService.ts | 102 ++++++++++++-------- src/services/synapse/matrixSdk.ts | 1 + tsconfig.json | 1 + 4 files changed, 70 insertions(+), 49 deletions(-) create mode 100644 src/services/synapse/matrixSdk.ts diff --git a/src/services/synapse/SynapseService.spec.ts b/src/services/synapse/SynapseService.spec.ts index a4701d58..867e8205 100644 --- a/src/services/synapse/SynapseService.spec.ts +++ b/src/services/synapse/SynapseService.spec.ts @@ -1,16 +1,15 @@ jest.mock('@user-office-software/duo-logger'); -jest.mock('matrix-js-sdk', () => ({ - ...jest.requireActual('matrix-js-sdk'), - createClient: jest.fn(), -})); jest.mock('./produceSynapseUserId', () => ({ produceSynapseUserId: jest.fn(), })); +jest.mock('./matrixSdk', () => ({ + loadMatrixSdk: jest.fn(), +})); import { logger } from '@user-office-software/duo-logger'; import { AxiosError } from 'axios'; -import { createClient } from 'matrix-js-sdk'; +import { loadMatrixSdk } from './matrixSdk'; import { produceSynapseUserId } from './produceSynapseUserId'; import { SynapseService } from './SynapseService'; @@ -64,7 +63,9 @@ describe('SynapseService', () => { beforeEach(() => { jest.resetAllMocks(); - (createClient as jest.Mock).mockReturnValue(mockCreateClient); + (loadMatrixSdk as jest.Mock).mockResolvedValue({ + createClient: jest.fn().mockReturnValue(mockCreateClient), + }); mockLoggerLogError = jest.spyOn(logger, 'logError'); mockLoggerLogInfo = jest.spyOn(logger, 'logInfo'); process.env.SYNAPSE_SERVICE_USER = 'serviceUser'; @@ -139,7 +140,7 @@ describe('SynapseService', () => { const removeUserFromRoomSpy = jest .spyOn(synapseService, 'removeUserFromRoom') - .mockResolvedValueOnce(); + .mockResolvedValueOnce(undefined); (produceSynapseUserId as jest.Mock) .mockResolvedValueOnce(member.oidcSub) diff --git a/src/services/synapse/SynapseService.ts b/src/services/synapse/SynapseService.ts index 9bee5e8e..f6309484 100644 --- a/src/services/synapse/SynapseService.ts +++ b/src/services/synapse/SynapseService.ts @@ -1,15 +1,12 @@ import { logger } from '@user-office-software/duo-logger'; -import { +import type { MatrixClient, Method, - User, - Visibility, - createClient, - EventType, - MsgType, RoomMember, -} from 'matrix-js-sdk'; + User, +} from 'matrix-js-sdk' with { 'resolution-mode': 'import' }; +import { loadMatrixSdk } from './matrixSdk'; import { produceSynapseUserId } from './produceSynapseUserId'; import { axiosFetch } from '../../config/utils'; import { @@ -40,7 +37,7 @@ const ADMIN_API_PREFIX_V1 = '/_synapse/admin/v1'; const CLIENT_API_PREFIX_V1 = '/_matrix/client/api/v1'; export class SynapseService { - private client: MatrixClient; + private readonly client: Promise; constructor() { if (!serverUrl) throw new Error('SYNAPSE_SERVER_NAME is not set'); if (!serverName) throw new Error('SYNAPSE_SERVER_NAME is not set'); @@ -50,10 +47,12 @@ export class SynapseService { if (!serviceAccount.password) throw new Error('SYNAPSE_SERVICE_PASSWORD is not set'); - this.client = createClient({ - baseUrl: serverUrl, - fetchFn: axiosFetch, - }); + this.client = loadMatrixSdk().then(({ createClient }) => + createClient({ + baseUrl: serverUrl, + fetchFn: axiosFetch, + }) + ); // TODO, If consumer service is started after downtime, and there are some pending messages in the queue // then it could be that queue handler will delegate handling of messages before connection to supabase is established } @@ -65,7 +64,8 @@ export class SynapseService { throw new Error('SYNAPSE_SERVICE_PASSWORD is not set'); try { - await this.client.loginWithPassword( + const client = await this.client; + await client.loginWithPassword( serviceAccount.userId, serviceAccount.password ); @@ -79,7 +79,8 @@ export class SynapseService { async logout() { try { - await this.client.logout(); + const client = await this.client; + await client.logout(); } catch (error) { logger.logError('Failed to logout from Synapse', { error }); throw error; @@ -87,18 +88,19 @@ export class SynapseService { } async createRoom(name: string, topic: string, members: ProposalUser[]) { + const client = await this.client; const membersList = await Promise.all( members.map(async (member) => await produceSynapseUserId(member, this)) ); - const room = await this.client.http + const room = await client.http .authedRequest( - Method.Post, + 'POST' as Method, '/createRoom', undefined, { name: name, topic: topic, - visibility: Visibility.Private, + visibility: 'private', invite: membersList, }, { prefix: CLIENT_API_PREFIX_V1 } @@ -117,9 +119,10 @@ export class SynapseService { } async sendMessage(roomName: string, message: string) { + const client = await this.client; const messageContent = { body: message, - msgtype: MsgType.Text, + msgtype: 'm.text', }; /** * Send messages to sciChat @@ -131,7 +134,7 @@ export class SynapseService { const roomId = await this.getRoomIdByName(roomName); - const members = await this.client + const members = await client .getJoinedRoomMembers(roomId) .then((members) => members.joined); @@ -148,8 +151,8 @@ export class SynapseService { await this.joinRoom(roomId); } - await this.client - .sendEvent(roomId, EventType.RoomMessage, messageContent, '') + await client + .sendEvent(roomId, 'm.room.message', messageContent as any, '') .catch((reason) => { logger.logError('Failed sending message to chatroom', { roomId: roomId, @@ -161,14 +164,15 @@ export class SynapseService { } async invite(roomId: string, members: ProposalUser[]) { + const client = await this.client; const invitedUsers: { userId: string; invited: boolean }[] = []; const usersToBeRemoved = await this.getRoomMembers(roomId); for (const member of members) { const userId = await produceSynapseUserId(member, this); - await this.client.http + await client.http .authedRequest( - Method.Post, + 'POST' as Method, `/join/${roomId}`, undefined, { user_id: userId }, @@ -201,10 +205,17 @@ export class SynapseService { } async getRoomByName(name: string) { - const result = await this.client.http - .authedRequest(Method.Get, '/rooms', { search_term: name }, undefined, { - prefix: ADMIN_API_PREFIX_V1, - }) + const client = await this.client; + const result = await client.http + .authedRequest( + 'GET' as Method, + '/rooms', + { search_term: name }, + undefined, + { + prefix: ADMIN_API_PREFIX_V1, + } + ) .catch((reason) => { logger.logError('Failed to get room by name', { reason, name }); throw reason; @@ -215,9 +226,10 @@ export class SynapseService { return response.rooms; } async getUserByOidcSub(oidcSub: string) { - const result = await this.client.http + const client = await this.client; + const result = await client.http .authedRequest( - Method.Get, + 'GET' as Method, `/auth_providers/${oauthIssuer}/users/${oidcSub}`, {}, undefined, @@ -240,9 +252,10 @@ export class SynapseService { async getUserByEmail(email: string) { const lowerCaseEmail = email.toLowerCase(); - const result = await this.client.http + const client = await this.client; + const result = await client.http .authedRequest( - Method.Get, + 'GET' as Method, `/threepid/${thirdPartyId}/users/${lowerCaseEmail}`, {}, undefined, @@ -264,12 +277,13 @@ export class SynapseService { } async getRoomMembers(roomId: string): Promise> { + const client = await this.client; // Get all joined room members except service account const serviceAccountSynapseId = `@${serviceAccount.userId}:${serverName}`; - const joinedRoomMembers = await this.client.http + const joinedRoomMembers = await client.http .authedRequest<{ joined: Record }>( - Method.Get, + 'GET' as Method, `/rooms/${roomId}/joined_members`, {}, undefined, @@ -294,9 +308,9 @@ export class SynapseService { } async removeUserFromRoom(roomId: string, userId: string) { - return this.client.http + return (await this.client).http .authedRequest( - Method.Post, + 'POST' as Method, `/rooms/${roomId}/kick`, {}, { user_id: userId }, @@ -318,9 +332,10 @@ export class SynapseService { } async getUserInfo(userId: string) { - const result = await this.client.http + const client = await this.client; + const result = await client.http .authedRequest( - Method.Get, + 'GET' as Method, `/users/${userId}`, {}, undefined, @@ -352,7 +367,8 @@ export class SynapseService { async joinRoom(roomName: string) { const roomId = await this.getRoomIdByName(roomName); try { - await this.client.joinRoom(roomId); + const client = await this.client; + await client.joinRoom(roomId); logger.logInfo('Joined room', { roomId }); } catch (reason) { logger.logError('Failed to join room', { reason, roomId }); @@ -362,9 +378,10 @@ export class SynapseService { async updateUser(member: ProposalUser): Promise { const userid = await produceSynapseUserId(member, this); - const result = await this.client.http + const client = await this.client; + const result = await client.http .authedRequest( - Method.Put, + 'PUT' as Method, `/users/${userid}`, undefined, { @@ -406,9 +423,10 @@ export class SynapseService { async createUser(member: ProposalUser, password: string) { const userid = await produceSynapseUserId(member, this); - const result = await this.client.http + const client = await this.client; + const result = await client.http .authedRequest( - Method.Put, + 'PUT' as Method, `/users/${userid}`, undefined, { diff --git a/src/services/synapse/matrixSdk.ts b/src/services/synapse/matrixSdk.ts new file mode 100644 index 00000000..9ed77c2e --- /dev/null +++ b/src/services/synapse/matrixSdk.ts @@ -0,0 +1 @@ +export const loadMatrixSdk = async () => import('matrix-js-sdk'); diff --git a/tsconfig.json b/tsconfig.json index 017c1010..2955a812 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,6 +7,7 @@ "es2019", "es2016", "es2020", + "es2021", "dom", "esnext.asynciterable" ] /* Specify library files to be included in the compilation. */,