From fadc37a49c23046a353dc52aa13e6c35d4d31740 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 17:00:40 +0200 Subject: [PATCH 01/10] build(deps-dev): bump ts-jest from 29.4.1 to 29.4.4 in /backend (#8912) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/package.json | 2 +- backend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index e66199198..dd4c413a4 100644 --- a/backend/package.json +++ b/backend/package.json @@ -122,7 +122,7 @@ "prettier": "^3.6.2", "require-json5": "^1.3.0", "rosie": "^2.1.1", - "ts-jest": "^29.4.1", + "ts-jest": "^29.4.4", "ts-node": "^10.9.2", "tsc-alias": "^1.8.16", "tsconfig-paths": "^4.2.0", diff --git a/backend/yarn.lock b/backend/yarn.lock index 32d8c5956..970222919 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -10955,10 +10955,10 @@ ts-invariant@^0.4.0: dependencies: tslib "^1.9.3" -ts-jest@^29.4.1: - version "29.4.1" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.1.tgz#42d33beb74657751d315efb9a871fe99e3b9b519" - integrity sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw== +ts-jest@^29.4.4: + version "29.4.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.4.tgz#fc6fefe28652ed81b8e1381ef8391901d9f81417" + integrity sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw== dependencies: bs-logger "^0.2.6" fast-json-stable-stringify "^2.1.0" From f7dc901c2a6dceca67ad75c240a28f1e86eac49e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 15:18:44 +0000 Subject: [PATCH 02/10] build(deps): bump metascraper from 5.49.2 to 5.49.4 in /backend in the metascraper group (#8911) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/package.json | 2 +- backend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index dd4c413a4..f7a68f5f2 100644 --- a/backend/package.json +++ b/backend/package.json @@ -57,7 +57,7 @@ "linkifyjs": "^4.3.2", "lodash": "~4.17.21", "merge-graphql-schemas": "^1.7.8", - "metascraper": "^5.49.2", + "metascraper": "^5.49.4", "metascraper-author": "^5.49.2", "metascraper-date": "^5.49.2", "metascraper-description": "^5.49.2", diff --git a/backend/yarn.lock b/backend/yarn.lock index 970222919..0b3f6ec58 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -8560,10 +8560,10 @@ metascraper-youtube@^5.49.2: p-locate "~5.0.0" reachable-url "~1.8.2" -metascraper@^5.49.2: - version "5.49.2" - resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.49.2.tgz#9b0b43c933b45cc13139e5f80a4a4583d1cc1cdc" - integrity sha512-WT7+rz4q5s6Gi3ElQuTefnka22KviFIZfXgYz9P6f4FQmOydznSbuenkr7gsXyCPFdDtoO+aA2nClH94r8C+9g== +metascraper@^5.49.4: + version "5.49.4" + resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.49.4.tgz#7a0056cbe10d3de2f07f68b3d10f2726d64d1e38" + integrity sha512-ZDvntIsErYMOETK8dYaaIcqCBF/KvhPSQQBD+4Eqe1b6dqZAhk++iqCQyLJi68yEmhvzORryNoIAb7HiHg0Nig== dependencies: "@metascraper/helpers" "5.49.2" cheerio "~1.1.2" From 768d80f2a17d011eb1d1bedfe14d568d7b21907c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 19:01:29 +0000 Subject: [PATCH 03/10] build(deps): bump peter-evans/repository-dispatch from 7279ea08e172078316f128ed1118df40d2904f0f to de78ac1a711fc6f29e77338f843065faf5335227 (#8909) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/publish.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f4a3db7b1..c19bedaa3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -64,7 +64,7 @@ jobs: echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV - run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV #- name: Repository Dispatch - # uses: peter-evans/repository-dispatch@7279ea08e172078316f128ed1118df40d2904f0f # v3.0.0 + # uses: peter-evans/repository-dispatch@de78ac1a711fc6f29e77338f843065faf5335227 # v3.0.0 # with: # token: ${{ github.token }} # event-type: trigger-ocelot-build-success @@ -72,7 +72,7 @@ jobs: # client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "VERSION": "${VERSION}", "BUILD_DATE": "${BUILD_DATE}", "BUILD_COMMIT": "${BUILD_COMMIT}", "BUILD_VERSION": "${BUILD_VERSION}"}' - name: Repository Dispatch stage.ocelot.social - uses: peter-evans/repository-dispatch@7279ea08e172078316f128ed1118df40d2904f0f # v3.0.0 + uses: peter-evans/repository-dispatch@de78ac1a711fc6f29e77338f843065faf5335227 # v3.0.0 with: token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository event-type: trigger-ocelot-build-success @@ -80,7 +80,7 @@ jobs: client-payload: '{"ref": "${{ github.ref }}", "sha": "${{ github.sha }}", "GITHUB_RUN_NUMBER": "${{ env.GITHUB_RUN_NUMBER }}", "VERSION": "${VERSION}", "BUILD_DATE": "${BUILD_DATE}", "BUILD_COMMIT": "${BUILD_COMMIT}", "BUILD_VERSION": "${BUILD_VERSION}"}' - name: Repository Dispatch stage.yunite.me - uses: peter-evans/repository-dispatch@7279ea08e172078316f128ed1118df40d2904f0f # v3.0.0 + uses: peter-evans/repository-dispatch@de78ac1a711fc6f29e77338f843065faf5335227 # v3.0.0 with: token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository event-type: trigger-ocelot-build-success From 35c3dd3bbca92735fabe1be91caf08cb2c039539 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 Sep 2025 20:23:30 +0000 Subject: [PATCH 04/10] build(deps-dev): bump the cypress group across 1 directory with 2 updates (#8925) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 75 ++++++++++++++++++++++++++--------------------- package.json | 4 +-- yarn.lock | 57 ++++++++++++++++++++--------------- 3 files changed, 77 insertions(+), 59 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa4190150..7ab3df652 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,25 +1,25 @@ { "name": "ocelot-social", - "version": "3.12.1", + "version": "3.12.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ocelot-social", - "version": "3.12.1", + "version": "3.12.2", "license": "MIT", "devDependencies": { "@babel/core": "^7.28.4", "@babel/preset-env": "^7.28.3", "@babel/register": "^7.28.3", - "@badeball/cypress-cucumber-preprocessor": "^23.1.0", + "@badeball/cypress-cucumber-preprocessor": "^23.2.0", "@cucumber/cucumber": "12.2.0", "@cypress/browserify-preprocessor": "^3.0.2", "@faker-js/faker": "9.9.0", "auto-changelog": "^2.5.0", "bcryptjs": "^3.0.2", "cross-env": "^10.0.0", - "cypress": "^15.2.0", + "cypress": "^15.3.0", "cypress-network-idle": "^1.15.0", "date-fns": "^3.6.0", "dotenv": "^17.2.2", @@ -1843,9 +1843,9 @@ } }, "node_modules/@badeball/cypress-cucumber-preprocessor": { - "version": "23.1.0", - "resolved": "https://registry.npmjs.org/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.1.0.tgz", - "integrity": "sha512-oIrmj7fs7+DS/6WBQEmzlBdyPAQeuiXyCisHgDnGRpE6nGntkIdRUnj75YvLhubPYiy0TNeMJvKZW6prSnSA4A==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.2.0.tgz", + "integrity": "sha512-9FK6m2oI5AwozPcRIe6Clz4+lZkQZkiev5YsidcLIg7lO9AWC0Uv0OeB60ioGOiwBKTq4YUbgWGKsoDsLKH5SA==", "dev": true, "funding": [ { @@ -1859,10 +1859,10 @@ "@cucumber/ci-environment": "^10.0.1", "@cucumber/cucumber": "^12.0.0", "@cucumber/cucumber-expressions": "^18.0.0", - "@cucumber/gherkin": "^34.0.0", + "@cucumber/gherkin": "^35.0.0", "@cucumber/html-formatter": "^21.7.0", "@cucumber/message-streams": "^4.0.1", - "@cucumber/messages": "^28.0.0", + "@cucumber/messages": "^29.0.0", "@cucumber/pretty-formatter": "^1.0.1", "@cucumber/tag-expressions": "^6.1.0", "base64-js": "^1.5.1", @@ -1892,6 +1892,27 @@ "cypress": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0" } }, + "node_modules/@badeball/cypress-cucumber-preprocessor/node_modules/@cucumber/gherkin": { + "version": "35.1.0", + "resolved": "https://registry.npmjs.org/@cucumber/gherkin/-/gherkin-35.1.0.tgz", + "integrity": "sha512-JtQZLlhclejUb1lmnztMBin2Qu5lvSuet9dCl/nizrP8Icr8ywZk6PaDfcFXwS5iNQAKV+wH9FLsPxhhxME0sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@cucumber/messages": ">=19.1.4 <30" + } + }, + "node_modules/@badeball/cypress-cucumber-preprocessor/node_modules/@cucumber/messages": { + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/@cucumber/messages/-/messages-29.0.1.tgz", + "integrity": "sha512-aAvIYfQD6/aBdF8KFQChC3CQ1Q+GX9orlR6GurGiX6oqaCnBkxA4WU3OQUVepDynEFrPayerqKRFcAMhdcXReQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "class-transformer": "0.5.1", + "reflect-metadata": "0.2.2" + } + }, "node_modules/@badeball/cypress-cucumber-preprocessor/node_modules/glob": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", @@ -4392,6 +4413,13 @@ "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", "dev": true }, + "node_modules/@types/tmp": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", + "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/trusted-types": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", @@ -7154,15 +7182,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/cheerio-select": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", @@ -7782,9 +7801,9 @@ "optional": true }, "node_modules/cypress": { - "version": "15.2.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.2.0.tgz", - "integrity": "sha512-J4ehSzOSb58SkXyldCe9y/oZ8ep8Bl6+q9kDUjnkqNqc2ZKzDq5KSbhIc2lHFAFR5Jtj10oNqr9JRAZbr8DA8A==", + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.3.0.tgz", + "integrity": "sha512-g9rDhoK9y8wW4Vx3Ppr8dtfvThXxPL3mJsV5e98fG+6EerrhXKmeRT2sL86cvNRtEZouXJfsuVL1lqiMuGNGcg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7793,13 +7812,13 @@ "@cypress/xvfb": "^1.2.4", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", + "@types/tmp": "^0.2.3", "arch": "^2.2.0", "blob-util": "^2.0.2", "bluebird": "^3.7.2", "buffer": "^5.7.1", "cachedir": "^2.3.0", "chalk": "^4.1.0", - "check-more-types": "^2.24.0", "ci-info": "^4.1.0", "cli-cursor": "^3.1.0", "cli-table3": "0.6.1", @@ -7816,7 +7835,6 @@ "fs-extra": "^9.1.0", "hasha": "5.2.2", "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", @@ -7838,7 +7856,7 @@ "cypress": "bin/cypress" }, "engines": { - "node": "^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^20.1.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/cypress-network-idle": { @@ -11043,15 +11061,6 @@ "stream-splicer": "^2.0.0" } }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, - "engines": { - "node": "> 0.8" - } - }, "node_modules/lilconfig": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", diff --git a/package.json b/package.json index 209fc5bfc..8e8f12763 100644 --- a/package.json +++ b/package.json @@ -36,14 +36,14 @@ "@babel/core": "^7.28.4", "@babel/preset-env": "^7.28.3", "@babel/register": "^7.28.3", - "@badeball/cypress-cucumber-preprocessor": "^23.1.0", + "@badeball/cypress-cucumber-preprocessor": "^23.2.0", "@cucumber/cucumber": "12.2.0", "@cypress/browserify-preprocessor": "^3.0.2", "@faker-js/faker": "9.9.0", "auto-changelog": "^2.5.0", "bcryptjs": "^3.0.2", "cross-env": "^10.0.0", - "cypress": "^15.2.0", + "cypress": "^15.3.0", "cypress-network-idle": "^1.15.0", "date-fns": "^3.6.0", "dotenv": "^17.2.2", diff --git a/yarn.lock b/yarn.lock index d7db4ee54..f4dddd335 100644 --- a/yarn.lock +++ b/yarn.lock @@ -962,18 +962,18 @@ "@babel/helper-string-parser" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1" -"@badeball/cypress-cucumber-preprocessor@^23.1.0": - version "23.1.0" - resolved "https://registry.yarnpkg.com/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.1.0.tgz#50fabbcf09ed6e613cf7127866d7ad735cbef0b6" - integrity sha512-oIrmj7fs7+DS/6WBQEmzlBdyPAQeuiXyCisHgDnGRpE6nGntkIdRUnj75YvLhubPYiy0TNeMJvKZW6prSnSA4A== +"@badeball/cypress-cucumber-preprocessor@^23.2.0": + version "23.2.0" + resolved "https://registry.yarnpkg.com/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.2.0.tgz#6087d0ff11e81904eabb87802f2af7c3446308f6" + integrity sha512-9FK6m2oI5AwozPcRIe6Clz4+lZkQZkiev5YsidcLIg7lO9AWC0Uv0OeB60ioGOiwBKTq4YUbgWGKsoDsLKH5SA== dependencies: "@cucumber/ci-environment" "^10.0.1" "@cucumber/cucumber" "^12.0.0" "@cucumber/cucumber-expressions" "^18.0.0" - "@cucumber/gherkin" "^34.0.0" + "@cucumber/gherkin" "^35.0.0" "@cucumber/html-formatter" "^21.7.0" "@cucumber/message-streams" "^4.0.1" - "@cucumber/messages" "^28.0.0" + "@cucumber/messages" "^29.0.0" "@cucumber/pretty-formatter" "^1.0.1" "@cucumber/tag-expressions" "^6.1.0" base64-js "^1.5.1" @@ -1073,7 +1073,7 @@ commander "13.1.0" source-map-support "^0.5.21" -"@cucumber/gherkin@34.0.0", "@cucumber/gherkin@^34.0.0": +"@cucumber/gherkin@34.0.0": version "34.0.0" resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-34.0.0.tgz#891ec27a7c09a9fc3695aaf3c3a3c8a1c594102f" integrity sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA== @@ -1087,6 +1087,13 @@ dependencies: "@cucumber/messages" ">=19.1.4 <=26" +"@cucumber/gherkin@^35.0.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-35.1.0.tgz#f0bc77a6e4d44a02b7ac5530f98480a58c697712" + integrity sha512-JtQZLlhclejUb1lmnztMBin2Qu5lvSuet9dCl/nizrP8Icr8ywZk6PaDfcFXwS5iNQAKV+wH9FLsPxhhxME0sQ== + dependencies: + "@cucumber/messages" ">=19.1.4 <30" + "@cucumber/html-formatter@21.14.0", "@cucumber/html-formatter@^21.7.0": version "21.14.0" resolved "https://registry.yarnpkg.com/@cucumber/html-formatter/-/html-formatter-21.14.0.tgz#beb29b66892189f8e242243aa8b807f7b9dc1c6c" @@ -1107,7 +1114,7 @@ resolved "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz" integrity sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA== -"@cucumber/messages@28.1.0", "@cucumber/messages@>=19.1.4 <29", "@cucumber/messages@^28.0.0": +"@cucumber/messages@28.1.0", "@cucumber/messages@>=19.1.4 <29": version "28.1.0" resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-28.1.0.tgz#5fdcfc3f9b30103cb45c69044ebe9a892bec38ce" integrity sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA== @@ -1117,6 +1124,14 @@ reflect-metadata "0.2.2" uuid "11.1.0" +"@cucumber/messages@>=19.1.4 <30", "@cucumber/messages@^29.0.0": + version "29.0.1" + resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-29.0.1.tgz#68de23447af07123aca97008f20b885a4106f5b2" + integrity sha512-aAvIYfQD6/aBdF8KFQChC3CQ1Q+GX9orlR6GurGiX6oqaCnBkxA4WU3OQUVepDynEFrPayerqKRFcAMhdcXReQ== + dependencies: + class-transformer "0.5.1" + reflect-metadata "0.2.2" + "@cucumber/messages@>=19.1.4 <=26": version "22.0.0" resolved "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz" @@ -2125,6 +2140,11 @@ resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz" integrity sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw== +"@types/tmp@^0.2.3": + version "0.2.6" + resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.2.6.tgz#d785ee90c52d7cc020e249c948c36f7b32d1e217" + integrity sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA== + "@types/trusted-types@^2.0.2": version "2.0.7" resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" @@ -3442,11 +3462,6 @@ character-entities-legacy@^3.0.0: resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== -check-more-types@^2.24.0: - version "2.24.0" - resolved "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz" - integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== - cheerio-select@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" @@ -3909,22 +3924,22 @@ cypress-network-idle@^1.15.0: resolved "https://registry.npmjs.org/cypress-network-idle/-/cypress-network-idle-1.15.0.tgz" integrity sha512-8zU16zhc7S3nMl1NTEEcNsZYlJy/ZzP2zPTTrngGxyXH32Ipake/xfHLZsgrzeWCieiS2AVhQsakhWqFzO3hpw== -cypress@^15.2.0: - version "15.2.0" - resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.2.0.tgz#a1b48c8ef00f520fbaea60261ed244c8382dd3bc" - integrity sha512-J4ehSzOSb58SkXyldCe9y/oZ8ep8Bl6+q9kDUjnkqNqc2ZKzDq5KSbhIc2lHFAFR5Jtj10oNqr9JRAZbr8DA8A== +cypress@^15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.3.0.tgz#cb9416e5261ee419c8a42e839d4f2d73eef8797c" + integrity sha512-g9rDhoK9y8wW4Vx3Ppr8dtfvThXxPL3mJsV5e98fG+6EerrhXKmeRT2sL86cvNRtEZouXJfsuVL1lqiMuGNGcg== dependencies: "@cypress/request" "^3.0.9" "@cypress/xvfb" "^1.2.4" "@types/sinonjs__fake-timers" "8.1.1" "@types/sizzle" "^2.3.2" + "@types/tmp" "^0.2.3" arch "^2.2.0" blob-util "^2.0.2" bluebird "^3.7.2" buffer "^5.7.1" cachedir "^2.3.0" chalk "^4.1.0" - check-more-types "^2.24.0" ci-info "^4.1.0" cli-cursor "^3.1.0" cli-table3 "0.6.1" @@ -3941,7 +3956,6 @@ cypress@^15.2.0: fs-extra "^9.1.0" hasha "5.2.2" is-installed-globally "~0.4.0" - lazy-ass "^1.6.0" listr2 "^3.8.3" lodash "^4.17.21" log-symbols "^4.0.0" @@ -5871,11 +5885,6 @@ labeled-stream-splicer@^2.0.0: inherits "^2.0.1" stream-splicer "^2.0.0" -lazy-ass@^1.6.0: - version "1.6.0" - resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz" - integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== - lazy-ass@^2.0.3: version "2.0.3" resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-2.0.3.tgz" From ced52e30db62b71cf0cd92f327b62b5199d377f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 10:46:45 +0200 Subject: [PATCH 05/10] build(deps): bump ioredis from 5.7.0 to 5.8.0 in /backend (#8931) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/package.json | 2 +- backend/yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/package.json b/backend/package.json index f7a68f5f2..d707e01ff 100644 --- a/backend/package.json +++ b/backend/package.json @@ -50,7 +50,7 @@ "graphql-tag": "~2.10.3", "graphql-upload": "^13.0.0", "helmet": "~8.1.0", - "ioredis": "^5.7.0", + "ioredis": "^5.8.0", "jsonwebtoken": "~8.5.1", "languagedetect": "^2.0.0", "linkify-html": "^4.3.2", diff --git a/backend/yarn.lock b/backend/yarn.lock index 0b3f6ec58..01f2a43bd 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -1326,10 +1326,10 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== -"@ioredis/commands@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.3.0.tgz#4dc3ae9bfa7146b63baf27672a61db0ea86e35e5" - integrity sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ== +"@ioredis/commands@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.4.0.tgz#9f657d51cdd5d2fdb8889592aa4a355546151f25" + integrity sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ== "@isaacs/balanced-match@^4.0.1": version "4.0.1" @@ -6972,12 +6972,12 @@ internal-slot@^1.1.0: hasown "^2.0.2" side-channel "^1.1.0" -ioredis@^5.3.2, ioredis@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.7.0.tgz#be8f4a09bfb67bfa84ead297ff625973a5dcefc3" - integrity sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g== +ioredis@^5.3.2, ioredis@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.8.0.tgz#a1c4ef6be2e274cc8e99c9e22794ef1ef06dc24a" + integrity sha512-AUXbKn9gvo9hHKvk6LbZJQSKn/qIfkWXrnsyL9Yrf+oeXmla9Nmf6XEumOddyhM8neynpK5oAV6r9r99KBuwzA== dependencies: - "@ioredis/commands" "^1.3.0" + "@ioredis/commands" "1.4.0" cluster-key-slot "^1.1.0" debug "^4.3.4" denque "^2.1.0" From 68030dc5ec351339025f8efbc134bcc45bab98d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 11:30:46 +0200 Subject: [PATCH 06/10] build(deps): bump @aws-sdk/lib-storage from 3.888.0 to 3.896.0 in /backend (#8929) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/package.json | 2 +- backend/yarn.lock | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/backend/package.json b/backend/package.json index d707e01ff..d9d241bd8 100644 --- a/backend/package.json +++ b/backend/package.json @@ -29,7 +29,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.896.0", - "@aws-sdk/lib-storage": "^3.888.0", + "@aws-sdk/lib-storage": "^3.896.0", "@sentry/node": "^5.30.0", "@types/mime-types": "^3.0.1", "apollo-server": "~2.14.2", diff --git a/backend/yarn.lock b/backend/yarn.lock index 01f2a43bd..173168e5c 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -361,14 +361,14 @@ "@smithy/types" "^4.5.0" tslib "^2.6.2" -"@aws-sdk/lib-storage@^3.888.0": - version "3.888.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.888.0.tgz#d39ee4403282784fc0eea032661f3f657a402326" - integrity sha512-UCZsVxjnQ6QpVWI1ZiNGmxfd1+8YBNbriQJ5lssR2IudQt5ThGhamGkwoYBmFV4iwhmgIT2fn5+gErugFZuUhw== +"@aws-sdk/lib-storage@^3.896.0": + version "3.896.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.896.0.tgz#c65350f32867c1e2783dde2f7a1d4b85b5922104" + integrity sha512-EJWXL/5LxBJFujsOud3+EfRbIwy/SZiWy5ld70RdoqLS/RsfZh9+mZMJGvd3hewy7xHgDYVbxZfDh14bsvfYIQ== dependencies: - "@smithy/abort-controller" "^4.0.5" - "@smithy/middleware-endpoint" "^4.2.1" - "@smithy/smithy-client" "^4.6.1" + "@smithy/abort-controller" "^4.1.1" + "@smithy/middleware-endpoint" "^4.2.4" + "@smithy/smithy-client" "^4.6.4" buffer "5.6.0" events "3.3.0" stream-browserify "3.0.0" @@ -2045,7 +2045,7 @@ dependencies: "@sinonjs/commons" "^3.0.1" -"@smithy/abort-controller@^4.0.5", "@smithy/abort-controller@^4.1.1": +"@smithy/abort-controller@^4.1.1": version "4.1.1" resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.1.1.tgz#9b3872ab6b2c061486175c281dadc0a853260533" integrity sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg== @@ -2231,7 +2231,7 @@ "@smithy/types" "^4.5.0" tslib "^2.6.2" -"@smithy/middleware-endpoint@^4.2.1", "@smithy/middleware-endpoint@^4.2.4": +"@smithy/middleware-endpoint@^4.2.4": version "4.2.4" resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.4.tgz#d815d27b7869a66ee97b41932053ca5d5ec6315e" integrity sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg== @@ -2360,7 +2360,7 @@ "@smithy/util-utf8" "^4.1.0" tslib "^2.6.2" -"@smithy/smithy-client@^4.6.1", "@smithy/smithy-client@^4.6.4": +"@smithy/smithy-client@^4.6.4": version "4.6.4" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.6.4.tgz#3a66bb71c91dadf1806adab664ba2e164a1139ab" integrity sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg== From 2bf39f5ad04c904ab7d2b0751d2b6ee7b87a0b1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 09:52:41 +0000 Subject: [PATCH 07/10] build(deps): bump actions/cache from 4.2.4 to 4.3.0 (#8927) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test-backend.yml | 8 ++++---- .github/workflows/test-e2e.yml | 12 ++++++------ .github/workflows/test-webapp.yml | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/test-backend.yml b/.github/workflows/test-backend.yml index 1b8709d81..ffa420df9 100644 --- a/.github/workflows/test-backend.yml +++ b/.github/workflows/test-backend.yml @@ -37,7 +37,7 @@ jobs: - name: Cache docker images id: cache-neo4j - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/neo4j.tar key: ${{ github.run_id }}-backend-neo4j-cache @@ -58,7 +58,7 @@ jobs: - name: Cache docker images id: cache-backend - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/backend.tar key: ${{ github.run_id }}-backend-cache @@ -87,14 +87,14 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: Restore Neo4J cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/neo4j.tar key: ${{ github.run_id }}-backend-neo4j-cache fail-on-cache-miss: true - name: Restore Backend cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/backend.tar key: ${{ github.run_id }}-backend-cache diff --git a/.github/workflows/test-e2e.yml b/.github/workflows/test-e2e.yml index 6c0e4e620..e59fe7e48 100644 --- a/.github/workflows/test-e2e.yml +++ b/.github/workflows/test-e2e.yml @@ -31,7 +31,7 @@ jobs: docker compose -f docker-compose.yml -f docker-compose.test.yml down - name: Cache docker images - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: | /tmp/backend.tar @@ -59,7 +59,7 @@ jobs: docker save "ghcr.io/ocelot-social-community/ocelot-social/webapp:test" > /tmp/webapp.tar - name: Cache docker image - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/webapp.tar key: ${{ github.run_id }}-e2e-webapp-cache @@ -93,7 +93,7 @@ jobs: - name: Cache docker image - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: | /opt/cucumber-json-formatter @@ -123,7 +123,7 @@ jobs: cache: 'yarn' - name: Restore cypress cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: | /opt/cucumber-json-formatter @@ -133,7 +133,7 @@ jobs: restore-keys: ${{ github.run_id }}-e2e-cypress - name: Restore backend environment cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: | /tmp/backend.tar @@ -144,7 +144,7 @@ jobs: key: ${{ github.run_id }}-e2e-backend-environment-cache - name: Restore webapp cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/webapp.tar key: ${{ github.run_id }}-e2e-webapp-cache diff --git a/.github/workflows/test-webapp.yml b/.github/workflows/test-webapp.yml index eedbcc752..37b33cc1c 100644 --- a/.github/workflows/test-webapp.yml +++ b/.github/workflows/test-webapp.yml @@ -50,7 +50,7 @@ jobs: docker save "ocelotsocialnetwork/webapp:test" > /tmp/webapp.tar - name: Cache docker image - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/webapp.tar key: ${{ github.run_id }}-webapp-cache @@ -79,7 +79,7 @@ jobs: uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 - name: Restore webapp cache - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2 with: path: /tmp/webapp.tar key: ${{ github.run_id }}-webapp-cache From 1044231e4e9184e47e113cbe23af2c451b7441b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Sep 2025 10:10:03 +0000 Subject: [PATCH 08/10] build(deps): bump node from 24.8.0-alpine to 24.9.0-alpine in /backend (#8926) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- backend/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 017b98107..739be96c3 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:24.8.0-alpine AS base +FROM node:24.9.0-alpine AS base LABEL org.label-schema.name="ocelot.social:backend" LABEL org.label-schema.description="Backend of the Social Network Software ocelot.social" LABEL org.label-schema.usage="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/README.md" From 33ca59343a27b475e2578816f537baed071d3eb5 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 27 Sep 2025 14:09:47 +0200 Subject: [PATCH 09/10] docs(docu): describe current and desired architecture of services (#8850) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- docu/architecture.drawio | 133 +++++++++++++++++++++++++++++++++++++++ docu/architecture.png | Bin 0 -> 103132 bytes 2 files changed, 133 insertions(+) create mode 100644 docu/architecture.drawio create mode 100644 docu/architecture.png diff --git a/docu/architecture.drawio b/docu/architecture.drawio new file mode 100644 index 000000000..6bbb2d7d9 --- /dev/null +++ b/docu/architecture.drawio @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docu/architecture.png b/docu/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9289589cd906d65e7b7fc9bf80e1c243933ac1 GIT binary patch literal 103132 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

da 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�S2RWSUpQx{EQf6v` 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%0A{FVO_8;(p6_y0;GYv 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

O%lm zrZ^cos>c9@q%@B~o)|a9%7Cy{fE~?@4(d_>M)C_rBqytsAWET+K-b1{Ao)48^TtxP+UC2)gSGhBI8 z#y=2uz0oifyo2BXUW1;#T@Ef@@&J28>miJc-BXKi$6}6}9;6ES7FFpwubnD`;~B4ECr~{Q33zdWKL!jf9KfARtnx&BSW8E2e~xBKFWBxeF^EA) zu8n8g)Ov6omAXo&ktn3+=T`+bhi&$JiacAH!nx4>wqF48n4ZJudk^PX#kTNN^pOn5 z-#ZwYV^w0-@X!W|^=gHS7ZC5p@EjPr+?J zl0LEKk*C!p!?P8_^cL`Ve5sg+l1)o~kDbjlXaj!eYRMSIOeugnl>I@>jo3=C`wLq~FPMI0ioI%33$DN|q1* E1LhHJ)Bpeg literal 0 HcmV?d00001 From e4717e0d89ab7d54d6a87010da486c51e8e28327 Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Sat, 27 Sep 2025 14:37:12 +0200 Subject: [PATCH 10/10] fix(backend): fix potential leak in updateOnlineStatus (#8923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- backend/src/graphql/resolvers/users.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/backend/src/graphql/resolvers/users.ts b/backend/src/graphql/resolvers/users.ts index 6720ec0fb..f37c21619 100644 --- a/backend/src/graphql/resolvers/users.ts +++ b/backend/src/graphql/resolvers/users.ts @@ -353,14 +353,11 @@ export default { session.close() } }, - updateOnlineStatus: async (_object, args, context, _resolveInfo) => { + updateOnlineStatus: async (_object, args, context: Context, _resolveInfo) => { const { status } = args - const { - user: { id }, - } = context const CYPHER_AWAY = ` - MATCH (user:User {id: $id}) + MATCH (user:User {id: $user.id}) WITH user, CASE user.lastOnlineStatus WHEN 'away' THEN user.awaySince @@ -370,16 +367,14 @@ export default { SET user.lastOnlineStatus = $status ` const CYPHER_ONLINE = ` - MATCH (user:User {id: $id}) + MATCH (user:User {id: $user.id}) SET user.awaySince = null SET user.lastOnlineStatus = $status ` - // Last Online Time is saved as `lastActiveAt` - const session = context.driver.session() - await session.writeTransaction((transaction) => { - // return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status }) - return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status }) + await context.database.write({ + query: status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, + variables: { user: context.user, status }, }) return true