Merge branch 'master' into include-styleguide-repo

This commit is contained in:
Ulf Gebhardt 2025-09-28 19:33:28 +02:00
commit c6fe18f1f7
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
13 changed files with 263 additions and 117 deletions

View File

@ -64,7 +64,7 @@ jobs:
echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV echo "BUILD_COMMIT=${GITHUB_SHA}" >> $GITHUB_ENV
- run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV - run: echo "BUILD_VERSION=${VERSION}-${GITHUB_RUN_NUMBER}" >> $GITHUB_ENV
#- name: Repository Dispatch #- name: Repository Dispatch
# uses: peter-evans/repository-dispatch@7279ea08e172078316f128ed1118df40d2904f0f # v3.0.0 # uses: peter-evans/repository-dispatch@de78ac1a711fc6f29e77338f843065faf5335227 # v3.0.0
# with: # with:
# token: ${{ github.token }} # token: ${{ github.token }}
# event-type: trigger-ocelot-build-success # 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}"}' # 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 - 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: with:
token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository
event-type: trigger-ocelot-build-success 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}"}' 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 - 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: with:
token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository token: ${{ secrets.OCELOT_PUBLISH_EVENT_PAT }} # this token is required to access the other repository
event-type: trigger-ocelot-build-success event-type: trigger-ocelot-build-success

View File

@ -37,7 +37,7 @@ jobs:
- name: Cache docker images - name: Cache docker images
id: cache-neo4j id: cache-neo4j
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/neo4j.tar path: /tmp/neo4j.tar
key: ${{ github.run_id }}-backend-neo4j-cache key: ${{ github.run_id }}-backend-neo4j-cache
@ -58,7 +58,7 @@ jobs:
- name: Cache docker images - name: Cache docker images
id: cache-backend id: cache-backend
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/backend.tar path: /tmp/backend.tar
key: ${{ github.run_id }}-backend-cache key: ${{ github.run_id }}-backend-cache
@ -87,14 +87,14 @@ jobs:
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7
- name: Restore Neo4J cache - name: Restore Neo4J cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/neo4j.tar path: /tmp/neo4j.tar
key: ${{ github.run_id }}-backend-neo4j-cache key: ${{ github.run_id }}-backend-neo4j-cache
fail-on-cache-miss: true fail-on-cache-miss: true
- name: Restore Backend cache - name: Restore Backend cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/backend.tar path: /tmp/backend.tar
key: ${{ github.run_id }}-backend-cache key: ${{ github.run_id }}-backend-cache

View File

@ -31,7 +31,7 @@ jobs:
docker compose -f docker-compose.yml -f docker-compose.test.yml down docker compose -f docker-compose.yml -f docker-compose.test.yml down
- name: Cache docker images - name: Cache docker images
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: | path: |
/tmp/backend.tar /tmp/backend.tar
@ -59,7 +59,7 @@ jobs:
docker save "ghcr.io/ocelot-social-community/ocelot-social/webapp:test" > /tmp/webapp.tar docker save "ghcr.io/ocelot-social-community/ocelot-social/webapp:test" > /tmp/webapp.tar
- name: Cache docker image - name: Cache docker image
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/webapp.tar path: /tmp/webapp.tar
key: ${{ github.run_id }}-e2e-webapp-cache key: ${{ github.run_id }}-e2e-webapp-cache
@ -93,7 +93,7 @@ jobs:
- name: Cache docker image - name: Cache docker image
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: | path: |
/opt/cucumber-json-formatter /opt/cucumber-json-formatter
@ -123,7 +123,7 @@ jobs:
cache: 'yarn' cache: 'yarn'
- name: Restore cypress cache - name: Restore cypress cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: | path: |
/opt/cucumber-json-formatter /opt/cucumber-json-formatter
@ -133,7 +133,7 @@ jobs:
restore-keys: ${{ github.run_id }}-e2e-cypress restore-keys: ${{ github.run_id }}-e2e-cypress
- name: Restore backend environment cache - name: Restore backend environment cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: | path: |
/tmp/backend.tar /tmp/backend.tar
@ -144,7 +144,7 @@ jobs:
key: ${{ github.run_id }}-e2e-backend-environment-cache key: ${{ github.run_id }}-e2e-backend-environment-cache
- name: Restore webapp cache - name: Restore webapp cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/webapp.tar path: /tmp/webapp.tar
key: ${{ github.run_id }}-e2e-webapp-cache key: ${{ github.run_id }}-e2e-webapp-cache

View File

@ -50,7 +50,7 @@ jobs:
docker save "ocelotsocialnetwork/webapp:test" > /tmp/webapp.tar docker save "ocelotsocialnetwork/webapp:test" > /tmp/webapp.tar
- name: Cache docker image - name: Cache docker image
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/webapp.tar path: /tmp/webapp.tar
key: ${{ github.run_id }}-webapp-cache key: ${{ github.run_id }}-webapp-cache
@ -79,7 +79,7 @@ jobs:
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7 uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v4.1.7
- name: Restore webapp cache - name: Restore webapp cache
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.0.2 uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.0.2
with: with:
path: /tmp/webapp.tar path: /tmp/webapp.tar
key: ${{ github.run_id }}-webapp-cache key: ${{ github.run_id }}-webapp-cache

View File

@ -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.name="ocelot.social:backend"
LABEL org.label-schema.description="Backend of the Social Network Software ocelot.social" 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" LABEL org.label-schema.usage="https://github.com/Ocelot-Social-Community/Ocelot-Social/blob/master/README.md"

View File

@ -29,7 +29,7 @@
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.896.0", "@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", "@sentry/node": "^5.30.0",
"@types/mime-types": "^3.0.1", "@types/mime-types": "^3.0.1",
"apollo-server": "~2.14.2", "apollo-server": "~2.14.2",
@ -50,14 +50,14 @@
"graphql-tag": "~2.10.3", "graphql-tag": "~2.10.3",
"graphql-upload": "^13.0.0", "graphql-upload": "^13.0.0",
"helmet": "~8.1.0", "helmet": "~8.1.0",
"ioredis": "^5.7.0", "ioredis": "^5.8.0",
"jsonwebtoken": "~8.5.1", "jsonwebtoken": "~8.5.1",
"languagedetect": "^2.0.0", "languagedetect": "^2.0.0",
"linkify-html": "^4.3.2", "linkify-html": "^4.3.2",
"linkifyjs": "^4.3.2", "linkifyjs": "^4.3.2",
"lodash": "~4.17.21", "lodash": "~4.17.21",
"merge-graphql-schemas": "^1.7.8", "merge-graphql-schemas": "^1.7.8",
"metascraper": "^5.49.2", "metascraper": "^5.49.4",
"metascraper-author": "^5.49.2", "metascraper-author": "^5.49.2",
"metascraper-date": "^5.49.2", "metascraper-date": "^5.49.2",
"metascraper-description": "^5.49.2", "metascraper-description": "^5.49.2",
@ -122,7 +122,7 @@
"prettier": "^3.6.2", "prettier": "^3.6.2",
"require-json5": "^1.3.0", "require-json5": "^1.3.0",
"rosie": "^2.1.1", "rosie": "^2.1.1",
"ts-jest": "^29.4.1", "ts-jest": "^29.4.4",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"tsc-alias": "^1.8.16", "tsc-alias": "^1.8.16",
"tsconfig-paths": "^4.2.0", "tsconfig-paths": "^4.2.0",

View File

@ -353,14 +353,11 @@ export default {
session.close() session.close()
} }
}, },
updateOnlineStatus: async (_object, args, context, _resolveInfo) => { updateOnlineStatus: async (_object, args, context: Context, _resolveInfo) => {
const { status } = args const { status } = args
const {
user: { id },
} = context
const CYPHER_AWAY = ` const CYPHER_AWAY = `
MATCH (user:User {id: $id}) MATCH (user:User {id: $user.id})
WITH user, WITH user,
CASE user.lastOnlineStatus CASE user.lastOnlineStatus
WHEN 'away' THEN user.awaySince WHEN 'away' THEN user.awaySince
@ -370,16 +367,14 @@ export default {
SET user.lastOnlineStatus = $status SET user.lastOnlineStatus = $status
` `
const CYPHER_ONLINE = ` const CYPHER_ONLINE = `
MATCH (user:User {id: $id}) MATCH (user:User {id: $user.id})
SET user.awaySince = null SET user.awaySince = null
SET user.lastOnlineStatus = $status SET user.lastOnlineStatus = $status
` `
// Last Online Time is saved as `lastActiveAt` await context.database.write({
const session = context.driver.session() query: status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE,
await session.writeTransaction((transaction) => { variables: { user: context.user, status },
// return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status })
return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status })
}) })
return true return true

View File

@ -361,14 +361,14 @@
"@smithy/types" "^4.5.0" "@smithy/types" "^4.5.0"
tslib "^2.6.2" tslib "^2.6.2"
"@aws-sdk/lib-storage@^3.888.0": "@aws-sdk/lib-storage@^3.896.0":
version "3.888.0" version "3.896.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.888.0.tgz#d39ee4403282784fc0eea032661f3f657a402326" resolved "https://registry.yarnpkg.com/@aws-sdk/lib-storage/-/lib-storage-3.896.0.tgz#c65350f32867c1e2783dde2f7a1d4b85b5922104"
integrity sha512-UCZsVxjnQ6QpVWI1ZiNGmxfd1+8YBNbriQJ5lssR2IudQt5ThGhamGkwoYBmFV4iwhmgIT2fn5+gErugFZuUhw== integrity sha512-EJWXL/5LxBJFujsOud3+EfRbIwy/SZiWy5ld70RdoqLS/RsfZh9+mZMJGvd3hewy7xHgDYVbxZfDh14bsvfYIQ==
dependencies: dependencies:
"@smithy/abort-controller" "^4.0.5" "@smithy/abort-controller" "^4.1.1"
"@smithy/middleware-endpoint" "^4.2.1" "@smithy/middleware-endpoint" "^4.2.4"
"@smithy/smithy-client" "^4.6.1" "@smithy/smithy-client" "^4.6.4"
buffer "5.6.0" buffer "5.6.0"
events "3.3.0" events "3.3.0"
stream-browserify "3.0.0" stream-browserify "3.0.0"
@ -1326,10 +1326,10 @@
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@ioredis/commands@^1.3.0": "@ioredis/commands@1.4.0":
version "1.3.0" version "1.4.0"
resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.3.0.tgz#4dc3ae9bfa7146b63baf27672a61db0ea86e35e5" resolved "https://registry.yarnpkg.com/@ioredis/commands/-/commands-1.4.0.tgz#9f657d51cdd5d2fdb8889592aa4a355546151f25"
integrity sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ== integrity sha512-aFT2yemJJo+TZCmieA7qnYGQooOS7QfNmYrzGtsYd3g9j5iDP8AimYYAesf79ohjbLG12XxC4nG5DyEnC88AsQ==
"@isaacs/balanced-match@^4.0.1": "@isaacs/balanced-match@^4.0.1":
version "4.0.1" version "4.0.1"
@ -2045,7 +2045,7 @@
dependencies: dependencies:
"@sinonjs/commons" "^3.0.1" "@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" version "4.1.1"
resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.1.1.tgz#9b3872ab6b2c061486175c281dadc0a853260533" resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.1.1.tgz#9b3872ab6b2c061486175c281dadc0a853260533"
integrity sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg== integrity sha512-vkzula+IwRvPR6oKQhMYioM3A/oX/lFCZiwuxkQbRhqJS2S4YRY2k7k/SyR2jMf3607HLtbEwlRxi0ndXHMjRg==
@ -2231,7 +2231,7 @@
"@smithy/types" "^4.5.0" "@smithy/types" "^4.5.0"
tslib "^2.6.2" 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" version "4.2.4"
resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.4.tgz#d815d27b7869a66ee97b41932053ca5d5ec6315e" resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.2.4.tgz#d815d27b7869a66ee97b41932053ca5d5ec6315e"
integrity sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg== integrity sha512-FZ4hzupOmthm8Q8ujYrd0I+/MHwVMuSTdkDtIQE0xVuvJt9pLT6Q+b0p4/t+slDyrpcf+Wj7SN+ZqT5OryaaZg==
@ -2360,7 +2360,7 @@
"@smithy/util-utf8" "^4.1.0" "@smithy/util-utf8" "^4.1.0"
tslib "^2.6.2" 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" version "4.6.4"
resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.6.4.tgz#3a66bb71c91dadf1806adab664ba2e164a1139ab" resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.6.4.tgz#3a66bb71c91dadf1806adab664ba2e164a1139ab"
integrity sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg== integrity sha512-qL7O3VDyfzCSN9r+sdbQXGhaHtrfSJL30En6Jboj0I3bobf2g1/T0eP2L4qxqrEW26gWhJ4THI4ElVVLjYyBHg==
@ -6972,12 +6972,12 @@ internal-slot@^1.1.0:
hasown "^2.0.2" hasown "^2.0.2"
side-channel "^1.1.0" side-channel "^1.1.0"
ioredis@^5.3.2, ioredis@^5.7.0: ioredis@^5.3.2, ioredis@^5.8.0:
version "5.7.0" version "5.8.0"
resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.7.0.tgz#be8f4a09bfb67bfa84ead297ff625973a5dcefc3" resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-5.8.0.tgz#a1c4ef6be2e274cc8e99c9e22794ef1ef06dc24a"
integrity sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g== integrity sha512-AUXbKn9gvo9hHKvk6LbZJQSKn/qIfkWXrnsyL9Yrf+oeXmla9Nmf6XEumOddyhM8neynpK5oAV6r9r99KBuwzA==
dependencies: dependencies:
"@ioredis/commands" "^1.3.0" "@ioredis/commands" "1.4.0"
cluster-key-slot "^1.1.0" cluster-key-slot "^1.1.0"
debug "^4.3.4" debug "^4.3.4"
denque "^2.1.0" denque "^2.1.0"
@ -8560,10 +8560,10 @@ metascraper-youtube@^5.49.2:
p-locate "~5.0.0" p-locate "~5.0.0"
reachable-url "~1.8.2" reachable-url "~1.8.2"
metascraper@^5.49.2: metascraper@^5.49.4:
version "5.49.2" version "5.49.4"
resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.49.2.tgz#9b0b43c933b45cc13139e5f80a4a4583d1cc1cdc" resolved "https://registry.yarnpkg.com/metascraper/-/metascraper-5.49.4.tgz#7a0056cbe10d3de2f07f68b3d10f2726d64d1e38"
integrity sha512-WT7+rz4q5s6Gi3ElQuTefnka22KviFIZfXgYz9P6f4FQmOydznSbuenkr7gsXyCPFdDtoO+aA2nClH94r8C+9g== integrity sha512-ZDvntIsErYMOETK8dYaaIcqCBF/KvhPSQQBD+4Eqe1b6dqZAhk++iqCQyLJi68yEmhvzORryNoIAb7HiHg0Nig==
dependencies: dependencies:
"@metascraper/helpers" "5.49.2" "@metascraper/helpers" "5.49.2"
cheerio "~1.1.2" cheerio "~1.1.2"
@ -10955,10 +10955,10 @@ ts-invariant@^0.4.0:
dependencies: dependencies:
tslib "^1.9.3" tslib "^1.9.3"
ts-jest@^29.4.1: ts-jest@^29.4.4:
version "29.4.1" version "29.4.4"
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.1.tgz#42d33beb74657751d315efb9a871fe99e3b9b519" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.4.4.tgz#fc6fefe28652ed81b8e1381ef8391901d9f81417"
integrity sha512-SaeUtjfpg9Uqu8IbeDKtdaS0g8lS6FT6OzM3ezrDfErPJPHNDo/Ey+VFGP1bQIDfagYDLyRpd7O15XpG1Es2Uw== integrity sha512-ccVcRABct5ZELCT5U0+DZwkXMCcOCLi2doHRrKy1nK/s7J7bch6TzJMsrY09WxgUUIP/ITfmcDS8D2yl63rnXw==
dependencies: dependencies:
bs-logger "^0.2.6" bs-logger "^0.2.6"
fast-json-stable-stringify "^2.1.0" fast-json-stable-stringify "^2.1.0"

133
docu/architecture.drawio Normal file
View File

@ -0,0 +1,133 @@
<mxfile host="65bd71144e">
<diagram id="4WdWOmaUpzykNuty-dxF" name="Page-1">
<mxGraphModel dx="1608" dy="711" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="6" value="" style="shape=mxgraph.mockup.containers.marginRect;rectMarginTop=10;strokeColor=#666666;strokeWidth=1;dashed=0;rounded=1;arcSize=5;recursiveResize=0;html=1;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="10" width="670" height="400" as="geometry"/>
</mxCell>
<mxCell id="7" value="Current State" style="shape=rect;strokeColor=none;fillColor=#008cff;strokeWidth=1;dashed=0;rounded=1;arcSize=20;fontColor=#ffffff;fontSize=17;spacing=2;spacingTop=-2;align=left;autosize=1;spacingLeft=4;resizeWidth=0;resizeHeight=0;perimeter=none;html=1;whiteSpace=wrap;" vertex="1" parent="6">
<mxGeometry x="5" width="130" height="30" as="geometry"/>
</mxCell>
<mxCell id="3" value="WebApp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="6">
<mxGeometry x="60" y="180" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="5" value="Maintenance" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="6">
<mxGeometry x="60" y="230" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="10" value="Database" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="6">
<mxGeometry x="490" y="160" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="16" value="S3/Minio" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="6">
<mxGeometry x="290" y="290" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="17" value="Imagor" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="6">
<mxGeometry x="290" y="200" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="21" value="User has no Access" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="6">
<mxGeometry x="480" y="60" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="2" value="Backend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="300" y="110" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="18" value="S&lt;span style=&quot;color: rgb(63, 63, 63); background-color: transparent;&quot;&gt;MTP/Maildev&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
<mxGeometry x="500" y="250" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="19" value="User Controlls" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="60" y="60" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="20" value="User Interacts" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="290" y="60" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="23" value="" style="shape=mxgraph.mockup.containers.marginRect;rectMarginTop=10;strokeColor=#666666;strokeWidth=1;dashed=0;rounded=1;arcSize=5;recursiveResize=0;html=1;whiteSpace=wrap;" vertex="1" parent="1">
<mxGeometry x="10" y="420" width="840" height="700" as="geometry"/>
</mxCell>
<mxCell id="24" value="Desired State" style="shape=rect;strokeColor=none;fillColor=#008cff;strokeWidth=1;dashed=0;rounded=1;arcSize=20;fontColor=#ffffff;fontSize=17;spacing=2;spacingTop=-2;align=left;autosize=1;spacingLeft=4;resizeWidth=0;resizeHeight=0;perimeter=none;html=1;whiteSpace=wrap;" vertex="1" parent="23">
<mxGeometry x="5" width="130" height="30" as="geometry"/>
</mxCell>
<mxCell id="42" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="23" source="25" target="29">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="43" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="23" source="25" target="28">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="25" value="Frontend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="23">
<mxGeometry x="60" y="410" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="26" value="Maintenance" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="23">
<mxGeometry x="60" y="590" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="27" value="Database" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="23">
<mxGeometry x="490" y="320" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="28" value="S3/Minio" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="23">
<mxGeometry x="290" y="500" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="29" value="Imagor" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="23">
<mxGeometry x="290" y="410" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="30" value="User has no Access" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="23">
<mxGeometry x="480" y="60" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="37" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="31" target="27">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="47" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="31" target="44">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="48" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="31" target="32">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="31" value="Backend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="300" y="740" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="32" value="&lt;span style=&quot;scrollbar-color: rgb(226, 226, 226) rgb(251, 251, 251); color: rgb(0, 0, 0);&quot;&gt;S&lt;/span&gt;&lt;span style=&quot;scrollbar-color: rgb(226, 226, 226) rgb(251, 251, 251); background-color: transparent; color: rgb(63, 63, 63);&quot;&gt;MTP/Maildev&lt;/span&gt;" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
<mxGeometry x="500" y="920" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="33" value="User Controlls" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="60" y="480" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="34" value="User Interacts" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="290" y="480" width="140" height="30" as="geometry"/>
</mxCell>
<mxCell id="40" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="35" target="36">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="53" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="35" target="52">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="35" value="Auth-Frontend" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
<mxGeometry x="70" y="650" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="39" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="36" target="38">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="36" value="IdP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
<mxGeometry x="300" y="650" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="38" value="Database" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="500" y="650" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="41" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="25" target="31">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="49" style="edgeStyle=none;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="44" target="32">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="51" style="edgeStyle=none;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="44" target="50">
<mxGeometry relative="1" as="geometry"/>
</mxCell>
<mxCell id="44" value="Delivery&lt;br&gt;Apprise" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
<mxGeometry x="500" y="830" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="50" value="Discord/Slack/..." style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
<mxGeometry x="680" y="830" width="120" height="60" as="geometry"/>
</mxCell>
<mxCell id="52" value="External IdP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
<mxGeometry x="300" y="570" width="120" height="60" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

BIN
docu/architecture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

75
package-lock.json generated
View File

@ -1,25 +1,25 @@
{ {
"name": "ocelot-social", "name": "ocelot-social",
"version": "3.12.1", "version": "3.12.2",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "ocelot-social", "name": "ocelot-social",
"version": "3.12.1", "version": "3.12.2",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@babel/core": "^7.28.4", "@babel/core": "^7.28.4",
"@babel/preset-env": "^7.28.3", "@babel/preset-env": "^7.28.3",
"@babel/register": "^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", "@cucumber/cucumber": "12.2.0",
"@cypress/browserify-preprocessor": "^3.0.2", "@cypress/browserify-preprocessor": "^3.0.2",
"@faker-js/faker": "9.9.0", "@faker-js/faker": "9.9.0",
"auto-changelog": "^2.5.0", "auto-changelog": "^2.5.0",
"bcryptjs": "^3.0.2", "bcryptjs": "^3.0.2",
"cross-env": "^10.0.0", "cross-env": "^10.0.0",
"cypress": "^15.2.0", "cypress": "^15.3.0",
"cypress-network-idle": "^1.15.0", "cypress-network-idle": "^1.15.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"dotenv": "^17.2.2", "dotenv": "^17.2.2",
@ -1843,9 +1843,9 @@
} }
}, },
"node_modules/@badeball/cypress-cucumber-preprocessor": { "node_modules/@badeball/cypress-cucumber-preprocessor": {
"version": "23.1.0", "version": "23.2.0",
"resolved": "https://registry.npmjs.org/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.1.0.tgz", "resolved": "https://registry.npmjs.org/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.2.0.tgz",
"integrity": "sha512-oIrmj7fs7+DS/6WBQEmzlBdyPAQeuiXyCisHgDnGRpE6nGntkIdRUnj75YvLhubPYiy0TNeMJvKZW6prSnSA4A==", "integrity": "sha512-9FK6m2oI5AwozPcRIe6Clz4+lZkQZkiev5YsidcLIg7lO9AWC0Uv0OeB60ioGOiwBKTq4YUbgWGKsoDsLKH5SA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@ -1859,10 +1859,10 @@
"@cucumber/ci-environment": "^10.0.1", "@cucumber/ci-environment": "^10.0.1",
"@cucumber/cucumber": "^12.0.0", "@cucumber/cucumber": "^12.0.0",
"@cucumber/cucumber-expressions": "^18.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/html-formatter": "^21.7.0",
"@cucumber/message-streams": "^4.0.1", "@cucumber/message-streams": "^4.0.1",
"@cucumber/messages": "^28.0.0", "@cucumber/messages": "^29.0.0",
"@cucumber/pretty-formatter": "^1.0.1", "@cucumber/pretty-formatter": "^1.0.1",
"@cucumber/tag-expressions": "^6.1.0", "@cucumber/tag-expressions": "^6.1.0",
"base64-js": "^1.5.1", "base64-js": "^1.5.1",
@ -1892,6 +1892,27 @@
"cypress": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0" "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": { "node_modules/@badeball/cypress-cucumber-preprocessor/node_modules/glob": {
"version": "11.0.3", "version": "11.0.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz",
@ -4392,6 +4413,13 @@
"integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==", "integrity": "sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==",
"dev": true "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": { "node_modules/@types/trusted-types": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@ -7154,15 +7182,6 @@
"url": "https://github.com/sponsors/wooorm" "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": { "node_modules/cheerio-select": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz",
@ -7782,9 +7801,9 @@
"optional": true "optional": true
}, },
"node_modules/cypress": { "node_modules/cypress": {
"version": "15.2.0", "version": "15.3.0",
"resolved": "https://registry.npmjs.org/cypress/-/cypress-15.2.0.tgz", "resolved": "https://registry.npmjs.org/cypress/-/cypress-15.3.0.tgz",
"integrity": "sha512-J4ehSzOSb58SkXyldCe9y/oZ8ep8Bl6+q9kDUjnkqNqc2ZKzDq5KSbhIc2lHFAFR5Jtj10oNqr9JRAZbr8DA8A==", "integrity": "sha512-g9rDhoK9y8wW4Vx3Ppr8dtfvThXxPL3mJsV5e98fG+6EerrhXKmeRT2sL86cvNRtEZouXJfsuVL1lqiMuGNGcg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "MIT", "license": "MIT",
@ -7793,13 +7812,13 @@
"@cypress/xvfb": "^1.2.4", "@cypress/xvfb": "^1.2.4",
"@types/sinonjs__fake-timers": "8.1.1", "@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2", "@types/sizzle": "^2.3.2",
"@types/tmp": "^0.2.3",
"arch": "^2.2.0", "arch": "^2.2.0",
"blob-util": "^2.0.2", "blob-util": "^2.0.2",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"buffer": "^5.7.1", "buffer": "^5.7.1",
"cachedir": "^2.3.0", "cachedir": "^2.3.0",
"chalk": "^4.1.0", "chalk": "^4.1.0",
"check-more-types": "^2.24.0",
"ci-info": "^4.1.0", "ci-info": "^4.1.0",
"cli-cursor": "^3.1.0", "cli-cursor": "^3.1.0",
"cli-table3": "0.6.1", "cli-table3": "0.6.1",
@ -7816,7 +7835,6 @@
"fs-extra": "^9.1.0", "fs-extra": "^9.1.0",
"hasha": "5.2.2", "hasha": "5.2.2",
"is-installed-globally": "~0.4.0", "is-installed-globally": "~0.4.0",
"lazy-ass": "^1.6.0",
"listr2": "^3.8.3", "listr2": "^3.8.3",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"log-symbols": "^4.0.0", "log-symbols": "^4.0.0",
@ -7838,7 +7856,7 @@
"cypress": "bin/cypress" "cypress": "bin/cypress"
}, },
"engines": { "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": { "node_modules/cypress-network-idle": {
@ -11043,15 +11061,6 @@
"stream-splicer": "^2.0.0" "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": { "node_modules/lilconfig": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",

View File

@ -36,14 +36,14 @@
"@babel/core": "^7.28.4", "@babel/core": "^7.28.4",
"@babel/preset-env": "^7.28.3", "@babel/preset-env": "^7.28.3",
"@babel/register": "^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", "@cucumber/cucumber": "12.2.0",
"@cypress/browserify-preprocessor": "^3.0.2", "@cypress/browserify-preprocessor": "^3.0.2",
"@faker-js/faker": "9.9.0", "@faker-js/faker": "9.9.0",
"auto-changelog": "^2.5.0", "auto-changelog": "^2.5.0",
"bcryptjs": "^3.0.2", "bcryptjs": "^3.0.2",
"cross-env": "^10.0.0", "cross-env": "^10.0.0",
"cypress": "^15.2.0", "cypress": "^15.3.0",
"cypress-network-idle": "^1.15.0", "cypress-network-idle": "^1.15.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"dotenv": "^17.2.2", "dotenv": "^17.2.2",

View File

@ -962,18 +962,18 @@
"@babel/helper-string-parser" "^7.27.1" "@babel/helper-string-parser" "^7.27.1"
"@babel/helper-validator-identifier" "^7.27.1" "@babel/helper-validator-identifier" "^7.27.1"
"@badeball/cypress-cucumber-preprocessor@^23.1.0": "@badeball/cypress-cucumber-preprocessor@^23.2.0":
version "23.1.0" version "23.2.0"
resolved "https://registry.yarnpkg.com/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.1.0.tgz#50fabbcf09ed6e613cf7127866d7ad735cbef0b6" resolved "https://registry.yarnpkg.com/@badeball/cypress-cucumber-preprocessor/-/cypress-cucumber-preprocessor-23.2.0.tgz#6087d0ff11e81904eabb87802f2af7c3446308f6"
integrity sha512-oIrmj7fs7+DS/6WBQEmzlBdyPAQeuiXyCisHgDnGRpE6nGntkIdRUnj75YvLhubPYiy0TNeMJvKZW6prSnSA4A== integrity sha512-9FK6m2oI5AwozPcRIe6Clz4+lZkQZkiev5YsidcLIg7lO9AWC0Uv0OeB60ioGOiwBKTq4YUbgWGKsoDsLKH5SA==
dependencies: dependencies:
"@cucumber/ci-environment" "^10.0.1" "@cucumber/ci-environment" "^10.0.1"
"@cucumber/cucumber" "^12.0.0" "@cucumber/cucumber" "^12.0.0"
"@cucumber/cucumber-expressions" "^18.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/html-formatter" "^21.7.0"
"@cucumber/message-streams" "^4.0.1" "@cucumber/message-streams" "^4.0.1"
"@cucumber/messages" "^28.0.0" "@cucumber/messages" "^29.0.0"
"@cucumber/pretty-formatter" "^1.0.1" "@cucumber/pretty-formatter" "^1.0.1"
"@cucumber/tag-expressions" "^6.1.0" "@cucumber/tag-expressions" "^6.1.0"
base64-js "^1.5.1" base64-js "^1.5.1"
@ -1073,7 +1073,7 @@
commander "13.1.0" commander "13.1.0"
source-map-support "^0.5.21" 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" version "34.0.0"
resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-34.0.0.tgz#891ec27a7c09a9fc3695aaf3c3a3c8a1c594102f" resolved "https://registry.yarnpkg.com/@cucumber/gherkin/-/gherkin-34.0.0.tgz#891ec27a7c09a9fc3695aaf3c3a3c8a1c594102f"
integrity sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA== integrity sha512-659CCFsrsyvuBi/Eix1fnhSheMnojSfnBcqJ3IMPNawx7JlrNJDcXYSSdxcUw3n/nG05P+ptCjmiZY3i14p+tA==
@ -1087,6 +1087,13 @@
dependencies: dependencies:
"@cucumber/messages" ">=19.1.4 <=26" "@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": "@cucumber/html-formatter@21.14.0", "@cucumber/html-formatter@^21.7.0":
version "21.14.0" version "21.14.0"
resolved "https://registry.yarnpkg.com/@cucumber/html-formatter/-/html-formatter-21.14.0.tgz#beb29b66892189f8e242243aa8b807f7b9dc1c6c" 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" resolved "https://registry.npmjs.org/@cucumber/message-streams/-/message-streams-4.0.1.tgz"
integrity sha512-Kxap9uP5jD8tHUZVjTWgzxemi/0uOsbGjd4LBOSxcJoOCRbESFwemUzilJuzNTB8pcTQUh8D5oudUyxfkJOKmA== 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" version "28.1.0"
resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-28.1.0.tgz#5fdcfc3f9b30103cb45c69044ebe9a892bec38ce" resolved "https://registry.yarnpkg.com/@cucumber/messages/-/messages-28.1.0.tgz#5fdcfc3f9b30103cb45c69044ebe9a892bec38ce"
integrity sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA== integrity sha512-2LzZtOwYKNlCuNf31ajkrekoy2M4z0Z1QGiPH40n4gf5t8VOUFb7m1ojtR4LmGvZxBGvJZP8voOmRqDWzBzYKA==
@ -1117,6 +1124,14 @@
reflect-metadata "0.2.2" reflect-metadata "0.2.2"
uuid "11.1.0" 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": "@cucumber/messages@>=19.1.4 <=26":
version "22.0.0" version "22.0.0"
resolved "https://registry.npmjs.org/@cucumber/messages/-/messages-22.0.0.tgz" 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" resolved "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.6.tgz"
integrity sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw== 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": "@types/trusted-types@^2.0.2":
version "2.0.7" version "2.0.7"
resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz" 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" resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz"
integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== 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: cheerio-select@^2.1.0:
version "2.1.0" version "2.1.0"
resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz" 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" resolved "https://registry.npmjs.org/cypress-network-idle/-/cypress-network-idle-1.15.0.tgz"
integrity sha512-8zU16zhc7S3nMl1NTEEcNsZYlJy/ZzP2zPTTrngGxyXH32Ipake/xfHLZsgrzeWCieiS2AVhQsakhWqFzO3hpw== integrity sha512-8zU16zhc7S3nMl1NTEEcNsZYlJy/ZzP2zPTTrngGxyXH32Ipake/xfHLZsgrzeWCieiS2AVhQsakhWqFzO3hpw==
cypress@^15.2.0: cypress@^15.3.0:
version "15.2.0" version "15.3.0"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.2.0.tgz#a1b48c8ef00f520fbaea60261ed244c8382dd3bc" resolved "https://registry.yarnpkg.com/cypress/-/cypress-15.3.0.tgz#cb9416e5261ee419c8a42e839d4f2d73eef8797c"
integrity sha512-J4ehSzOSb58SkXyldCe9y/oZ8ep8Bl6+q9kDUjnkqNqc2ZKzDq5KSbhIc2lHFAFR5Jtj10oNqr9JRAZbr8DA8A== integrity sha512-g9rDhoK9y8wW4Vx3Ppr8dtfvThXxPL3mJsV5e98fG+6EerrhXKmeRT2sL86cvNRtEZouXJfsuVL1lqiMuGNGcg==
dependencies: dependencies:
"@cypress/request" "^3.0.9" "@cypress/request" "^3.0.9"
"@cypress/xvfb" "^1.2.4" "@cypress/xvfb" "^1.2.4"
"@types/sinonjs__fake-timers" "8.1.1" "@types/sinonjs__fake-timers" "8.1.1"
"@types/sizzle" "^2.3.2" "@types/sizzle" "^2.3.2"
"@types/tmp" "^0.2.3"
arch "^2.2.0" arch "^2.2.0"
blob-util "^2.0.2" blob-util "^2.0.2"
bluebird "^3.7.2" bluebird "^3.7.2"
buffer "^5.7.1" buffer "^5.7.1"
cachedir "^2.3.0" cachedir "^2.3.0"
chalk "^4.1.0" chalk "^4.1.0"
check-more-types "^2.24.0"
ci-info "^4.1.0" ci-info "^4.1.0"
cli-cursor "^3.1.0" cli-cursor "^3.1.0"
cli-table3 "0.6.1" cli-table3 "0.6.1"
@ -3941,7 +3956,6 @@ cypress@^15.2.0:
fs-extra "^9.1.0" fs-extra "^9.1.0"
hasha "5.2.2" hasha "5.2.2"
is-installed-globally "~0.4.0" is-installed-globally "~0.4.0"
lazy-ass "^1.6.0"
listr2 "^3.8.3" listr2 "^3.8.3"
lodash "^4.17.21" lodash "^4.17.21"
log-symbols "^4.0.0" log-symbols "^4.0.0"
@ -5871,11 +5885,6 @@ labeled-stream-splicer@^2.0.0:
inherits "^2.0.1" inherits "^2.0.1"
stream-splicer "^2.0.0" 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: lazy-ass@^2.0.3:
version "2.0.3" version "2.0.3"
resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-2.0.3.tgz" resolved "https://registry.npmjs.org/lazy-ass/-/lazy-ass-2.0.3.tgz"