Compare commits

...

434 Commits

Author SHA1 Message Date
0e4e72429d
refactor(webapp): vue 2.7.16 (#9160) 2026-02-04 10:32:18 +00:00
a78c25a258
refactor(backend): test roles (#9157) 2026-02-03 16:00:37 +00:00
753a300c3f
refactor(backend): middleware before/after (#9128) 2026-02-03 14:20:19 +01:00
dependabot[bot]
b28cdada6d
build(deps): bump node from 25.4.0-alpine to 25.5.0-alpine in /webapp (#9147)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 19:36:31 +00:00
dependabot[bot]
8a04b09fd7
build(deps): bump node from 25.4.0-alpine to 25.5.0-alpine in /backend (#9148)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 19:10:07 +00:00
dependabot[bot]
b26a06f0ef
build(deps): bump actions/cache from 5.0.2 to 5.0.3 (#9149)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 18:50:29 +00:00
dependabot[bot]
e5231acd4f
build(deps): bump docker/login-action from 3.6.0 to 3.7.0 (#9150)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 18:24:21 +00:00
dependabot[bot]
8e8bab6f9d
build(deps): bump @aws-sdk/client-s3 and @aws-sdk/lib-storage in /backend (#9151)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 18:04:36 +00:00
dependabot[bot]
71228260e5
build(deps-dev): bump @types/node from 25.0.10 to 25.1.0 in /backend (#9152)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-31 17:41:59 +00:00
d96cb32f11
refactor(backend): properly model group-membership (#9124) 2026-01-30 04:56:03 +01:00
bea7c275e8
fix(webapp): allow internal path for custom button (#9129) 2026-01-29 18:51:53 +01:00
07ff0a6b5e
feat(backend): db script disable notifications (#9131) 2026-01-28 22:14:35 +01:00
6fc3c03860 feat(backend): group pins (#9034)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2026-01-28 16:53:29 +01:00
524c4caf5e
refactor(backend): lint graphql (#8473) 2026-01-28 14:42:53 +01:00
8136ec1aba
fix(backend): fix bug in notifications settings for currentUser (#9130) 2026-01-28 00:36:51 +01:00
0ee476cfff
fix(backend): fix email url encoding (#9127) 2026-01-27 22:39:40 +00:00
Wolfgang Huß
b39d1c737b
refactor(other): consolidate Node.js versions and fix e2e workflow (#9126)
Co-authored-by: mahula <lenzmath@posteo.de>
2026-01-27 18:23:26 +01:00
dependabot[bot]
dcff378727
build(deps): bump cheerio from 1.1.2 to 1.2.0 in /backend (#9141)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-25 17:12:12 +00:00
dependabot[bot]
6c34da94f4
build(deps-dev): bump @types/node from 25.0.9 to 25.0.10 in /backend (#9142)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-25 15:26:12 +00:00
dependabot[bot]
f5f6ceb2c5
build(deps): bump @aws-sdk/client-s3 and @aws-sdk/lib-storage in /backend (#9144)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-25 15:04:44 +00:00
dependabot[bot]
e109ac29b7
build(deps): bump peter-evans/repository-dispatch from 09094272a794c6105029af051e3831908c649b6c to cf70392543065ca62813db6712a06df1c4f4ae9f (#9145)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-25 14:17:06 +00:00
dependabot[bot]
05aeb1c20d
build(deps): bump the metascraper group in /backend with 12 updates (#9136)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-25 14:47:47 +01:00
dependabot[bot]
003ec2bda0
build(deps-dev): bump sass-embedded from 1.97.2 to 1.97.3 (#9135)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 22:24:46 +00:00
dependabot[bot]
208a6dca01
build(deps): bump preview-email from 3.1.0 to 3.1.1 in /backend (#9138)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 20:30:49 +00:00
af497deb77
fix(webapp): allow running frontend tests locally (#9125) 2026-01-24 20:09:36 +00:00
dependabot[bot]
ba481547f1
build(deps): bump node from 25.3.0-alpine to 25.4.0-alpine in /webapp (#9133)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 19:41:50 +00:00
dependabot[bot]
9f4c105335
build(deps-dev): bump @cucumber/cucumber from 12.5.0 to 12.6.0 in the cypress group (#9134)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 18:38:52 +00:00
dependabot[bot]
8012d56dc8
build(deps): bump lodash from 4.17.21 to 4.17.23 in /backend (#9140)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 15:02:14 +00:00
dependabot[bot]
9d994a7554
build(deps-dev): bump prettier from 3.8.0 to 3.8.1 in /webapp (#9139)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 14:41:41 +00:00
dependabot[bot]
322d2aeb97
build(deps-dev): bump prettier from 3.8.0 to 3.8.1 in /backend (#9143)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 14:15:01 +00:00
dependabot[bot]
afee1033af
build(deps): bump actions/checkout from 6.0.1 to 6.0.2 (#9146)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 13:48:54 +00:00
dependabot[bot]
d358fdf6b4
build(deps): bump node from 25.3.0-alpine to 25.4.0-alpine in /backend (#9132)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-24 11:55:14 +00:00
150b318aab
feat(backend): admin creation command for production (#9057)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2026-01-19 18:36:20 +00:00
f0f9b7faec
fix(backend): fix permissions for GroupInviteCodes (#9121)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2026-01-19 18:14:17 +00:00
b22974031c
fix(backend): fix group-myRole field query (#9102)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2026-01-19 17:48:25 +00:00
mahula
0ca45dd06e
refactor(e2e): optimize step definitions loading with filepart pairing (#9122) 2026-01-19 15:00:40 +00:00
6a42d12fda
fix(webapp): fix cta-join-group, can crash when group is not defined (#9103) 2026-01-19 12:05:09 +00:00
b7604e9af5
fix(backend): fix active categories when inproperly configured (#9123)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2026-01-19 11:29:26 +00:00
3d00ae4e25
fix(webapp): fix local webapp tests (#9104)
Co-authored-by: mahula <lenzmath@posteo.de>
2026-01-18 11:55:40 +00:00
dependabot[bot]
fa71b0e189
build(deps-dev): bump the cypress group across 1 directory with 3 updates (#9058)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-18 12:29:03 +01:00
dependabot[bot]
855a049f90
build(deps): bump node from 25.2.1-alpine to 25.3.0-alpine in /webapp (#9105)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-18 00:12:19 +00:00
dependabot[bot]
679e4876bc
build(deps): bump actions/setup-node from 6.1.0 to 6.2.0 (#9107)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 23:45:25 +00:00
dependabot[bot]
e84a81bd2f
build(deps): bump node from 25.2.1-alpine to 25.3.0-alpine in /backend (#9106)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 23:25:20 +00:00
dependabot[bot]
34e547553e
build(deps): bump actions/cache from 5.0.1 to 5.0.2 (#9108)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-18 00:04:22 +01:00
dependabot[bot]
5aa298b3a2
build(deps-dev): bump eslint-plugin-n from 17.23.1 to 17.23.2 in /backend (#9110)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 22:29:23 +00:00
dependabot[bot]
626372a741
build(deps-dev): bump @types/lodash from 4.17.21 to 4.17.23 in /backend (#9111)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 22:04:58 +00:00
dependabot[bot]
a0ac5157a1
build(deps): bump @aws-sdk/lib-storage from 3.958.0 to 3.967.0 in /backend (#9113)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 21:43:30 +00:00
dependabot[bot]
083d81be89
build(deps-dev): bump eslint-plugin-prettier from 5.5.4 to 5.5.5 in /backend (#9114)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 21:22:21 +00:00
dependabot[bot]
721fd75288
build(deps-dev): bump @eslint-community/eslint-plugin-eslint-comments from 4.5.0 to 4.6.0 in /backend (#9120)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 20:57:08 +00:00
dependabot[bot]
7e6d79f1dc
build(deps-dev): bump prettier from 3.7.4 to 3.8.0 in /webapp (#9117)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 20:35:57 +00:00
dependabot[bot]
bc7e750e83
build(deps): bump ioredis from 5.9.1 to 5.9.2 in /backend (#9119)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 20:07:42 +00:00
dependabot[bot]
fbe98aa2b4
build(deps): bump @aws-sdk/client-s3 from 3.967.0 to 3.971.0 in /backend (#9118)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 19:46:46 +00:00
dependabot[bot]
7ae516cf85
build(deps-dev): bump eslint-plugin-prettier from 5.5.4 to 5.5.5 in /webapp (#9115)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 19:22:19 +00:00
dependabot[bot]
02bf7f0ab8
build(deps-dev): bump prettier from 3.7.4 to 3.8.0 in /backend (#9116)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 19:54:52 +01:00
dependabot[bot]
cc8ab95eaf
build(deps-dev): bump @types/node from 25.0.7 to 25.0.9 in /backend (#9112)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-17 17:59:37 +01:00
dependabot[bot]
017bfbc820
build(deps): bump the metascraper group in /backend with 12 updates (#9063)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 10:59:59 +00:00
dependabot[bot]
25eeb8d485
build(deps-dev): bump eslint-plugin-jest from 29.12.0 to 29.12.1 in /backend (#9090)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 10:32:48 +01:00
dependabot[bot]
eca7f5096e
build(deps): bump ioredis from 5.8.2 to 5.9.1 in /backend (#9095)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-14 09:02:33 +00:00
dependabot[bot]
9f581f4773
build(deps): bump @aws-sdk/client-s3 from 3.958.0 to 3.966.0 in /backend (#9100)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 10:43:05 +00:00
dependabot[bot]
b767e02263
build(deps): bump @aws-sdk/lib-storage from 3.933.0 to 3.958.0 in /backend (#9093)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 11:20:48 +01:00
dependabot[bot]
b01d5e5a27
build(deps-dev): bump @types/node from 25.0.3 to 25.0.5 in /backend (#9096)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 10:54:01 +01:00
dependabot[bot]
06a79225f3
build(deps): bump peter-evans/repository-dispatch from 46fabd2783425293d3f24bc1080da28d046e2dd3 to 09094272a794c6105029af051e3831908c649b6c (#9089)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-13 09:34:38 +01:00
dependabot[bot]
eaa9b34d58
build(deps): bump vue-advanced-chat from 2.0.11 to 2.1.2 in /webapp (#9084)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 15:54:02 +00:00
dependabot[bot]
c4fcd558e3
build(deps): bump nginx from 1.29.3-alpine to 1.29.4-alpine in /webapp (#9070)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 15:09:57 +00:00
dependabot[bot]
0fef81464f
build(deps): bump @aws-sdk/client-s3 from 3.933.0 to 3.958.0 in /backend (#9086)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 12:52:30 +00:00
dependabot[bot]
9c3d3e2fcd
build(deps-dev): bump @types/node from 24.10.1 to 25.0.3 in /backend (#9078)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 10:40:44 +00:00
dependabot[bot]
cbb57622f7
build(deps-dev): bump eslint-plugin-jest from 29.1.0 to 29.11.0 in /backend (#9087)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 11:19:47 +01:00
dependabot[bot]
861275aeda
build(deps): bump express from 5.1.0 to 5.2.1 in /backend (#9065)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 12:08:44 +01:00
dependabot[bot]
c0c396653f
build(deps-dev): bump @types/lodash from 4.17.20 to 4.17.21 in /backend (#9051)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 10:42:27 +00:00
dependabot[bot]
5642e0db2c
build(deps-dev): bump ts-jest from 29.4.5 to 29.4.6 in /backend (#9069)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 10:20:32 +00:00
dependabot[bot]
49f7118468
build(deps): bump validator from 13.15.23 to 13.15.26 in /webapp (#9083)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 09:37:50 +00:00
dependabot[bot]
9a0c97e6ce
build(deps): bump validator from 13.15.23 to 13.15.26 in /backend (#9080)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 09:10:01 +00:00
dependabot[bot]
1dd7fc3d75
build(deps): bump nodemailer from 7.0.10 to 7.0.12 in /backend (#9088)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 08:48:33 +00:00
dependabot[bot]
0e2d90c634
build(deps): bump actions/upload-artifact from 5.0.0 to 6.0.0 (#9072)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-27 09:26:57 +01:00
dependabot[bot]
56338422a2
build(deps): bump peter-evans/repository-dispatch from d2c43ab06ec1cddd2c2a0aae659681b8465ce87a to 46fabd2783425293d3f24bc1080da28d046e2dd3 (#9060)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 15:30:08 +00:00
dependabot[bot]
817ac7226e
build(deps-dev): bump prettier from 3.6.2 to 3.7.4 in /webapp (#9059)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 14:05:00 +00:00
dependabot[bot]
eb81c0b7e4
build(deps): bump docker/metadata-action from 5.9.0 to 5.10.0 (#9049)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 13:38:02 +00:00
dependabot[bot]
34aa894068
build(deps): bump actions/setup-node from 6.0.0 to 6.1.0 (#9061)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 14:17:19 +01:00
dependabot[bot]
d751e7090f
build(deps): bump gaurav-nelson/github-action-markdown-link-check from 1.0.16 to 1.0.17 (#8329)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 10:15:30 +00:00
dependabot[bot]
a9949e1147
build(deps): bump actions/cache from 4.3.0 to 5.0.1 (#9071)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-13 09:48:11 +00:00
dependabot[bot]
c78f8deee9
build(deps): bump actions/checkout from 5.0.0 to 6.0.1 (#9062)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-10 10:04:02 +00:00
dependabot[bot]
2cabe0f4d2
build(deps-dev): bump prettier from 3.6.2 to 3.7.4 in /backend (#9067)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-10 10:09:34 +01:00
dependabot[bot]
0ac7bf908c
build(deps): bump mime-types from 3.0.1 to 3.0.2 in /backend (#9044)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-22 14:54:04 +01:00
dependabot[bot]
0368676b26
build(deps): bump cross-env from 10.0.0 to 10.1.0 in /backend (#8943)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 16:52:07 +00:00
dependabot[bot]
cd7931b77b
build(deps): bump validator from 13.15.20 to 13.15.23 in /webapp (#9029)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 16:09:36 +00:00
dependabot[bot]
801131e351
build(deps-dev): bump nodemon from 3.1.10 to 3.1.11 in /backend (#9028)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 15:20:23 +01:00
dependabot[bot]
30d30a2f2d
build(deps): bump node from 25.1.0-alpine to 25.2.0-alpine in /backend (#9024)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 14:57:02 +01:00
dependabot[bot]
9dfd5e31ef
build(deps): bump node from 25.1.0-alpine to 25.2.0-alpine in /webapp (#9023)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-20 11:13:03 +00:00
dependabot[bot]
c86d816e56
build(deps): bump docker/metadata-action from 5.8.0 to 5.9.0 (#9014)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-19 17:51:36 +00:00
dependabot[bot]
de89810eae
build(deps-dev): bump cypress from 15.5.0 to 15.6.0 in the cypress group (#9016)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-19 17:13:53 +00:00
dependabot[bot]
9df61a752a
build(deps): bump bcryptjs from 3.0.2 to 3.0.3 in /backend (#9019)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-19 17:04:20 +01:00
dependabot[bot]
2410fa8527
build(deps): bump @aws-sdk/lib-storage from 3.917.0 to 3.922.0 in /backend (#9022)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:38:28 +00:00
dependabot[bot]
b5b7b5d78c
build(deps): bump peter-evans/repository-dispatch from 2c856c63feddee6147cab2f38801935b6a59a765 to d2c43ab06ec1cddd2c2a0aae659681b8465ce87a (#9025)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:16:35 +00:00
dependabot[bot]
00d8fd960d
build(deps): bump amannn/action-semantic-pull-request from e49f57ce06c1747542fce2243c7a98682384bc0e to 069817c298f23fab00a8f29a2e556a5eac0f6390 (#9026)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 18:56:58 +01:00
dependabot[bot]
caf95664b8
build(deps-dev): bump eslint-plugin-jest from 29.0.1 to 29.1.0 in /backend (#9027)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 03:50:46 +00:00
dependabot[bot]
66f35ca51d
build(deps): bump @aws-sdk/client-s3 from 3.922.0 to 3.932.0 in /backend (#9030)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 03:52:03 +01:00
dependabot[bot]
c6878f19f9
build(deps-dev): bump @types/node from 24.9.2 to 24.10.1 in /backend (#9031)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 01:57:53 +00:00
dependabot[bot]
421bfe6755
build(deps): bump validator from 13.15.20 to 13.15.23 in /backend (#9033)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-18 02:36:41 +01:00
592a8af42c
chore(release): v3.13.1 (#9003) 2025-11-01 15:37:40 +00:00
dependabot[bot]
a48510f349
build(deps): bump nginx from 1.29.2-alpine to 1.29.3-alpine in /webapp (#9005)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 15:11:44 +00:00
dependabot[bot]
a03e5d888b
build(deps): bump minimatch from 10.0.3 to 10.1.1 in /backend (#9009)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 14:31:33 +00:00
dependabot[bot]
7f7c56cec2
build(deps-dev): bump @types/node from 24.9.1 to 24.9.2 in /backend (#9010)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 14:05:19 +00:00
dependabot[bot]
77d8a5092b
build(deps): bump @aws-sdk/client-s3 from 3.917.0 to 3.922.0 in /backend (#9012)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 13:44:25 +00:00
60bda5a949
fix(webapp): fix map (#9004) 2025-11-01 13:09:44 +00:00
dependabot[bot]
ff2b6465db
build(deps): bump validator from 13.15.15 to 13.15.20 in /backend (#9007)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 09:25:26 +00:00
dependabot[bot]
72b4af395f
build(deps): bump validator from 13.15.15 to 13.15.20 in /webapp (#9011)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 10:04:11 +01:00
2130aa0d68
fix(webapp): always link compiled styleguide (#8998) 2025-10-31 16:36:51 +01:00
dependabot[bot]
1c7f2f27b5
build(deps-dev): bump the babel group with 2 updates (#8982)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-31 00:54:02 +00:00
dependabot[bot]
e2ef636cf8
build(deps): bump node from 24.10.0-alpine to 25.0.0-alpine in /backend (#8972)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-31 00:24:33 +00:00
3f69b70820
fix(workflow): cleanup when running e2e jobs aswell (#9001) 2025-10-31 00:02:39 +00:00
dependabot[bot]
e6244c848c
build(deps): bump node from 20.12.1-alpine to 25.0.0-alpine in /webapp (#8974)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-31 00:21:54 +01:00
0280ac7201
fix(workflow): clean up space on workflow runner machines (#9000) 2025-10-30 23:53:11 +01:00
09327ddc01
fix(docker): fix on build copy command failing when branding (#8996) 2025-10-30 21:16:14 +00:00
49e6f0b7e8
fix(backend): fix node25 compatibility (#8995) 2025-10-30 20:47:39 +00:00
c9b5c02862
fix(webapp): update nuxt to v2.15.8 (#8997) 2025-10-30 20:34:48 +01:00
52459b23f1
chore(release): v3.13.0 (#8991) 2025-10-28 12:06:32 +01:00
dependabot[bot]
737f548f38
build(deps-dev): bump cypress from 15.4.0 to 15.5.0 in the cypress group (#8983)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-26 00:47:36 +00:00
dependabot[bot]
1a29167f08
build(deps): bump actions/upload-artifact from 4.6.2 to 5.0.0 (#8981)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-26 02:20:47 +02:00
dependabot[bot]
06bd4f1ea4
build(deps): bump the metascraper group in /backend with 12 updates (#8985)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-26 00:59:20 +02:00
dependabot[bot]
bbb2a189db
build(deps): bump @aws-sdk/lib-storage from 3.908.0 to 3.913.0 in /backend (#8986)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-25 19:23:48 +00:00
dependabot[bot]
a5f720dba1
build(deps-dev): bump @types/node from 24.8.1 to 24.9.1 in /backend (#8987)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-25 19:01:48 +00:00
dependabot[bot]
3b93d255a6
build(deps): bump nodemailer from 7.0.9 to 7.0.10 in /backend (#8988)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-25 18:41:14 +00:00
dependabot[bot]
5b84b93a16
build(deps): bump @aws-sdk/client-s3 from 3.913.0 to 3.917.0 in /backend (#8989)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-25 18:19:49 +00:00
dependabot[bot]
1622c31010
build(deps): bump ioredis from 5.8.1 to 5.8.2 in /backend (#8990)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-25 19:59:53 +02:00
dependabot[bot]
09536ed0e8
build(deps): bump actions/setup-node from 5.0.0 to 6.0.0 (#8973)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-19 13:37:41 +02:00
dependabot[bot]
005e2569a1
build(deps-dev): bump @types/node from 24.7.2 to 24.8.1 in /backend (#8976)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-18 15:28:48 +02:00
dependabot[bot]
ed328e70d8
build(deps): bump @aws-sdk/client-s3 from 3.908.0 to 3.913.0 in /backend (#8978)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-18 14:56:48 +02:00
dependabot[bot]
d96f145e2b
build(deps): bump @aws-sdk/lib-storage from 3.896.0 to 3.905.0 in /backend (#8970)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-12 16:40:02 +00:00
dependabot[bot]
f3d36bb779
build(deps): bump ioredis from 5.8.0 to 5.8.1 in /backend (#8969)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-12 16:19:48 +00:00
dependabot[bot]
5e1d9e280a
build(deps): bump @aws-sdk/client-s3 from 3.901.0 to 3.908.0 in /backend (#8968)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-12 15:37:22 +02:00
dependabot[bot]
5bb8508df9
build(deps-dev): bump @types/node from 24.6.2 to 24.7.1 in /backend (#8967)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-12 12:36:59 +02:00
dependabot[bot]
1b0ef1f81b
build(deps): bump nodemailer from 7.0.6 to 7.0.9 in /backend (#8964)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 23:02:08 +00:00
dependabot[bot]
0042914231
build(deps-dev): bump ts-jest from 29.4.4 to 29.4.5 in /backend (#8963)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 22:41:30 +00:00
dependabot[bot]
3f216d84d7
build(deps-dev): bump eslint-plugin-jsonc from 2.20.1 to 2.21.0 in /backend (#8962)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 22:20:44 +00:00
dependabot[bot]
88ec6fdef0
build(deps-dev): bump the cypress group with 2 updates (#8961)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 15:20:31 +00:00
dependabot[bot]
d22479cfa2
build(deps): bump nginx from 1.29.1-alpine to 1.29.2-alpine in /webapp (#8960)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 12:45:14 +00:00
dependabot[bot]
ad5108996f
build(deps): bump node from 24.9.0-alpine to 24.10.0-alpine in /backend (#8959)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-11 02:19:54 +00:00
Wolfgang Huß
558e964c83
feat(webapp): add reason and call to action on post view page if commenting is disabled (#8958)
Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-10-10 19:21:07 +02:00
dependabot[bot]
2a7d2f10ed
build(deps-dev): bump dotenv from 17.2.2 to 17.2.3 (#8939)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-07 23:44:45 +00:00
b5895afe3e
refactor(e2e): remove packages not used on root folder (#8954) 2025-10-07 21:16:22 +02:00
1964ff3eb1
refactor(workflow): lint pr title scope e2e (#8955) 2025-10-07 16:40:04 +00:00
9fc2379090
fix(webapp): fix line-height in styleguide when generated (#8952)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-10-07 09:41:09 +00:00
1e19bd1be7
refactor(workflow): pr titles - allow scope styleguide (#8953)
Co-authored-by: mahula <lenzmath@posteo.de>
2025-10-07 08:13:53 +00:00
dependabot[bot]
98af683277
build(deps): bump peter-evans/repository-dispatch from de78ac1a711fc6f29e77338f843065faf5335227 to 66739071c2122a05106fc2a2c306fdaf33bb9cda (#8936)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:52:48 +00:00
dependabot[bot]
b40015d408
build(deps): bump @aws-sdk/client-s3 from 3.896.0 to 3.901.0 in /backend (#8942)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-06 19:19:41 +00:00
dependabot[bot]
1512167197
build(deps): bump cross-env from 10.0.0 to 10.1.0 in /webapp (#8944)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 09:09:36 +00:00
dependabot[bot]
263f35d2e0
build(deps): bump docker/login-action from 3.5.0 to 3.6.0 (#8937)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 10:30:57 +02:00
dependabot[bot]
05ab27e868
build(deps): bump amannn/action-semantic-pull-request from e7d011b07ef37e089bea6539210f6a0d360d8af9 to e49f57ce06c1747542fce2243c7a98682384bc0e (#8938)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 08:01:56 +00:00
dependabot[bot]
f49022e94d
build(deps-dev): bump @testing-library/jest-dom from 6.8.0 to 6.9.1 in /webapp (#8945)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 07:41:47 +00:00
dependabot[bot]
719457b896
build(deps-dev): bump jest from 30.1.3 to 30.2.0 in /backend (#8946)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 09:13:20 +02:00
dependabot[bot]
6d4fd54c30
build(deps-dev): bump @types/node from 24.5.2 to 24.6.2 in /backend (#8951)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 06:51:42 +00:00
dependabot[bot]
54aeca0375
build(deps): bump tslog from 4.9.3 to 4.10.2 in /backend (#8949)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-04 08:31:00 +02:00
ffffd9e15f
feat(other): deploy styleguide scripts and description (#8935) 2025-10-02 17:57:40 +02:00
b06b29b858
feat(webapp): bind local styleguide & fix maintenance page (#8933) 2025-09-30 14:54:43 +02:00
ace5e9a89e
refactor(other): include styleguide repo including all commits (#8932) 2025-09-29 19:29:41 +02:00
c6fe18f1f7
Merge branch 'master' into include-styleguide-repo 2025-09-28 19:33:28 +02:00
f9af98da97
included whole styleguide repository including all commits instead of a submodule 2025-09-28 19:28:22 +02:00
d9ed8a42b5
remove styleguide
remove .gitmodule
2025-09-28 18:58:59 +02:00
52da131ee4
Merge pull request #2 from Ocelot-Social-Community/remove-gitattributes
fix(other): remove gitattributes
2025-09-28 18:56:12 +02:00
6d9529a021
remove git attributes 2025-09-28 18:51:53 +02:00
32eca68520
Merge pull request #1 from Ocelot-Social-Community/node24-support
Node24 support
2025-09-27 14:46:06 +02:00
e4717e0d89
fix(backend): fix potential leak in updateOnlineStatus (#8923)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-09-27 14:37:12 +02:00
33ca59343a
docs(docu): describe current and desired architecture of services (#8850)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-09-27 12:09:47 +00:00
dependabot[bot]
1044231e4e
build(deps): bump node from 24.8.0-alpine to 24.9.0-alpine in /backend (#8926)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-27 10:10:03 +00:00
dependabot[bot]
2bf39f5ad0
build(deps): bump actions/cache from 4.2.4 to 4.3.0 (#8927)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-27 09:52:41 +00:00
dependabot[bot]
68030dc5ec
build(deps): bump @aws-sdk/lib-storage from 3.888.0 to 3.896.0 in /backend (#8929)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-27 11:30:46 +02:00
dependabot[bot]
ced52e30db
build(deps): bump ioredis from 5.7.0 to 5.8.0 in /backend (#8931)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-27 10:46:45 +02:00
dependabot[bot]
35c3dd3bbc
build(deps-dev): bump the cypress group across 1 directory with 2 updates (#8925)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 20:23:30 +00:00
dependabot[bot]
768d80f2a1
build(deps): bump peter-evans/repository-dispatch from 7279ea08e172078316f128ed1118df40d2904f0f to de78ac1a711fc6f29e77338f843065faf5335227 (#8909)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 19:01:29 +00:00
dependabot[bot]
f7dc901c2a
build(deps): bump metascraper from 5.49.2 to 5.49.4 in /backend in the metascraper group (#8911)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 15:18:44 +00:00
dependabot[bot]
fadc37a49c
build(deps-dev): bump ts-jest from 29.4.1 to 29.4.4 in /backend (#8912)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 17:00:40 +02:00
21c253b690
remove docs folder 2025-09-26 15:36:41 +02:00
08c8cfe42c
fix build 2025-09-26 15:31:56 +02:00
59dd435138
update node-sass 2025-09-26 15:01:10 +02:00
dependabot[bot]
158e1ee4e0
build(deps-dev): bump @types/node from 24.4.0 to 24.5.2 in /backend (#8913)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-26 12:54:08 +02:00
dependabot[bot]
2350e594d4
build(deps): bump graphql-middleware from 4.0.2 to 4.0.3 in /backend (#8915)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 20:38:57 +00:00
30560bff69
fix(webapp): fix user avatar & post image urls (#8921)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-09-25 22:19:27 +02:00
dependabot[bot]
4fc71fc495
build(deps): bump @sentry/node from 5.15.4 to 5.30.0 in /backend (#8916)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 11:12:44 +00:00
dependabot[bot]
3ca00c83c0
build(deps-dev): bump eslint-plugin-n from 17.21.3 to 17.23.1 in /backend (#8918)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 10:52:37 +00:00
dependabot[bot]
9f91ff1124
build(deps): bump @aws-sdk/client-s3 from 3.888.0 to 3.893.0 in /backend (#8919)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-25 10:00:42 +00:00
Moriz Wahl
a15351aa42
feat(webapp): dynamic static pages (#8920)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-09-25 11:16:07 +02:00
Moriz Wahl
9a4f7326c1
fix(webapp): no distance to me on own profile (#8907)
Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-09-22 23:59:18 +02:00
Wolfgang Huß
2ed92c0a78
feat(webapp): post page group link improvement (#8883) 2025-09-20 10:15:04 +00:00
de65a380ab
fix(backend): fix naming of PRIVATEKEY (#8905) 2025-09-20 11:47:29 +02:00
45d2283138
refactor(backend): externalize all remaining queries in spec files (#8902)
* refactor: externalize all remaining queries in spec files

* User with different queries due to permissions

* fix notification:groups

* fix hashtagsmiddleware

* fix blockedUsers

* fix softDeleteMiddleware

* fix shouts.spec

* fix userInteractions spec

* fix mutedUsers spec

* seocialMedia spec

* fix notificationMiddleware.spec

* fix user.spce & fix undefined activeCategories

* fix notifications.spec

* fix userInteractions.spec

* fix blockedUsers & mutedUsers spec

* remove unused comment

* fix locations spec

* fix orderByMiddleware & spec

* fix lint

* fix shout spec
2025-09-18 17:43:15 +02:00
2c285d6bfb
v3.12.2 (#8903) 2025-09-15 10:22:16 +00:00
4ef93e0aad
fix(backend): statistics for admin only (#8887)
* statistics for admin only

* adjust tests
2025-09-15 09:51:00 +00:00
d414b56344
fix(backend): fix minio settings (#8878)
* fix minio settings

* remove port exposure on 9000
2025-09-15 09:20:09 +00:00
c4cd51ee65
fix group images (#8901) 2025-09-15 08:51:06 +00:00
dependabot[bot]
ef5cdbc2cb
build(deps): bump node from 24.7.0-alpine to 24.8.0-alpine in /backend (#8891)
Bumps node from 24.7.0-alpine to 24.8.0-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24.8.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 23:39:23 +00:00
dependabot[bot]
7906a474ca
build(deps-dev): bump the cypress group with 2 updates (#8892)
Bumps the cypress group with 2 updates: [@badeball/cypress-cucumber-preprocessor](https://github.com/badeball/cypress-cucumber-preprocessor) and [cypress](https://github.com/cypress-io/cypress).


Updates `@badeball/cypress-cucumber-preprocessor` from 23.0.0 to 23.1.0
- [Release notes](https://github.com/badeball/cypress-cucumber-preprocessor/releases)
- [Changelog](https://github.com/badeball/cypress-cucumber-preprocessor/blob/master/CHANGELOG.md)
- [Commits](https://github.com/badeball/cypress-cucumber-preprocessor/compare/v23.0.0...v23.1.0)

Updates `cypress` from 15.1.0 to 15.2.0
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v15.1.0...v15.2.0)

---
updated-dependencies:
- dependency-name: "@badeball/cypress-cucumber-preprocessor"
  dependency-version: 23.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cypress
- dependency-name: cypress
  dependency-version: 15.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-15 01:15:21 +02:00
dependabot[bot]
b7842dc793
build(deps): bump the metascraper group in /backend with 12 updates (#8894)
Bumps the metascraper group in /backend with 12 updates:

| Package | From | To |
| --- | --- | --- |
| [metascraper](https://github.com/microlinkhq/metascraper) | `5.49.1` | `5.49.2` |
| [metascraper-author](https://github.com/microlinkhq/metascraper) | `5.49.1` | `5.49.2` |
| [metascraper-date](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-date) | `5.49.1` | `5.49.2` |
| [metascraper-description](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-description) | `5.49.1` | `5.49.2` |
| [metascraper-image](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-image) | `5.49.1` | `5.49.2` |
| [metascraper-lang](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-lang) | `5.49.1` | `5.49.2` |
| [metascraper-logo](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-logo) | `5.49.1` | `5.49.2` |
| [metascraper-publisher](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-publisher) | `5.49.1` | `5.49.2` |
| [metascraper-title](https://github.com/microlinkhq/metascraper) | `5.49.1` | `5.49.2` |
| [metascraper-url](https://github.com/microlinkhq/metascraper) | `5.49.1` | `5.49.2` |
| [metascraper-video](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-video) | `5.49.1` | `5.49.2` |
| [metascraper-youtube](https://github.com/microlinkhq/metascraper/tree/HEAD/packages/metascraper-youtube) | `5.49.1` | `5.49.2` |


Updates `metascraper` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/compare/v5.49.1...v5.49.2)

Updates `metascraper-author` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/compare/v5.49.1...v5.49.2)

Updates `metascraper-date` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-date/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-date)

Updates `metascraper-description` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-description/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-description)

Updates `metascraper-image` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-image/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-image)

Updates `metascraper-lang` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-lang/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-lang)

Updates `metascraper-logo` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-logo/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-logo)

Updates `metascraper-publisher` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-publisher/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-publisher)

Updates `metascraper-title` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/compare/v5.49.1...v5.49.2)

Updates `metascraper-url` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/compare/v5.49.1...v5.49.2)

Updates `metascraper-video` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-video/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-video)

Updates `metascraper-youtube` from 5.49.1 to 5.49.2
- [Release notes](https://github.com/microlinkhq/metascraper/releases)
- [Changelog](https://github.com/microlinkhq/metascraper/blob/master/packages/metascraper-youtube/CHANGELOG.md)
- [Commits](https://github.com/microlinkhq/metascraper/commits/v5.49.2/packages/metascraper-youtube)

---
updated-dependencies:
- dependency-name: metascraper
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-author
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-date
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-description
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-image
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-lang
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-logo
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-publisher
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-title
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-url
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-video
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
- dependency-name: metascraper-youtube
  dependency-version: 5.49.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: metascraper
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 21:07:07 +02:00
dependabot[bot]
f5a5b63fff
build(deps): bump @aws-sdk/lib-storage in /backend (#8895)
Bumps [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) from 3.872.0 to 3.883.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.883.0/lib/lib-storage)

---
updated-dependencies:
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.883.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 20:09:09 +02:00
dependabot[bot]
b506052277
build(deps): bump @aws-sdk/client-s3 from 3.883.0 to 3.888.0 in /backend (#8897)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.883.0 to 3.888.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.888.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.888.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 18:25:38 +02:00
dependabot[bot]
502ae10a15
build(deps-dev): bump @types/node from 24.3.1 to 24.3.3 in /backend (#8898)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.3.1 to 24.3.3.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.3.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-14 13:54:18 +00:00
00e718b12f
v3.12.1 (#8900) 2025-09-13 12:02:39 +00:00
Wolfgang Huß
d9a7c1adc5
feat(backend): improve e-mail deliverability with sender name (#8888)
* Avoid early html encoding for the remaining '='

* Make 'EMAIL_DEFAULT_SENDER' required env

* Implement sender and recipient name on send e-mails nodemailer conform

* Fix e-mail snapshots
2025-09-13 11:39:39 +00:00
ebb8ef4f0e
remove PRIVATE_KEY_PASSPHRASE from config and remove its requirement (#8889) 2025-09-13 10:04:45 +00:00
047070c5b3
fix s3 migration (#8890) 2025-09-13 11:48:20 +02:00
Wolfgang Huß
985a8c3720
fix(backend): fix e-mail character encoding (#8886)
* Improve e-mail base design

* Refine e-mail design

* Adjust e-mail snapshots

* Avoid early html encoding for all parameters in locals

* Avoid early html encoding for all '= t()'

* Avoid early html encoding for the remaining '='
2025-09-11 16:18:15 +02:00
Wolfgang Huß
d437c6d7f4
feat(backend): improve e-mail base design (#8884)
* Improve e-mail base design

* Refine e-mail design

* Adjust e-mail snapshots
2025-09-11 13:04:31 +02:00
66b5e61c15
refactor(backend): test block & unblock user (#8879)
* queries

* test block users & small refactor on the resolver

* require 92% coverage (+2%)

* update according to review

* use cypher instead of neode
2025-09-10 18:26:28 +02:00
380d3401c0
update snapshots (#8885) 2025-09-10 15:05:57 +00:00
1e64590099
renamed resolver specs to make it easier to find the resolver (#8880) 2025-09-10 09:32:55 +00:00
74f6c5b329
refactor(backend): externalize gql queries in backend specs (#8881)
* externalize gql queries in backend specs

* externalize all queries & mutations where easily possible

missing change

* rename old queries & remove unnecessary function call

* fix tests - notifications

* fix tests - moderation

* remove _CreatePostMutation file

* remove _filterPosts & _postQuery files
2025-09-08 10:17:01 +00:00
dependabot[bot]
dbae0862f9
build(deps): bump node from 24.6.0-alpine to 24.7.0-alpine in /backend (#8851)
Bumps node from 24.6.0-alpine to 24.7.0-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24.7.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 21:31:49 +02:00
dependabot[bot]
bbd233835e
build(deps): bump peter-evans/repository-dispatch (#8861)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 0ee9de00feb82e6165438c503f0bc29f628b8317 to 7279ea08e172078316f128ed1118df40d2904f0f.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](0ee9de00fe...7279ea08e1)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 7279ea08e172078316f128ed1118df40d2904f0f
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 21:04:32 +02:00
dependabot[bot]
2a8f3f672f
build(deps): bump actions/setup-node from 4.4.0 to 5.0.0 (#8862)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 5.0.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v4.4.0...a0853c24544627f65ddf259abe73b1d18a591444)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 20:45:23 +02:00
dependabot[bot]
a6c0044216
build(deps-dev): bump cypress from 15.0.0 to 15.1.0 in the cypress group (#8863)
Bumps the cypress group with 1 update: [cypress](https://github.com/cypress-io/cypress).


Updates `cypress` from 15.0.0 to 15.1.0
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v15.0.0...v15.1.0)

---
updated-dependencies:
- dependency-name: cypress
  dependency-version: 15.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 20:03:17 +02:00
dependabot[bot]
cfefb4c35c
build(deps-dev): bump dotenv from 17.2.1 to 17.2.2 (#8865)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.1 to 17.2.2.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.1...v17.2.2)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 15:42:01 +00:00
dependabot[bot]
f480e7c054
build(deps-dev): bump jest from 30.0.5 to 30.1.3 in /backend (#8866)
Bumps [jest](https://github.com/jestjs/jest/tree/HEAD/packages/jest) from 30.0.5 to 30.1.3.
- [Release notes](https://github.com/jestjs/jest/releases)
- [Changelog](https://github.com/jestjs/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jestjs/jest/commits/v30.1.3/packages/jest)

---
updated-dependencies:
- dependency-name: jest
  dependency-version: 30.1.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 15:13:03 +00:00
dependabot[bot]
5e9581de84
build(deps-dev): bump @types/node from 24.3.0 to 24.3.1 in /backend (#8867)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.3.0 to 24.3.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.3.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 14:53:00 +00:00
dependabot[bot]
fc313e2a16
build(deps): bump nodemailer from 7.0.5 to 7.0.6 in /backend (#8868)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.5 to 7.0.6.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.5...v7.0.6)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 13:40:27 +00:00
dependabot[bot]
ce52bc951a
build(deps-dev): bump @babel/core in the babel group (#8872)
Bumps the babel group with 1 update: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core).


Updates `@babel/core` from 7.28.3 to 7.28.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.4/packages/babel-core)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.28.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 15:20:03 +02:00
dependabot[bot]
b277382ae3
build(deps): bump @aws-sdk/client-s3 from 3.873.0 to 3.883.0 in /backend (#8876)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.873.0 to 3.883.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.883.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.883.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-06 14:23:13 +02:00
9bc327e675
remove frontend and all related services, scripts and code (#8860) 2025-09-05 16:30:08 +02:00
Wolfgang Huß
c1a05bc73b
feat(webapp): add location distance in group profile (#8846)
* Add distance to group profile if location is defined

* Fix snapshot tests in 'webapp/pages/groups/_id/_slug.spec.js'

* Fix prop Vue warning in test 'webapp/pages/groups/_id/_slug.spec.js'

* reuse locationFragement for groups

* use better order on locationFragement parameters

* moved LocationInfo Component to correct place as its used in Group & User related context

* use size prop

* reduce changeset

* update snapshots

* remove computed property & simplify component

* more tests & updated snapshots

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-08-26 10:34:30 +02:00
dependabot[bot]
f61850980e
build(deps-dev): bump @cucumber/cucumber in the cypress group (#8841)
Bumps the cypress group with 1 update: [@cucumber/cucumber](https://github.com/cucumber/cucumber-js).


Updates `@cucumber/cucumber` from 12.1.0 to 12.2.0
- [Release notes](https://github.com/cucumber/cucumber-js/releases)
- [Changelog](https://github.com/cucumber/cucumber-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cucumber/cucumber-js/compare/v12.1.0...v12.2.0)

---
updated-dependencies:
- dependency-name: "@cucumber/cucumber"
  dependency-version: 12.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 22:47:10 +00:00
dependabot[bot]
f7345a2772
build(deps): bump @aws-sdk/client-s3 from 3.872.0 to 3.873.0 in /backend (#8842)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.872.0 to 3.873.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.873.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.873.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 23:34:35 +02:00
dependabot[bot]
9aeb619184
build(deps): bump amannn/action-semantic-pull-request (#8843)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 335288255954904a41ddda8947c8f2c844b8bfeb to e7d011b07ef37e089bea6539210f6a0d360d8af9.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md)
- [Commits](3352882559...e7d011b07e)

---
updated-dependencies:
- dependency-name: amannn/action-semantic-pull-request
  dependency-version: e7d011b07ef37e089bea6539210f6a0d360d8af9
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 17:41:40 +00:00
dependabot[bot]
51df143a15
build(deps-dev): bump @testing-library/jest-dom in /webapp (#8845)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.7.0...v6.8.0)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.8.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-25 17:45:52 +02:00
b92dcd3534
location distance in profile (#8835)
remove unused classes

margin bottom

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-08-23 09:45:33 +00:00
3e58a1016a
fix(backend): fix notification author url (#8837)
* fix notification author url

* updated snapshots
2025-08-22 03:31:56 +02:00
dependabot[bot]
ea080db3f5
build(deps-dev): bump eslint-config-prettier in /webapp (#8775)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.2 to 10.1.8.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.2...v10.1.8)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-version: 10.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 00:32:40 +02:00
30406411f8
revert update semantic-pull-requests-6.0.1 to v5 (#8840) 2025-08-21 16:43:55 +02:00
80ddfdf532
pin v6.0.1 for semantic-pull-requests (#8838) 2025-08-21 13:44:19 +00:00
dependabot[bot]
69bfd90175
build(deps-dev): bump the cypress group across 1 directory with 2 updates (#8839)
Bumps the cypress group with 2 updates in the / directory: [@badeball/cypress-cucumber-preprocessor](https://github.com/badeball/cypress-cucumber-preprocessor) and [cypress](https://github.com/cypress-io/cypress).


Updates `@badeball/cypress-cucumber-preprocessor` from 22.2.0 to 23.0.0
- [Release notes](https://github.com/badeball/cypress-cucumber-preprocessor/releases)
- [Changelog](https://github.com/badeball/cypress-cucumber-preprocessor/blob/master/CHANGELOG.md)
- [Commits](https://github.com/badeball/cypress-cucumber-preprocessor/compare/v22.2.0...v23.0.0)

Updates `cypress` from 14.5.3 to 15.0.0
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v14.5.3...v15.0.0)

---
updated-dependencies:
- dependency-name: "@badeball/cypress-cucumber-preprocessor"
  dependency-version: 23.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: cypress
- dependency-name: cypress
  dependency-version: 15.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 10:37:07 +00:00
c0ad753698
revert fed951b3 amannn/action-semantic-pull-request (#8836) 2025-08-21 11:54:41 +02:00
dependabot[bot]
5d42daedd6
build(deps-dev): bump eslint-plugin-prettier in /webapp (#8816)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.5.3 to 5.5.4.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.3...v5.5.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 09:53:33 +00:00
dependabot[bot]
db4a808beb
build(deps): bump actions/cache from 4.2.3 to 4.2.4 (#8818)
Bumps [actions/cache](https://github.com/actions/cache) from 4.2.3 to 4.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](5a3ec84eff...0400d5f644)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 4.2.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 09:21:21 +00:00
dependabot[bot]
86ebeb9a50
build(deps): bump docker/login-action from 3.4.0 to 3.5.0 (#8819)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](74a5d14239...184bdaa072)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 3.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 08:42:26 +00:00
dependabot[bot]
712afc05a8
build(deps): bump @aws-sdk/lib-storage in /backend (#8821)
Bumps [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) from 3.850.0 to 3.859.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.859.0/lib/lib-storage)

---
updated-dependencies:
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.859.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 07:49:34 +00:00
dependabot[bot]
b33e1e9236
build(deps): bump @aws-sdk/client-s3 from 3.859.0 to 3.864.0 in /backend (#8823)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.859.0 to 3.864.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.864.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.864.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 07:13:59 +00:00
dependabot[bot]
bd1d23dc22
build(deps-dev): bump eslint-plugin-prettier in /backend (#8824)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.5.3 to 5.5.4.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.3...v5.5.4)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.5.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 08:55:12 +02:00
dependabot[bot]
b69ff178ec
build(deps-dev): bump @types/node from 24.1.0 to 24.3.0 in /backend (#8826)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.1.0 to 24.3.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 02:17:34 +02:00
dependabot[bot]
3968c9d742
build(deps-dev): bump the babel group with 3 updates (#8827)
Bumps the babel group with 3 updates: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core), [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) and [@babel/register](https://github.com/babel/babel/tree/HEAD/packages/babel-register).


Updates `@babel/core` from 7.28.0 to 7.28.3
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.3/packages/babel-core)

Updates `@babel/preset-env` from 7.28.0 to 7.28.3
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.3/packages/babel-preset-env)

Updates `@babel/register` from 7.27.1 to 7.28.3
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.28.3/packages/babel-register)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.28.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/preset-env"
  dependency-version: 7.28.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/register"
  dependency-version: 7.28.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 22:50:58 +00:00
dependabot[bot]
7bbcdf4fca
build(deps): bump node from 24.4.1-alpine to 24.6.0-alpine in /backend (#8828)
Bumps node from 24.4.1-alpine to 24.6.0-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24.6.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-21 00:26:29 +02:00
dependabot[bot]
0fa09080de
build(deps): bump peter-evans/repository-dispatch (#8829)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 81f328ec1608a441b4898147a8da7b97a3430d69 to 0ee9de00feb82e6165438c503f0bc29f628b8317.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](81f328ec16...0ee9de00fe)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 0ee9de00feb82e6165438c503f0bc29f628b8317
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 17:07:57 +00:00
dependabot[bot]
fed951b3d2
build(deps): bump amannn/action-semantic-pull-request (#8830)
Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 335288255954904a41ddda8947c8f2c844b8bfeb to fdd4d3ddf614fbcd8c29e4b106d3bbe0cb2c605d.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md)
- [Commits](3352882559...fdd4d3ddf6)

---
updated-dependencies:
- dependency-name: amannn/action-semantic-pull-request
  dependency-version: fdd4d3ddf614fbcd8c29e4b106d3bbe0cb2c605d
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 15:01:31 +00:00
dependabot[bot]
5006680a9e
build(deps): bump actions/checkout from 4.2.2 to 5.0.0 (#8831)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 5.0.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.2.2...08c6903cd8c0fde910a37f88322edcfb5dd907a8)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 5.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 14:42:59 +00:00
31c6446a38
v3.12.0 (#8834) 2025-08-20 15:04:55 +02:00
dependabot[bot]
7d1dea2e77
build(deps-dev): bump @testing-library/jest-dom in /webapp (#8833)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.4 to 6.7.0.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.4...v6.7.0)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-20 12:13:01 +00:00
Robert Schäfer
00da9e8ecb
feat(backend): resize images with imagor (#8558)
* feat(backend): resize images with imagor

Open questions:
* Do we have external URLs for images? E.g. we have them for seeds. But
  in production?

* Do we want to apply image transformations on these as well? My current
implementation does not apply image transformations as of now. If we
want to do that, we will also expose internal URLs in the kubernetes
Cluster to the S3 endpoint to the client.

TODOs:
* The chat component is using a fixed size for all avatars at the moment.
Maybe we can pair-program on this how to implement responsive images in
this component library.

Commits:
* do not replace upload domain url in the database

* fix all webapp specs

* refactor: remove behaviour we won't need

We don't want to apply image transformations on files, right?

* refactor: replace the domain on read not on write

* wip: webapp fixes

* refactor(backend): add another url to config

I've given up. There seems to be no nice way to tell the minio to return
a location which differs from it's host name.

* refactor: add test for s3Service

* refactor(backend): proxy minio via backend in local development

Commits:
* provide tests for message attachments
* remove S3_PUBLIC_URL config value

* refactor: follow @ulfgebhardt's review

* add missing environment variable

---------

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-08-19 10:11:12 +02:00
Wolfgang Huß
abb9d944f2
fix(webapp): fixes console warning by adding profile list filter locales (#8810)
* Fix console warning by adding 'common.filter' to locales

* Make 'common.filter' ident in component 'ProfileList.vue' responsive and remove default value
2025-08-07 14:22:41 +02:00
04dec08d04
fix(backend): delete follow relations for deleted users (#8805)
* delete follows

* migration-deleted-user-follows

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-08-07 10:20:32 +00:00
1612d03b52
fix(backend): replace slug package with slugify (#8807)
* replace slug with slugify

* replace slug with slugify in root package.json

* remove undocumented characters

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-08-07 09:44:19 +00:00
e0017bc4dd
fix(backend): update jest packages (#8806)
* update jest & related packages

* fix deprecation errors
2025-08-05 03:57:02 +00:00
dependabot[bot]
f7f3938855
build(deps-dev): bump the babel group across 1 directory with 2 updates (#8629)
Bumps the babel group with 2 updates in the / directory: [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) and [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env).


Updates `@babel/core` from 7.27.1 to 7.27.4
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.4/packages/babel-core)

Updates `@babel/preset-env` from 7.27.1 to 7.27.2
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.27.2/packages/babel-preset-env)

---
updated-dependencies:
- dependency-name: "@babel/core"
  dependency-version: 7.27.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
- dependency-name: "@babel/preset-env"
  dependency-version: 7.27.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: babel
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-05 01:02:59 +00:00
dependabot[bot]
528b9292be
build(deps-dev): bump eslint-plugin-import in /webapp (#8700)
Bumps [eslint-plugin-import](https://github.com/import-js/eslint-plugin-import) from 2.31.0 to 2.32.0.
- [Release notes](https://github.com/import-js/eslint-plugin-import/releases)
- [Changelog](https://github.com/import-js/eslint-plugin-import/blob/main/CHANGELOG.md)
- [Commits](https://github.com/import-js/eslint-plugin-import/compare/v2.31.0...v2.32.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-import
  dependency-version: 2.32.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 22:50:21 +00:00
dependabot[bot]
8fdabd57a3
build(deps-dev): bump prettier from 3.5.3 to 3.6.2 in /webapp (#8734)
Bumps [prettier](https://github.com/prettier/prettier) from 3.5.3 to 3.6.2.
- [Release notes](https://github.com/prettier/prettier/releases)
- [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/prettier/compare/3.5.3...3.6.2)

---
updated-dependencies:
- dependency-name: prettier
  dependency-version: 3.6.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 19:22:12 +00:00
dependabot[bot]
3237c2fcb5
build(deps-dev): bump eslint-config-prettier in /backend (#8767)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 10.1.5 to 10.1.8.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v10.1.5...v10.1.8)

---
updated-dependencies:
- dependency-name: eslint-config-prettier
  dependency-version: 10.1.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 18:48:55 +00:00
dependabot[bot]
5e192aef3e
build(deps): bump peter-evans/repository-dispatch (#8797)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 5a3edc67490343006aa8cc8e4a7c69ef6094d733 to 81f328ec1608a441b4898147a8da7b97a3430d69.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](5a3edc6749...81f328ec16)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 81f328ec1608a441b4898147a8da7b97a3430d69
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 20:26:39 +02:00
dependabot[bot]
77a45810e0
build(deps): bump docker/metadata-action from 5.7.0 to 5.8.0 (#8796)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.7.0 to 5.8.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](902fa8ec7d...c1e51972af)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 5.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 17:06:53 +00:00
daabb4024c
fix(webapp): invalidate cache (#8763)
* invalidate cache by attaching the ocelot version in the js chuck filenames

* petter adjust js chunk name to the nuxt default, also attach version to css files
2025-08-04 16:16:01 +00:00
dependabot[bot]
754efa5197
build(deps-dev): bump @testing-library/jest-dom in /webapp (#8803)
Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.6.3 to 6.6.4.
- [Release notes](https://github.com/testing-library/jest-dom/releases)
- [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md)
- [Commits](https://github.com/testing-library/jest-dom/compare/v6.6.3...v6.6.4)

---
updated-dependencies:
- dependency-name: "@testing-library/jest-dom"
  dependency-version: 6.6.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 13:37:08 +00:00
dependabot[bot]
32bfacd0d6
build(deps-dev): bump eslint-plugin-n in /backend (#8799)
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.21.0 to 17.21.3.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.21.0...v17.21.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-version: 17.21.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 15:11:53 +02:00
dependabot[bot]
7a2d9e637d
build(deps): bump ioredis from 5.6.1 to 5.7.0 in /backend (#8798)
Bumps [ioredis](https://github.com/luin/ioredis) from 5.6.1 to 5.7.0.
- [Release notes](https://github.com/luin/ioredis/releases)
- [Changelog](https://github.com/redis/ioredis/blob/main/CHANGELOG.md)
- [Commits](https://github.com/luin/ioredis/compare/v5.6.1...v5.7.0)

---
updated-dependencies:
- dependency-name: ioredis
  dependency-version: 5.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 12:30:12 +02:00
dependabot[bot]
02b348912b
build(deps): bump @aws-sdk/client-s3 from 3.850.0 to 3.859.0 in /backend (#8800)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.850.0 to 3.859.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.859.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.859.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 11:56:17 +02:00
dependabot[bot]
c674fae5e1
build(deps-dev): bump @types/request from 2.48.12 to 2.48.13 in /backend (#8801)
Bumps [@types/request](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/request) from 2.48.12 to 2.48.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/request)

---
updated-dependencies:
- dependency-name: "@types/request"
  dependency-version: 2.48.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-04 10:48:16 +02:00
dependabot[bot]
3357a331fb
build(deps-dev): bump eslint-plugin-prettier in /backend (#8772)
Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 5.5.1 to 5.5.3.
- [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-plugin-prettier/compare/v5.5.1...v5.5.3)

---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.5.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 22:33:13 +00:00
dependabot[bot]
599b8d03e1
build(deps-dev): bump eslint-plugin-prettier in /webapp (#8776)
---
updated-dependencies:
- dependency-name: eslint-plugin-prettier
  dependency-version: 5.5.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 12:29:09 +02:00
dependabot[bot]
97f64898d9
build(deps-dev): bump the cypress group with 2 updates (#8777)
Bumps the cypress group with 2 updates: [@cucumber/cucumber](https://github.com/cucumber/cucumber-js) and [cypress](https://github.com/cypress-io/cypress).


Updates `@cucumber/cucumber` from 11.3.0 to 12.0.0
- [Release notes](https://github.com/cucumber/cucumber-js/releases)
- [Changelog](https://github.com/cucumber/cucumber-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/cucumber/cucumber-js/compare/v11.3.0...v12.0.0)

Updates `cypress` from 14.5.1 to 14.5.2
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v14.5.1...v14.5.2)

---
updated-dependencies:
- dependency-name: "@cucumber/cucumber"
  dependency-version: 12.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: cypress
- dependency-name: cypress
  dependency-version: 14.5.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-31 11:55:57 +02:00
dependabot[bot]
08e35bdc8b
build(deps-dev): bump dotenv from 17.2.0 to 17.2.1 (#8782)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.2.0 to 17.2.1.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.2.0...v17.2.1)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 12:45:14 +00:00
dependabot[bot]
3f8441c700
build(deps): bump cheerio from 1.1.0 to 1.1.2 in /backend (#8783)
Bumps [cheerio](https://github.com/cheeriojs/cheerio) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/cheeriojs/cheerio/releases)
- [Commits](https://github.com/cheeriojs/cheerio/compare/v1.1.0...v1.1.2)

---
updated-dependencies:
- dependency-name: cheerio
  dependency-version: 1.1.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 14:21:56 +02:00
dependabot[bot]
56aa515bca
build(deps): bump linkifyjs from 4.3.1 to 4.3.2 in /backend (#8786)
Bumps [linkifyjs](https://github.com/nfrasser/linkifyjs/tree/HEAD/packages/linkifyjs) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/nfrasser/linkifyjs/releases)
- [Changelog](https://github.com/nfrasser/linkifyjs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nfrasser/linkifyjs/commits/v4.3.2/packages/linkifyjs)

---
updated-dependencies:
- dependency-name: linkifyjs
  dependency-version: 4.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 10:14:26 +00:00
dependabot[bot]
a174600613
build(deps): bump linkify-html from 4.3.1 to 4.3.2 in /backend (#8789)
Bumps [linkify-html](https://github.com/nfrasser/linkifyjs/tree/HEAD/packages/linkify-html) from 4.3.1 to 4.3.2.
- [Release notes](https://github.com/nfrasser/linkifyjs/releases)
- [Changelog](https://github.com/nfrasser/linkifyjs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nfrasser/linkifyjs/commits/v4.3.2/packages/linkify-html)

---
updated-dependencies:
- dependency-name: linkify-html
  dependency-version: 4.3.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-30 09:53:04 +00:00
dependabot[bot]
b5b0dcd9c1
build(deps): bump @aws-sdk/lib-storage in /backend (#8769)
Bumps [@aws-sdk/lib-storage](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/lib/lib-storage) from 3.842.0 to 3.844.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/lib/lib-storage/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.844.0/lib/lib-storage)

---
updated-dependencies:
- dependency-name: "@aws-sdk/lib-storage"
  dependency-version: 3.844.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 21:32:13 +00:00
dependabot[bot]
a725ae7e08
build(deps-dev): bump cross-env from 7.0.3 to 10.0.0 (#8781)
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.3 to 10.0.0.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.3...v10.0.0)

---
updated-dependencies:
- dependency-name: cross-env
  dependency-version: 10.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 13:33:25 +00:00
dependabot[bot]
0cb4c1f3b7
build(deps): bump node from 24.4.0-alpine to 24.4.1-alpine in /backend (#8778)
Bumps node from 24.4.0-alpine to 24.4.1-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24.4.1-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 11:13:16 +00:00
dependabot[bot]
e990b9c8ac
build(deps): bump @aws-sdk/client-s3 from 3.844.0 to 3.850.0 in /backend (#8785)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.844.0 to 3.850.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.850.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.850.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 12:27:38 +02:00
dependabot[bot]
6895a73b15
build(deps): bump cross-env from 7.0.3 to 10.0.0 in /backend (#8787)
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.3 to 10.0.0.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.3...v10.0.0)

---
updated-dependencies:
- dependency-name: cross-env
  dependency-version: 10.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 11:27:23 +02:00
dependabot[bot]
8ce8825840
build(deps): bump cross-env from 7.0.3 to 10.0.0 in /webapp (#8794)
Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.3 to 10.0.0.
- [Release notes](https://github.com/kentcdodds/cross-env/releases)
- [Changelog](https://github.com/kentcdodds/cross-env/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.3...v10.0.0)

---
updated-dependencies:
- dependency-name: cross-env
  dependency-version: 10.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 08:17:49 +00:00
dependabot[bot]
e9213effc1
build(deps-dev): bump @types/node from 24.0.14 to 24.1.0 in /backend (#8788)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.0.14 to 24.1.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.1.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 07:46:10 +00:00
dependabot[bot]
b9eb2ad91f
build(deps): bump peter-evans/repository-dispatch (#8791)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 6846232b0e1bfd17c14dce7ac13fd3fcefe22c0c to 5a3edc67490343006aa8cc8e4a7c69ef6094d733.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](6846232b0e...5a3edc6749)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 5a3edc67490343006aa8cc8e4a7c69ef6094d733
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-28 09:14:20 +02:00
dependabot[bot]
572bc5281a
build(deps-dev): bump @types/node from 24.0.10 to 24.0.13 in /backend (#8757)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 24.0.10 to 24.0.13.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-version: 24.0.13
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-17 11:15:35 +00:00
Robert Schäfer
3b2b3f0014
refactor(backend): remove obsolete code (#8752)
We kept this code for backwards compatibility but since we already deployed S3 to our kubernetes cluster and we're using it locally, let's remove this code. It will also make it easier to implement the image resize service as it reduces the total amount of code to maintain.

Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
2025-07-14 07:28:07 +00:00
dependabot[bot]
588e9bee8d
build(deps): bump node from 24.3.0-alpine to 24.4.0-alpine in /backend (#8756)
Bumps node from 24.3.0-alpine to 24.4.0-alpine.

---
updated-dependencies:
- dependency-name: node
  dependency-version: 24.4.0-alpine
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-12 13:15:52 +00:00
dependabot[bot]
66d591404e
build(deps): bump @aws-sdk/client-s3 from 3.842.0 to 3.844.0 in /backend (#8759)
Bumps [@aws-sdk/client-s3](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-s3) from 3.842.0 to 3.844.0.
- [Release notes](https://github.com/aws/aws-sdk-js-v3/releases)
- [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-s3/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.844.0/clients/client-s3)

---
updated-dependencies:
- dependency-name: "@aws-sdk/client-s3"
  dependency-version: 3.844.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-12 12:44:15 +00:00
dependabot[bot]
4fd1ccf5d0
build(deps): bump peter-evans/repository-dispatch (#8760)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from d33623bdcd342b4dcaac3b2e773e0fc060a8d94a to 6846232b0e1bfd17c14dce7ac13fd3fcefe22c0c.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](d33623bdcd...6846232b0e)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 6846232b0e1bfd17c14dce7ac13fd3fcefe22c0c
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-12 12:18:47 +00:00
dependabot[bot]
0a426cbd5e
build(deps-dev): bump dotenv from 17.0.1 to 17.2.0 (#8761)
Bumps [dotenv](https://github.com/motdotla/dotenv) from 17.0.1 to 17.2.0.
- [Changelog](https://github.com/motdotla/dotenv/blob/master/CHANGELOG.md)
- [Commits](https://github.com/motdotla/dotenv/compare/v17.0.1...v17.2.0)

---
updated-dependencies:
- dependency-name: dotenv
  dependency-version: 17.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-12 14:02:49 +02:00
dependabot[bot]
46beb2931f
build(deps-dev): bump @faker-js/faker from 9.8.0 to 9.9.0 in /webapp (#8747)
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 9.8.0 to 9.9.0.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v9.8.0...v9.9.0)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-version: 9.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-10 16:18:24 +00:00
Robert Schäfer
c4a119f9db
refactor(workflow): silence tslog on CI server (#8753)
Follow up of #8751:

I forgot that we `cp backend/.env.template backend/.env` on our CI server. Now the CI is riddled with debug messages.
2025-07-10 20:08:32 +07:00
dependabot[bot]
714b53725f
build(deps-dev): bump the cypress group across 1 directory with 2 updates (#8746)
Bumps the cypress group with 2 updates in the / directory: [@badeball/cypress-cucumber-preprocessor](https://github.com/badeball/cypress-cucumber-preprocessor) and [cypress](https://github.com/cypress-io/cypress).


Updates `@badeball/cypress-cucumber-preprocessor` from 22.1.0 to 22.2.0
- [Release notes](https://github.com/badeball/cypress-cucumber-preprocessor/releases)
- [Changelog](https://github.com/badeball/cypress-cucumber-preprocessor/blob/master/CHANGELOG.md)
- [Commits](https://github.com/badeball/cypress-cucumber-preprocessor/compare/v22.1.0...v22.2.0)

Updates `cypress` from 14.5.0 to 14.5.1
- [Release notes](https://github.com/cypress-io/cypress/releases)
- [Changelog](https://github.com/cypress-io/cypress/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/cypress-io/cypress/compare/v14.5.0...v14.5.1)

---
updated-dependencies:
- dependency-name: "@badeball/cypress-cucumber-preprocessor"
  dependency-version: 22.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: cypress
- dependency-name: cypress
  dependency-version: 14.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: cypress
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-08 13:30:58 +02:00
dependabot[bot]
f5765b61c6
build(deps-dev): bump @faker-js/faker from 9.8.0 to 9.9.0 (#8745)
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 9.8.0 to 9.9.0.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v9.8.0...v9.9.0)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-version: 9.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 22:31:23 +00:00
dependabot[bot]
4e68a88a24
build(deps-dev): bump @types/lodash from 4.17.19 to 4.17.20 in /backend (#8741)
Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.19 to 4.17.20.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash)

---
updated-dependencies:
- dependency-name: "@types/lodash"
  dependency-version: 4.17.20
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 22:07:21 +00:00
dependabot[bot]
853f7cd26e
build(deps-dev): bump @faker-js/faker from 9.8.0 to 9.9.0 in /backend (#8740)
Bumps [@faker-js/faker](https://github.com/faker-js/faker) from 9.8.0 to 9.9.0.
- [Release notes](https://github.com/faker-js/faker/releases)
- [Changelog](https://github.com/faker-js/faker/blob/next/CHANGELOG.md)
- [Commits](https://github.com/faker-js/faker/compare/v9.8.0...v9.9.0)

---
updated-dependencies:
- dependency-name: "@faker-js/faker"
  dependency-version: 9.9.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 21:47:18 +00:00
dependabot[bot]
e82c023569
build(deps): bump peter-evans/repository-dispatch (#8739)
Bumps [peter-evans/repository-dispatch](https://github.com/peter-evans/repository-dispatch) from 25237563b45ca02acc9f277837f7e17abc0a48a9 to 25b98225d848ef84c218faf938c2e9a7636de1f3.
- [Release notes](https://github.com/peter-evans/repository-dispatch/releases)
- [Commits](25237563b4...25b98225d8)

---
updated-dependencies:
- dependency-name: peter-evans/repository-dispatch
  dependency-version: 25b98225d848ef84c218faf938c2e9a7636de1f3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 21:29:32 +00:00
dependabot[bot]
1ebbb1ca62
build(deps-dev): bump eslint-plugin-n in /backend (#8742)
Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.20.0 to 17.21.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.20.0...v17.21.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-n
  dependency-version: 17.21.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 21:02:06 +00:00
dependabot[bot]
747b0d9f94
build(deps): bump nodemailer from 7.0.3 to 7.0.4 in /backend (#8743)
Bumps [nodemailer](https://github.com/nodemailer/nodemailer) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/nodemailer/nodemailer/releases)
- [Changelog](https://github.com/nodemailer/nodemailer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodemailer/nodemailer/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: nodemailer
  dependency-version: 7.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-07 22:29:41 +02:00
Robert Schäfer
432ae4a906
refactor(backend): silence neo4j-graphql-js (#8751)
Except if you enable it with:
```
DEBUG=neo4j-graphql-js
```
.. in your `backend/.env`
2025-07-07 14:40:55 +00:00
Robert Schäfer
e0719c405e
refactor(backend): use apollo test setup (#8750)
.. in two more specs.

Apparently this got overlooked. In #8558 these tests will fail.
2025-07-07 20:46:34 +07:00
Robert Schäfer
bdb3c204aa
Merge pull request #194 from Human-Connection/update-version
Update version to 0.5.22
2019-12-09 14:56:04 +01:00
Alina Beck
8be9662987
Update version to 0.5.22 2019-12-09 15:49:33 +03:00
Robert Schäfer
7ef8340500
Merge pull request #190 from Human-Connection/load-svgs-with-babel
Use babel-loader to transpile svgs
2019-12-06 12:33:07 +01:00
Alina Beck
5d6391f505 use babel loader to transpile svgs
IE and Edge had trouble loading the Human Connection network
because object spread operators were left in the minified code
using babel-loader for svgs (as suggested in the vue-svg-loader docs)
hopefully solves this issue
2019-12-05 13:07:45 +03:00
Robert Schäfer
d46fc1570c
Merge pull request #176 from hwilson2563/master
add a xxx-small box to space
2019-10-08 01:48:11 +02:00
Hilary Matusiak
c752e25221 add a xxx-small box to space 2019-10-04 11:46:06 -04:00
Alina Beck
808b3c5a95
Merge pull request #155 from Human-Connection/update_version
Update version to 0.5.21
2019-09-09 18:04:32 +01:00
roschaefer
b05583a8b0 Implement a custom deployment condition via bash 2019-09-09 16:16:29 +02:00
roschaefer
90f747a2a9 Don't deploy if you're not on master
Thank you:
https://github.com/travis-ci/travis-ci/issues/5419#issuecomment-222815942
2019-09-09 15:59:52 +02:00
roschaefer
3d85451aff Update version to 0.5.21 2019-09-09 15:59:52 +02:00
Robert Schäfer
8dafc50286
Merge pull request #154 from Human-Connection/deploy_github_pages_through_travis
Deploy Github pages through Travis CI
2019-09-09 13:02:11 +02:00
roschaefer
0b6360bc0b Deploy Github pages through Travis CI
This solves two problems
* It automatically deploys the documentation
* It deploys the documentation only if the npm package is deployed (ie.
if there is a git tag) and keeps both in sync
2019-09-09 12:59:11 +02:00
Robert Schäfer
2ad4602de3
Merge pull request #153 from Human-Connection/update_all_dependencies
Update all dependencies except `sass-loader`
2019-09-09 12:28:02 +02:00
roschaefer
80eb430460 Update all dependencies except sass-loader
We want to make another release and had a look which dependabot PR was
green. So I just updated the green dependencies manually and had a look
if anything breaks.

Again it would be great to have a build server and a reliable test suite.
2019-09-09 12:22:32 +02:00
Robert Schäfer
aa772ca19f
Merge pull request #149 from Human-Connection/dependabot/npm_and_yarn/sass-loader-8.0.0
Bump sass-loader from 7.2.0 to 8.0.0
2019-09-09 12:20:18 +02:00
Alina Beck
94c0ed83d9 use renamed sass-loader prependData option 2019-09-09 11:16:14 +01:00
Robert Schäfer
ac960d8ecd
Merge pull request #137 from Human-Connection/dependabot/npm_and_yarn/babel-jest-24.9.0
Bump babel-jest from 24.8.0 to 24.9.0
2019-09-09 12:04:12 +02:00
Robert Schäfer
0889e137d9
Merge pull request #144 from Human-Connection/dependabot/npm_and_yarn/vue/cli-plugin-unit-jest-3.11.0
Bump @vue/cli-plugin-unit-jest from 3.10.0 to 3.11.0
2019-09-09 12:03:31 +02:00
Robert Schäfer
66c049544e
Merge pull request #152 from Human-Connection/fix-grid-component
Fix grid component
2019-09-09 11:59:05 +02:00
Alina Beck
dc4ce74b21 add missing )) 2019-09-04 17:45:20 +01:00
dependabot-preview[bot]
e0d3717ca0
Bump sass-loader from 7.2.0 to 8.0.0
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v7.2.0...v8.0.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-30 04:20:00 +00:00
Grzegorz Leoniec
73195606fb Bump version 2019-08-25 12:48:11 +02:00
Grzegorz Leoniec
e6fe9ba4b7 Commit phantom changes 2019-08-25 12:47:49 +02:00
Grzegorz Leoniec
3c65a2426c Updated docs 2019-08-25 12:44:49 +02:00
Grzegorz Leoniec
c9d969afc6 Fixed font issues 2019-08-25 12:20:16 +02:00
dependabot-preview[bot]
573890102f
Bump @vue/cli-plugin-unit-jest from 3.10.0 to 3.11.0
Bumps [@vue/cli-plugin-unit-jest](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-jest) from 3.10.0 to 3.11.0.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v3.11.0/packages/@vue/cli-plugin-unit-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-22 04:23:15 +00:00
Robert Schäfer
64389852c4
Merge pull request #140 from Human-Connection/deploy_github_page
Deploy GitHub page
2019-08-21 12:00:15 +02:00
roschaefer
2536542aa9 Rebuild the docs/
Update the deployed docs at https://styleguide.human-connection.org/ via
Github pages.
2019-08-21 00:32:28 +02:00
roschaefer
bcad113682 Add missing http-server to dev dependencies
We cannot assume it to be installed globally.
2019-08-21 00:16:23 +02:00
dependabot-preview[bot]
208bfc1550
Bump babel-jest from 24.8.0 to 24.9.0
Bumps [babel-jest](https://github.com/facebook/jest/tree/HEAD/packages/babel-jest) from 24.8.0 to 24.9.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v24.9.0/packages/babel-jest)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-19 04:28:01 +00:00
Alina Beck
be4d526505 bump version to 0.5.19 2019-08-15 17:12:48 +01:00
Alina Beck
9e49afaac3
Merge pull request #131 from Human-Connection/add-grid-layout
Add grid component
2019-08-15 17:08:24 +01:00
roschaefer
79cbcf2901 Update to 0.5.18
dependency updates
2019-08-15 17:29:48 +02:00
roschaefer
f83a13c7f2 Update transitive dependencies
Should fix our security vulnerabilities
2019-08-15 17:29:04 +02:00
Robert Schäfer
f87d8dacfd
Merge pull request #122 from Human-Connection/dependabot/npm_and_yarn/remarkable-1.7.4
[Security] Bump remarkable from 1.7.1 to 1.7.4
2019-08-15 17:18:59 +02:00
dependabot-preview[bot]
461a762205
[Security] Bump remarkable from 1.7.1 to 1.7.4
Bumps [remarkable](https://github.com/jonschlinkert/remarkable) from 1.7.1 to 1.7.4. **This update includes security fixes.**
- [Release notes](https://github.com/jonschlinkert/remarkable/releases)
- [Changelog](https://github.com/jonschlinkert/remarkable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jonschlinkert/remarkable/compare/1.7.1...v1.7.4)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2019-08-15 15:11:41 +00:00
Robert Schäfer
9d5cb51ed5
Merge pull request #134 from Human-Connection/massive_update
Update all packages with `ncu -u`
2019-08-15 17:10:10 +02:00
roschaefer
e6352cc6fb Update all packages with ncu -u
And fix another bug: require(...).default returns the string content
of the file.
2019-08-15 16:07:16 +02:00
Robert Schäfer
57fe905a96
Merge pull request #133 from Human-Connection/fix_build_errors
Fix build errors
2019-08-15 15:51:39 +02:00
roschaefer
79a8fc5f5f Fix javascript runtime errors
I could see a warning about duplicate keys on the `Chip` page, also
there seems to be a missing check if a param is null (I used a default).
2019-08-15 15:46:29 +02:00
roschaefer
3d41d811d2 Update the minimum of package to get a build
I was not able to build the styleguide on my machine. This commit allows
me to get at least to http://127.0.0.1:8080/ to see some components.

Here are my specs:
```sh
robert@e480 ~> node --version
v12.7.0
robert@e480 ~> yarn --version
1.17.3
robert@e480 ~> cat /proc/version
Linux version 5.2.6-arch1-1-ARCH (builduser@heftig-3961) (gcc version 9.1.0 (GCC)) #1 SMP PREEMPT Sun Aug 4 14:58:49 UTC 2019
```
2019-08-15 15:43:46 +02:00
Alina Beck
df7b736f5d add validator function for grid gap 2019-08-14 15:29:48 +01:00
Alina Beck
3f4a8a543e pass numbers as numbers 2019-08-14 15:22:08 +01:00
Alina Beck
3fa3d6f5c4 use design tokens for grid gap 2019-08-14 12:28:17 +01:00
Alina Beck
4edb8cd541 add grid item to grid docs 2019-08-13 19:08:27 +01:00
Alina Beck
f51890a54f adjust default values, add docs 2019-08-13 18:58:28 +01:00
Alina Beck
b730b91e2c set placeholder height to 100% 2019-08-13 17:54:17 +01:00
Alina Beck
2ccaeb6166 add grid item component 2019-08-13 17:34:35 +01:00
Alina Beck
3a93d9abb3 add grid component 2019-08-13 16:23:44 +01:00
6f1d94610e
Merge pull request #84 from Human-Connection/2019/kw19/fix_form_user_input_event
2019/kw19/fix_form_user_input_event
2019-05-07 20:04:25 +02:00
d70d331e6f
implemented input-valid ad input events to enable notification of every userinput, field match example, fixed console output handling, added ulfgebhardt to the authors, version bump to 0.5.17 2019-05-07 19:59:08 +02:00
396e08127a
Merge pull request #83 from Human-Connection/2019/kw19/fix_form_user_input_event
2019/kw19/fix_form_user_input_event
2019-05-07 14:31:57 +02:00
059072982f
bump version from 0.5.15 to 0.5.16 2019-05-07 13:36:27 +02:00
8da1d99e33
Merge pull request #82 from Human-Connection/2019/kw19/windows_lineendings
2019/kw19/windows_lineendings
2019-05-07 13:21:07 +02:00
bbbf051026
fixed user input event to be fired correctly, added reset event 2019-05-07 13:20:50 +02:00
5e9e55f00e
gitattributes lf 2019-05-06 16:50:22 +02:00
Grzegorz Leoniec
3f7a00b8b9
Use online instead of is-online on avatar 2019-03-15 17:48:16 +01:00
Grzegorz Leoniec
e76fed663c
Fixed some avatar styling 2019-03-15 13:36:35 +01:00
Grzegorz Leoniec
c8002a2b9a
Fixed avatar styling in conjunction with the size values 2019-03-15 13:29:30 +01:00
Grzegorz Leoniec
b3bde1aa2a
Added fixed size to avatar component 2019-03-15 11:24:37 +01:00
Grzegorz Leoniec
9b8ac8f1b3
Fixed avatar and added online status 2019-03-14 21:03:28 +01:00
Grzegorz Leoniec
baf3134f9d
Push 0.5.15 2019-03-12 15:25:32 +01:00
Grzegorz Leoniec
19a6badd55
Upgrade docs 2019-03-12 15:25:07 +01:00
Grzegorz Leoniec
bc3e3875e8
Update browser list 2019-03-12 15:24:53 +01:00
Grzegorz Leoniec
fe536b626f
0.5.14 2019-03-12 10:47:33 +01:00
Grzegorz Leoniec
4e43be4ff6
Merge branch 'master' of github.com:Human-Connection/Nitro-Styleguide 2019-03-12 10:47:02 +01:00
Grzegorz Leoniec
da22c5869a
Try to fix build issue 2019-03-12 10:46:49 +01:00
Grzegorz Leoniec
e77754cb78
Fixed npm badge 2019-03-11 20:48:12 +01:00
Grzegorz Leoniec
319f6a90f7
Try to fix some issues 0.5.12 2019-03-11 20:44:51 +01:00
Grzegorz Leoniec
562fddb1b4
Fixed docs 2019-03-11 11:21:36 +01:00
Grzegorz Leoniec
e7c25e15ed
Updated docs 2019-03-11 11:13:42 +01:00
Grzegorz Leoniec
ce20d5b58e
Update README.md 2019-03-09 08:59:51 +01:00
Grzegorz Leoniec
de26ce29e6
Added npm badge 2019-03-09 08:57:11 +01:00
Grzegorz Leoniec
fd83399e70
Merge pull request #34 from Human-Connection/remove_portal
Remove vue-portal
2019-03-09 08:48:59 +01:00
Grzegorz Leoniec
a100c09ac5
Updated to 0.5.11 2019-03-09 08:47:20 +01:00
Robert Schäfer
f6fbe058f6 Remove occurences of vue-portal
I don't quite get the reason for having `vue-portal`. Maybe to ensure,
the modal get's rendered only once? If yes, then I would suggest to give
the user the responsibility to render only one modal at a time.
2019-03-09 01:41:33 +01:00
Robert Schäfer
02f34f0fcf Run git clean -dfx
deletes ignored but indexed files
2019-03-09 01:39:26 +01:00
Grzegorz Leoniec
ce69fe5cb7
Style fixes 2019-03-07 11:02:29 +01:00
Grzegorz Leoniec
b941bb24d8
Fixed HC Documentation link to point to nitro 2019-03-07 10:41:30 +01:00
Grzegorz Leoniec
58cb1ee096
Try to fix build 0.5.10 2019-03-07 10:35:59 +01:00
Grzegorz Leoniec
c64d6fbb83
Update to 0.5.9 2019-03-07 10:16:22 +01:00
Grzegorz Leoniec
702cd07171
Remove dist folder 2019-03-07 10:15:45 +01:00
Grzegorz Leoniec
ba27f81977
Fixing build and styleguide CNAME 2019-03-07 10:15:22 +01:00
Grzegorz Leoniec
900dad94ae
Updated docs 2019-03-07 10:15:00 +01:00
Grzegorz Leoniec
a98e22dba1
Bumped version to 0.5.8 2019-03-07 09:46:47 +01:00
Grzegorz Leoniec
e9eaafd067
Extend build by also using yarn build beside build:lib 2019-03-07 09:46:33 +01:00
Grzegorz Leoniec
21dd977bec
Fixed some linting issues 2019-03-07 09:46:08 +01:00
Grzegorz Leoniec
23cbd42d3f
Bumped version to 0.5.7 2019-03-06 20:13:19 +01:00
Grzegorz Leoniec
201de94230
Improved select input 2019-03-06 20:13:01 +01:00
Grzegorz Leoniec
273c0ca1a6
Bump version to 0.5.6 2019-03-06 19:05:37 +01:00
Grzegorz Leoniec
4f87a3feec
Bumped version to 0.5.5 2019-03-04 16:43:58 +01:00
Grzegorz Leoniec
dca1ea6c42
Fixed select behavior 2019-03-04 14:24:27 +01:00
Grzegorz Leoniec
01ca0a6d8b
Fixed search input behavior 2019-03-04 11:25:19 +01:00
Grzegorz Leoniec
4a574ee430
Added vue and vue-portal as peed dependencies 0.5.4 2019-03-01 10:35:05 +01:00
Grzegorz Leoniec
83da96f8c8
Bumped version to 0.5.3 2019-03-01 10:11:41 +01:00
Grzegorz Leoniec
b7371582dc
Fixed issue with select filtering 2019-03-01 10:10:56 +01:00
Grzegorz Leoniec
fbc3ee5658
Added .npmignore 2019-02-26 11:08:28 +01:00
Grzegorz Leoniec
4edea10b18
ignore icons _all icons in npm package 2019-02-26 10:47:44 +01:00
Grzegorz Leoniec
0bbaba189f
Missed to bumb version 2019-02-25 11:32:26 +01:00
Grzegorz Leoniec
a0189658a8
Making the package public 2019-02-25 11:31:40 +01:00
Grzegorz Leoniec
f4f16962d9
Merge branch 'master' of github.com:Human-Connection/Nitro-Styleguide 2019-02-25 11:28:23 +01:00
Grzegorz Leoniec
095b1539ad
Added deyplo config for npm 2019-02-25 11:27:38 +01:00
Grzegorz Leoniec
6a7256f0c1
Merge pull request #14 from Human-Connection/dependabot/npm_and_yarn/vue-and-vue-template-compiler-2.6.7
Bump vue and vue-template-compiler
2019-02-25 10:49:56 +01:00
dependabot[bot]
1a82e6edda
Bump vue and vue-template-compiler
Bumps [vue](https://github.com/vuejs/vue) and [vue-template-compiler](https://github.com/vuejs/vue). These dependencies needed to be updated together.

Updates `vue` from 2.6.6 to 2.6.7
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.6...v2.6.7)

Updates `vue-template-compiler` from 2.6.6 to 2.6.7
- [Release notes](https://github.com/vuejs/vue/releases)
- [Commits](https://github.com/vuejs/vue/compare/v2.6.6...v2.6.7)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-25 09:46:00 +00:00
Grzegorz Leoniec
ffe1ceabf1
Fixing build 2019-02-25 10:43:47 +01:00
Grzegorz Leoniec
81bcdc87e3
Disable testing for now 2019-02-25 10:35:57 +01:00
Grzegorz Leoniec
85114b78d6
Added missing Icon 2019-02-25 09:58:29 +01:00
Grzegorz Leoniec
105ab19424
Merge branch 'master' of github.com:Human-Connection/Nitro-Styleguide 2019-02-25 09:55:04 +01:00
Grzegorz Leoniec
7a628d515d
Added editor icons 2019-02-25 09:54:54 +01:00
Grzegorz Leoniec
71258216f2
Update README.md 2019-02-25 08:41:19 +01:00
Grzegorz Leoniec
9c35a70e07
Update README.md 2019-02-25 08:23:56 +01:00
Grzegorz Leoniec
2a8fef8cb6
Try to fix build 2019-02-24 21:00:34 +01:00
Grzegorz Leoniec
3a879a954f
Try to fix build 2019-02-24 20:55:45 +01:00
Grzegorz Leoniec
aea2bb079e
Force yarn on before_install 2019-02-24 20:38:08 +01:00
Grzegorz Leoniec
bdeb23a428
Build as lib 2019-02-24 20:34:05 +01:00
Grzegorz Leoniec
58b3034fc8
Removing yarn service as its invalid 2019-02-24 20:31:50 +01:00
Grzegorz Leoniec
d68357c74d
Merge branch 'master' of github.com:Human-Connection/Nitro-Styleguide 2019-02-24 20:26:45 +01:00
Grzegorz Leoniec
c05e80420f
Fixing travis 2019-02-24 20:26:42 +01:00
Grzegorz Leoniec
2021531ab4
Merge pull request #6 from Human-Connection/dependabot/npm_and_yarn/@babel/standalone-7.3.3
Bump @babel/standalone from 7.3.2 to 7.3.3
2019-02-24 20:25:14 +01:00
Grzegorz Leoniec
fd15352390
Renamed travis.yml 2019-02-24 20:21:16 +01:00
Grzegorz Leoniec
86c8c30bd4
added travis build 2019-02-24 20:19:35 +01:00
dependabot[bot]
0d7fe46cc4
Bump @babel/standalone from 7.3.2 to 7.3.3
Bumps [@babel/standalone](https://github.com/babel/babel-standalone) from 7.3.2 to 7.3.3.
- [Release notes](https://github.com/babel/babel-standalone/releases)
- [Commits](https://github.com/babel/babel-standalone/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-24 19:17:13 +00:00
Grzegorz Leoniec
970613a416
Merge pull request #13 from Human-Connection/dependabot/npm_and_yarn/codemirror-5.44.0
Bump codemirror from 5.43.0 to 5.44.0
2019-02-24 20:14:26 +01:00
Grzegorz Leoniec
2e7acaa68b
Merge pull request #11 from Human-Connection/dependabot/npm_and_yarn/@vue/cli-plugin-unit-jest-3.4.1
Bump @vue/cli-plugin-unit-jest from 3.4.0 to 3.4.1
2019-02-24 20:14:03 +01:00
Grzegorz Leoniec
cc456da586
Merge pull request #16 from Human-Connection/search-input
Search input
2019-02-24 20:11:56 +01:00
Grzegorz Leoniec
47291993d2
Merge pull request #15 from Human-Connection/changes-for-editor
Improve input.js for editor use
2019-02-24 20:14:32 +01:00
Grzegorz Leoniec
58f40fbed8
Improve imput.js for editor use 2019-02-24 20:04:38 +01:00
Grzegorz Leoniec
3975ccfd71
Merge remote-tracking branch 'origin/master' into search-input 2019-02-24 17:22:08 +01:00
Grzegorz Leoniec
05dce9254c
added changes to use select as search input 2019-02-24 17:21:00 +01:00
dependabot[bot]
85c994e94c
Bump codemirror from 5.43.0 to 5.44.0
Bumps [codemirror](https://github.com/codemirror/CodeMirror) from 5.43.0 to 5.44.0.
- [Release notes](https://github.com/codemirror/CodeMirror/releases)
- [Changelog](https://github.com/codemirror/CodeMirror/blob/master/CHANGELOG.md)
- [Commits](https://github.com/codemirror/CodeMirror/compare/5.43.0...5.44.0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-22 04:44:32 +00:00
dependabot[bot]
ea16195296
Bump @vue/cli-plugin-unit-jest from 3.4.0 to 3.4.1
Bumps [@vue/cli-plugin-unit-jest](https://github.com/vuejs/vue-cli/tree/HEAD/packages/@vue/cli-plugin-unit-jest) from 3.4.0 to 3.4.1.
- [Release notes](https://github.com/vuejs/vue-cli/releases)
- [Changelog](https://github.com/vuejs/vue-cli/blob/dev/CHANGELOG.md)
- [Commits](https://github.com/vuejs/vue-cli/commits/v3.4.1/packages/@vue/cli-plugin-unit-jest)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-21 21:46:27 +00:00
dependabot[bot]
01d0d4819f
Merge pull request #12 from Human-Connection/dependabot/npm_and_yarn/theo-8.1.2 2019-02-21 21:42:59 +00:00
dependabot[bot]
3089f99312
Bump theo from 8.1.1 to 8.1.2
Bumps [theo](https://github.com/salesforce-ux/theo) from 8.1.1 to 8.1.2.
- [Release notes](https://github.com/salesforce-ux/theo/releases)
- [Changelog](https://github.com/salesforce-ux/theo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/salesforce-ux/theo/compare/v8.1.1...v8.1.2)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-02-21 05:16:42 +00:00
Grzegorz Leoniec
c141674c65
Merge pull request #2 from Human-Connection/fix-missing-files
[WIP] Fix missing files
2019-02-16 10:33:36 +01:00
Grzegorz Leoniec
1a84af06ff
Reactivate source maps in production 2019-02-16 10:31:22 +01:00
Grzegorz Leoniec
da25934f4c
Remove generated files again 2019-02-16 10:28:54 +01:00
Grzegorz Leoniec
e767ee5870
Fixed build 2019-02-15 21:52:54 +01:00
Grzegorz Leoniec
746c48a35f
Try to fix build issues 2019-02-15 21:36:15 +01:00
Grzegorz Leoniec
8d759834e1
Stop fixing issues 2019-02-15 21:23:32 +01:00
Grzegorz Leoniec
f97029dc07
Do not automatically fix prettiere issues 2019-02-15 20:49:21 +01:00
Grzegorz Leoniec
2212cf70f5
Downgrade prettier 2019-02-15 20:40:03 +01:00
Grzegorz Leoniec
659c8b5106
Fixed missing files 2019-02-15 20:38:21 +01:00
Grzegorz Leoniec
3cdd06b252
Moved Styleguide to its own repo 2019-02-15 19:04:41 +01:00
1838 changed files with 59602 additions and 57014 deletions

View File

@ -126,80 +126,3 @@ updates:
day: "saturday" day: "saturday"
timezone: "Europe/Berlin" timezone: "Europe/Berlin"
time: "03:00" time: "03:00"
# frontend
# - package-ecosystem: npm
# open-pull-requests-limit: 99
# directory: "/frontend"
# rebase-strategy: "disabled"
# schedule:
# interval: weekly
# day: "saturday"
# timezone: "Europe/Berlin"
# time: "03:00"
# groups:
# eslint:
# applies-to: version-updates
# patterns:
# - "eslint*"
# - "@eslint*"
# pinia:
# applies-to: version-updates
# patterns:
# - "pinia*"
# react:
# applies-to: version-updates
# patterns:
# - "react*"
# remark:
# applies-to: version-updates
# patterns:
# - "remark*"
# storybook:
# applies-to: version-updates
# patterns:
# - "storybook"
# - "@storybook*"
# stylelint:
# applies-to: version-updates
# patterns:
# - "stylelint*"
# typescript:
# applies-to: version-updates
# patterns:
# - "ts*"
# - "@types*"
# - "typescript"
# vite:
# applies-to: version-updates
# patterns:
# - "vite"
# - "vite-plugin*"
# - "@vitejs/plugin-vue"
# vitest:
# applies-to: version-updates
# patterns:
# - "vitest"
# - "@vitest*"
# vue:
# applies-to: version-updates
# patterns:
# - "*vue?(/)*"
# exclude-patterns:
# - "vuetify"
# - "*vuepress*"
# - "vue-tsc"
# vuepress:
# applies-to: version-updates
# patterns:
# - "vuepress"
# - "@vuepress*"
# - package-ecosystem: docker
# open-pull-requests-limit: 99
# directory: "/frontend"
# rebase-strategy: "disabled"
# schedule:
# interval: weekly
# day: "saturday"
# timezone: "Europe/Berlin"
# time: "03:00"

View File

@ -12,6 +12,7 @@ docker: &docker
webapp: &webapp webapp: &webapp
- '.github/workflows/test-webapp.yml' - '.github/workflows/test-webapp.yml'
- 'webapp/**/*' - 'webapp/**/*'
- 'styleguide/**/*'
- 'package.json' - 'package.json'
docs-check: &docs-check docs-check: &docs-check
@ -30,24 +31,4 @@ vuepress: &vuepress
documentation: &documentation documentation: &documentation
- *vuepress - *vuepress
- *markdown - *markdown
# frontend
frontend-test-lint-code: &frontend-test-lint-code
- 'frontend/**/*'
frontend-test-unit-code: &frontend-test-unit-code
- 'frontend/**/*'
frontend-test-build-code: &frontend-test-build-code
- 'frontend/**/*'
frontend-test-build-docker: &frontend-test-build-docker
- 'frontend/**/*'
frontend-test-build-docs: &frontend-test-build-docs
- 'frontend/**/*.md'
- 'frontend/.vuepress/*'
frontend-test-build-storybook: &frontend-test-build-storybook
- 'frontend/**/*'

View File

@ -11,7 +11,7 @@ jobs:
documentation: ${{ steps.changes.outputs.documentation }} documentation: ${{ steps.changes.outputs.documentation }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Check for markdown file changes - name: Check for markdown file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
@ -28,13 +28,13 @@ jobs:
if: needs.files-changed.outputs.markdown == 'true' if: needs.files-changed.outputs.markdown == 'true'
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Remove uncheckable documentation files - name: Remove uncheckable documentation files
run: rm -rf ./CHANGELOG.md # workaround until https://github.com/gaurav-nelson/github-action-markdown-link-check/pull/183 has been done run: rm -rf ./CHANGELOG.md # workaround until https://github.com/gaurav-nelson/github-action-markdown-link-check/pull/183 has been done
- name: Check Markdown Links - name: Check Markdown Links
uses: gaurav-nelson/github-action-markdown-link-check@1b916f2cf6c36510a6059943104e3c42ce6c16bc # 1.0.15 uses: gaurav-nelson/github-action-markdown-link-check@3c3b66f1f7d0900e37b71eca45b63ea9eedfce31 # 1.0.15
with: with:
use-quiet-mode: 'yes' use-quiet-mode: 'yes'
use-verbose-mode: 'no' use-verbose-mode: 'no'
@ -51,10 +51,10 @@ jobs:
if: needs.files-changed.outputs.documentation == 'true' if: needs.files-changed.outputs.documentation == 'true'
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Setup Node 20 - name: Setup Node 20
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.0.3 uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with: with:
node-version: '20' node-version: '20'

View File

@ -22,7 +22,7 @@ jobs:
continue-on-error: true continue-on-error: true
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Cleanup - name: Cleanup
run: | run: |

View File

@ -13,7 +13,7 @@ jobs:
documentation: ${{ steps.changes.outputs.documentation }} documentation: ${{ steps.changes.outputs.documentation }}
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Check for file changes - name: Check for file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
@ -27,10 +27,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Setup Node 20 - name: Setup Node 20
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.0.3 uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with: with:
node-version: 20 node-version: 20

View File

@ -24,27 +24,27 @@ jobs:
file: backend/Dockerfile file: backend/Dockerfile
target: production target: production
- name: webapp-base - name: webapp-base
context: webapp context: .
file: webapp/Dockerfile file: webapp/Dockerfile
target: base target: base
- name: webapp-build - name: webapp-build
context: webapp context: .
file: webapp/Dockerfile file: webapp/Dockerfile
target: build target: build
- name: webapp - name: webapp
context: webapp context: .
file: webapp/Dockerfile file: webapp/Dockerfile
target: production target: production
- name: maintenance-base - name: maintenance-base
context: webapp context: .
file: webapp/Dockerfile.maintenance file: webapp/Dockerfile.maintenance
target: base target: base
- name: maintenance-build - name: maintenance-build
context: webapp context: .
file: webapp/Dockerfile.maintenance file: webapp/Dockerfile.maintenance
target: build target: build
- name: maintenance - name: maintenance
context: webapp context: .
file: webapp/Dockerfile.maintenance file: webapp/Dockerfile.maintenance
target: production target: production
runs-on: ubuntu-latest runs-on: ubuntu-latest
@ -59,16 +59,16 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Log in to the Container registry - name: Log in to the Container registry
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9
with: with:
registry: ${{ env.REGISTRY }} registry: ${{ env.REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }} password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker - name: Extract metadata (tags, labels) for Docker
id: meta id: meta
uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 uses: docker/metadata-action@c299e40c65443455700f0fdfc63efafe5b349051
with: with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: | tags: |

View File

@ -1,37 +0,0 @@
name: "frontend:test:build test code"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-build-code
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-build-code }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
build:
if: needs.files-changed.outputs.changes == 'true'
name: Build - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Build
run: npm install && npm run build
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -1,52 +0,0 @@
name: "frontend:test:build test docker"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-build-docker
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-build-docker }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
build-production:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Production - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Build Docker Production
run: docker compose -f docker-compose.yml build
working-directory: ${{env.WORKING_DIRECTORY}}
build-development:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docker Development - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Build Docker Development
run: docker compose build
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -1,37 +0,0 @@
name: "frontend:test:build test docs"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-build-docs
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-build-docs }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
build:
if: needs.files-changed.outputs.changes == 'true'
name: Build Docs - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Build Docs
run: npm install && npm run docs:build
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -1,37 +0,0 @@
name: "frontend:test:build test storybook"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-build-storybook
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-build-storybook }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
storybook:
if: needs.files-changed.outputs.changes == 'true'
name: Build Storybook - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Build Storybook
run: npm install && npm run storybook:build
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -1,37 +0,0 @@
name: "frontend:test:lint code with defined linters"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-lint-code
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-lint-code }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
lint:
if: needs.files-changed.outputs.changes == 'true'
name: Lint - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Lint
run: npm install && npm run test:lint
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -1,37 +0,0 @@
name: "frontend:test:unit test code with defined suites"
on: push
jobs:
# only (but most important) job from this workflow required for pull requests
# check results serve as run conditions for all other jobs here
files-changed:
name: Detect File Changes - frontend-test-unit-code
runs-on: ubuntu-latest
outputs:
changes: ${{ steps.changes.outputs.frontend-test-unit-code }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: changes
with:
token: ${{ github.token }}
filters: .github/file-filters.yml
list-files: shell
unit:
if: needs.files-changed.outputs.changes == 'true'
name: Unit - Frontend
needs: files-changed
runs-on: ubuntu-latest
env:
WORKING_DIRECTORY: ./frontend
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7
- name: Frontend | Unit
run: npm install && npm run test:unit
working-directory: ${{env.WORKING_DIRECTORY}}

View File

@ -14,9 +14,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
with: with:
fetch-depth: 0 # Fetch full History for changelog fetch-depth: 0 # Fetch full History for changelog
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with:
node-version-file: '.nvmrc'
- name: Setup env - name: Setup env
run: | run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
@ -54,9 +58,13 @@ jobs:
needs: [github_tag] needs: [github_tag]
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
with: with:
fetch-depth: 0 # Fetch full History for changelog fetch-depth: 0 # Fetch full History for changelog
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with:
node-version-file: '.nvmrc'
- name: Setup env - name: Setup env
run: | run: |
echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV echo "VERSION=$(node -p -e "require('./package.json').version")" >> $GITHUB_ENV
@ -64,7 +72,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@25237563b45ca02acc9f277837f7e17abc0a48a9 # v3.0.0 # uses: peter-evans/repository-dispatch@cf70392543065ca62813db6712a06df1c4f4ae9f # 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 +80,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@25237563b45ca02acc9f277837f7e17abc0a48a9 # v3.0.0 uses: peter-evans/repository-dispatch@cf70392543065ca62813db6712a06df1c4f4ae9f # 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 +88,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@25237563b45ca02acc9f277837f7e17abc0a48a9 # v3.0.0 uses: peter-evans/repository-dispatch@cf70392543065ca62813db6712a06df1c4f4ae9f # 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

@ -11,7 +11,7 @@ jobs:
backend: ${{ steps.changes.outputs.backend }} backend: ${{ steps.changes.outputs.backend }}
docker: ${{ steps.changes.outputs.docker }} docker: ${{ steps.changes.outputs.docker }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Check for backend file changes - name: Check for backend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Neo4J | Build 'community' image - name: Neo4J | Build 'community' image
run: | run: |
@ -37,7 +37,7 @@ jobs:
- name: Cache docker images - name: Cache docker images
id: cache-neo4j id: cache-neo4j
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -49,7 +49,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: backend | Build 'test' image - name: backend | Build 'test' image
run: | run: |
@ -58,7 +58,7 @@ jobs:
- name: Cache docker images - name: Cache docker images
id: cache-backend id: cache-backend
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -70,7 +70,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with:
node-version-file: 'backend/.nvmrc'
- name: backend | Lint - name: backend | Lint
run: cd backend && yarn && yarn run lint run: cd backend && yarn && yarn run lint
@ -84,17 +89,17 @@ jobs:
checks: write checks: write
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Restore Neo4J cache - name: Restore Neo4J cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -108,7 +113,6 @@ jobs:
- name: backend | copy env files - name: backend | copy env files
run: | run: |
cp webapp/.env.template webapp/.env cp webapp/.env.template webapp/.env
cp frontend/.env.dist frontend/.env
cp backend/.env.template backend/.env cp backend/.env.template backend/.env
- name: backend | docker compose - name: backend | docker compose

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f # v4.2.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
- name: Copy backend env file - name: Copy backend env file
run: | run: |
@ -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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4.0.2
with: with:
path: | path: |
/tmp/backend.tar /tmp/backend.tar
@ -46,7 +46,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f # v4.2.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
- name: Copy backend env file - name: Copy backend env file
run: | run: |
@ -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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -68,13 +68,16 @@ jobs:
name: Fullstack | prepare cypress name: Fullstack | prepare cypress
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout code - name: Checkout code
uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f # v4.2.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@08f58d1471bff7f3a07d167b4ad7df25d5fcfcb6 # v4.4.0 uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.4.0
with: with:
node-version-file: 'backend/.tool-versions' node-version-file: 'backend/.nvmrc'
cache: 'yarn' cache: 'yarn'
- name: Copy env files - name: Copy env files
@ -84,7 +87,8 @@ jobs:
- name: Install cypress requirements - name: Install cypress requirements
run: | run: |
wget --no-verbose -O /opt/cucumber-json-formatter "https://github.com/cucumber/json-formatter/releases/download/v19.0.0/cucumber-json-formatter-linux-386" sudo wget --no-verbose -O /opt/cucumber-json-formatter "https://github.com/cucumber/json-formatter/releases/download/v19.0.0/cucumber-json-formatter-linux-386"
sudo chmod +x /opt/cucumber-json-formatter
cd backend cd backend
yarn install yarn install
yarn build yarn build
@ -93,7 +97,7 @@ jobs:
- name: Cache docker image - name: Cache docker image
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4.0.2
with: with:
path: | path: |
/opt/cucumber-json-formatter /opt/cucumber-json-formatter
@ -113,17 +117,20 @@ jobs:
# run copies of the current job in parallel # run copies of the current job in parallel
job: [1, 2, 3, 4, 5, 6, 7, 8] job: [1, 2, 3, 4, 5, 6, 7, 8]
steps: steps:
- name: Delete huge unnecessary tools folder
run: rm -rf /opt/hostedtoolcache
- name: Checkout code - name: Checkout code
uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f # v4.2.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
- name: Setup Node.js - name: Setup Node.js
uses: actions/setup-node@08f58d1471bff7f3a07d167b4ad7df25d5fcfcb6 # v4.4.0 uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.4.0
with: with:
node-version-file: 'backend/.tool-versions' node-version-file: 'backend/.nvmrc'
cache: 'yarn' cache: 'yarn'
- name: Restore cypress cache - name: Restore cypress cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4.0.2
with: with:
path: | path: |
/opt/cucumber-json-formatter /opt/cucumber-json-formatter
@ -133,7 +140,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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v4.0.2
with: with:
path: | path: |
/tmp/backend.tar /tmp/backend.tar
@ -144,7 +151,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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -175,7 +182,7 @@ jobs:
- name: Full stack tests | if tests failed, upload report - name: Full stack tests | if tests failed, upload report
id: e2e-report id: e2e-report
if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }} if: ${{ failure() && steps.e2e-tests.conclusion == 'failure' }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with: with:
name: ocelot-e2e-test-report-pr${{ needs.docker_preparation.outputs.pr-number }} name: ocelot-e2e-test-report-pr${{ needs.docker_preparation.outputs.pr-number }}
path: /home/runner/work/Ocelot-Social/Ocelot-Social/cypress/reports/cucumber_html_report path: /home/runner/work/Ocelot-Social/Ocelot-Social/cypress/reports/cucumber_html_report
@ -187,7 +194,7 @@ jobs:
continue-on-error: true continue-on-error: true
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@09d2acae674a48949e3602304ab46fd20ae0c42f # v4.2.2 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.2.2
- name: Full stack tests | cleanup cache - name: Full stack tests | cleanup cache
run: | run: |

View File

@ -11,7 +11,7 @@ jobs:
docker: ${{ steps.changes.outputs.docker }} docker: ${{ steps.changes.outputs.docker }}
webapp: ${{ steps.changes.outputs.webapp }} webapp: ${{ steps.changes.outputs.webapp }}
steps: steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Check for frontend file changes - name: Check for frontend file changes
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
@ -28,7 +28,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with:
node-version-file: 'webapp/.nvmrc'
- name: Check translation files - name: Check translation files
run: | run: |
@ -42,15 +47,15 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Webapp | Build 'test' image - name: Webapp | Build 'test' image
run: | run: |
docker build --target test -t "ocelotsocialnetwork/webapp:test" webapp/ docker build --target test -f webapp/Dockerfile -t "ocelotsocialnetwork/webapp:test" .
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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -62,7 +67,12 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Setup Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v4.0.3
with:
node-version-file: 'webapp/.nvmrc'
- name: webapp | Lint - name: webapp | Lint
run: cd webapp && yarn && yarn run lint run: cd webapp && yarn && yarn run lint
@ -76,10 +86,10 @@ jobs:
checks: write checks: write
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.1.7 uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v4.1.7
- name: Restore webapp cache - name: Restore webapp cache
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.0.2 uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # 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
@ -90,7 +100,6 @@ jobs:
- name: Copy env files - name: Copy env files
run: | run: |
cp webapp/.env.template webapp/.env cp webapp/.env.template webapp/.env
cp frontend/.env.dist frontend/.env
cp backend/.env.template backend/.env cp backend/.env.template backend/.env
- name: backend | docker compose - name: backend | docker compose

View File

@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }} if: ${{ github.actor != 'dependabot[bot]' }}
steps: steps:
- uses: amannn/action-semantic-pull-request@335288255954904a41ddda8947c8f2c844b8bfeb # v5.5.3 - uses: amannn/action-semantic-pull-request@069817c298f23fab00a8f29a2e556a5eac0f6390 # v5.5.3
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
@ -30,9 +30,9 @@ jobs:
scopes: | scopes: |
backend backend
webapp webapp
frontend
maintenance maintenance
database database
e2e
docu docu
docker docker
release release

3
.gitmodules vendored
View File

@ -1,6 +1,3 @@
[submodule "styleguide"]
path = styleguide
url = https://github.com/Human-Connection/Nitro-Styleguide.git
[submodule "deployment/configurations/stage.ocelot.social"] [submodule "deployment/configurations/stage.ocelot.social"]
path = deployment/configurations/stage.ocelot.social path = deployment/configurations/stage.ocelot.social
url = git@github.com:Ocelot-Social-Community/stage.ocelot.social.git url = git@github.com:Ocelot-Social-Community/stage.ocelot.social.git

2
.nvmrc
View File

@ -1 +1 @@
v24.2.0 v25.3.0

View File

@ -1 +0,0 @@
nodejs 20.12.1

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
DEBUG=true DEBUG=neo4j-graphql-js
NEO4J_URI=bolt://localhost:7687 NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j NEO4J_USERNAME=neo4j
@ -19,7 +19,7 @@ SMTP_PASSWORD=
SMTP_SECURE="false" # true for 465, false for other ports SMTP_SECURE="false" # true for 465, false for other ports
SMTP_DKIM_DOMAINNAME= SMTP_DKIM_DOMAINNAME=
SMTP_DKIM_KEYSELECTOR= SMTP_DKIM_KEYSELECTOR=
SMTP_DKIM_PRIVATKEY= SMTP_DKIM_PRIVATEKEY=
# E-Mail settings for our 'docker compose up mailserver' # E-Mail settings for our 'docker compose up mailserver'
# SMTP_HOST=localhost # SMTP_HOST=localhost
# SMTP_PORT=1025 # SMTP_PORT=1025
@ -33,8 +33,6 @@ JWT_SECRET="b/&&7b78BF&fv/Vd"
JWT_EXPIRES="2y" JWT_EXPIRES="2y"
MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g"
PRIVATE_KEY_PASSPHRASE="a7dsf78sadg87ad87sfagsadg78"
SENTRY_DSN_BACKEND= SENTRY_DSN_BACKEND=
COMMIT= COMMIT=
PUBLIC_REGISTRATION=false PUBLIC_REGISTRATION=false
@ -45,7 +43,9 @@ AWS_SECRET_ACCESS_KEY=12341234
AWS_ENDPOINT=http://localhost:9000 AWS_ENDPOINT=http://localhost:9000
AWS_REGION=local AWS_REGION=local
AWS_BUCKET=ocelot AWS_BUCKET=ocelot
S3_PUBLIC_GATEWAY=http://localhost:8000 IMAGOR_PUBLIC_URL=http://localhost:8000
IMAGOR_SECRET=mysecret
CATEGORIES_ACTIVE=false CATEGORIES_ACTIVE=false
MAX_PINNED_POSTS=1 MAX_PINNED_POSTS=1
MAX_GROUP_PINNED_POSTS=1

View File

@ -19,14 +19,12 @@ SMTP_PASSWORD=
SMTP_SECURE="false" # true for 465, false for other ports SMTP_SECURE="false" # true for 465, false for other ports
SMTP_DKIM_DOMAINNAME= SMTP_DKIM_DOMAINNAME=
SMTP_DKIM_KEYSELECTOR= SMTP_DKIM_KEYSELECTOR=
SMTP_DKIM_PRIVATKEY= SMTP_DKIM_PRIVATEKEY=
JWT_SECRET="b/&&7b78BF&fv/Vd" JWT_SECRET="b/&&7b78BF&fv/Vd"
JWT_EXPIRES="2y" JWT_EXPIRES="2y"
MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g" MAPBOX_TOKEN="pk.eyJ1IjoiYnVzZmFrdG9yIiwiYSI6ImNraDNiM3JxcDBhaWQydG1uczhpZWtpOW4ifQ.7TNRTO-o9aK1Y6MyW_Nd4g"
PRIVATE_KEY_PASSPHRASE="a7dsf78sadg87ad87sfagsadg78"
SENTRY_DSN_BACKEND= SENTRY_DSN_BACKEND=
COMMIT= COMMIT=
PUBLIC_REGISTRATION=false PUBLIC_REGISTRATION=false
@ -37,7 +35,9 @@ AWS_SECRET_ACCESS_KEY=12341234
AWS_ENDPOINT=http://localhost:9000 AWS_ENDPOINT=http://localhost:9000
AWS_REGION=local AWS_REGION=local
AWS_BUCKET=ocelot AWS_BUCKET=ocelot
S3_PUBLIC_GATEWAY=http://localhost:8000 IMAGOR_PUBLIC_URL=http://localhost:8000
IMAGOR_SECRET=mysecret
CATEGORIES_ACTIVE=false CATEGORIES_ACTIVE=false
MAX_PINNED_POSTS=1 MAX_PINNED_POSTS=1
MAX_GROUP_PINNED_POSTS=1

View File

@ -14,7 +14,6 @@ module.exports = {
'plugin:import/recommended', 'plugin:import/recommended',
'plugin:import/typescript', 'plugin:import/typescript',
'plugin:promise/recommended', 'plugin:promise/recommended',
'plugin:security/recommended-legacy',
'plugin:@eslint-community/eslint-comments/recommended', 'plugin:@eslint-community/eslint-comments/recommended',
'prettier', 'prettier',
], ],
@ -175,6 +174,10 @@ module.exports = {
'@eslint-community/eslint-comments/require-description': 'off', '@eslint-community/eslint-comments/require-description': 'off',
}, },
overrides: [ overrides: [
{
files: ['*.js', '*.cjs', '*.ts', '*.tsx'],
extends: ['plugin:security/recommended-legacy'],
},
// only for ts files // only for ts files
{ {
files: ['*.ts', '*.tsx'], files: ['*.ts', '*.tsx'],
@ -228,5 +231,33 @@ module.exports = {
files: ['*.json', '*.json5', '*.jsonc'], files: ['*.json', '*.json5', '*.jsonc'],
parser: 'jsonc-eslint-parser', parser: 'jsonc-eslint-parser',
}, },
{
files: ['*.graphql', '*.gql'],
parser: '@graphql-eslint/eslint-plugin',
plugins: ['@graphql-eslint'],
extends: ['plugin:@graphql-eslint/schema-recommended'],
rules: {
'@graphql-eslint/description-style': ['error', { style: 'inline' }],
'@graphql-eslint/require-description': 'off',
'@graphql-eslint/naming-convention': 'off',
'@graphql-eslint/strict-id-in-types': 'off',
'@graphql-eslint/no-typename-prefix': 'off',
// incompatible: `depends on a GraphQL validation rule "XXX" but it's not available in the "graphql" version you are using. Skipping…`
'@graphql-eslint/known-directives': 'off',
'@graphql-eslint/known-argument-names': 'off',
'@graphql-eslint/known-type-names': 'off',
'@graphql-eslint/lone-schema-definition': 'off',
'@graphql-eslint/provided-required-arguments': 'off',
'@graphql-eslint/unique-directive-names': 'off',
'@graphql-eslint/unique-directive-names-per-location': 'off',
'@graphql-eslint/unique-field-definition-names': 'off',
'@graphql-eslint/unique-operation-types': 'off',
'@graphql-eslint/unique-type-names': 'off',
},
parserOptions: {
schema: './src/graphql/types/**/*.gql',
assumeValid: true,
},
},
], ],
} }

View File

@ -1 +1 @@
v24.2.0 v25.3.0

View File

@ -1 +0,0 @@
nodejs 24.2.0

View File

@ -1,4 +1,4 @@
FROM node:24.3.0-alpine AS base FROM node:25.5.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

@ -19,18 +19,16 @@ Wait a little until your backend is up and running at [http://localhost:4000/](h
## Installation without Docker ## Installation without Docker
For the local installation you need a recent version of For the local installation you need a recent version of
[Node](https://nodejs.org/en/) (&gt;= `v16.19.0`). We are using [Node](https://nodejs.org/en/). We are using
`v24.2.0` and therefore we recommend to use the same version `v25.3.0` and therefore we recommend to use the same version. You can use the
([see](https://github.com/Ocelot-Social-Community/Ocelot-Social/issues/4082)
some known problems with more recent node versions). You can use the
[node version manager](https://github.com/nvm-sh/nvm) `nvm` to switch [node version manager](https://github.com/nvm-sh/nvm) `nvm` to switch
between different local Node versions: between different local Node versions:
```sh ```sh
# install Node # install Node using '.nvmrc' file
$ cd backend $ cd backend
$ nvm install v24.2.0 $ nvm install
$ nvm use v24.2.0 $ nvm use
``` ```
Install node dependencies with [yarn](https://yarnpkg.com/en/): Install node dependencies with [yarn](https://yarnpkg.com/en/):

View File

@ -18,7 +18,7 @@ module.exports = {
], ],
coverageThreshold: { coverageThreshold: {
global: { global: {
lines: 90, lines: 92,
}, },
}, },
testMatch: ['**/src/**/?(*.)+(spec|test).ts?(x)'], testMatch: ['**/src/**/?(*.)+(spec|test).ts?(x)'],

View File

@ -1,6 +1,6 @@
{ {
"name": "ocelot-social-backend", "name": "ocelot-social-backend",
"version": "3.11.0", "version": "3.13.1",
"description": "GraphQL Backend for ocelot.social", "description": "GraphQL Backend for ocelot.social",
"repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social", "repository": "https://github.com/Ocelot-Social-Community/Ocelot-Social",
"author": "ocelot.social Community", "author": "ocelot.social Community",
@ -12,7 +12,7 @@
"build": "tsc && tsc-alias && ./scripts/build.copy.files.sh", "build": "tsc && tsc-alias && ./scripts/build.copy.files.sh",
"dev": "nodemon --exec ts-node --require tsconfig-paths/register src/index.ts -e js,ts,gql", "dev": "nodemon --exec ts-node --require tsconfig-paths/register src/index.ts -e js,ts,gql",
"dev:debug": "nodemon --exec node --inspect=0.0.0.0:9229 build/src/index.js -e js,ts,gql", "dev:debug": "nodemon --exec node --inspect=0.0.0.0:9229 build/src/index.js -e js,ts,gql",
"lint": "eslint --max-warnings=0 --report-unused-disable-directives --ext .js,.ts,.cjs,.json,.json5,.jsonc .", "lint": "eslint --max-warnings=0 --report-unused-disable-directives --ext .js,.ts,.cjs,.json,.json5,.jsonc,.graphql,.gql .",
"test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=8192 jest --runInBand --coverage --forceExit --detectOpenHandles", "test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=8192 jest --runInBand --coverage --forceExit --detectOpenHandles",
"db:reset": "ts-node --require tsconfig-paths/register src/db/reset.ts", "db:reset": "ts-node --require tsconfig-paths/register src/db/reset.ts",
"db:reset:withmigrations": "ts-node --require tsconfig-paths/register src/db/reset-with-migrations.ts", "db:reset:withmigrations": "ts-node --require tsconfig-paths/register src/db/reset-with-migrations.ts",
@ -23,26 +23,29 @@
"db:data:categories": "ts-node --require tsconfig-paths/register src/db/categories.ts", "db:data:categories": "ts-node --require tsconfig-paths/register src/db/categories.ts",
"db:migrate": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --store ./src/db/migrate/store.ts", "db:migrate": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --store ./src/db/migrate/store.ts",
"db:migrate:create": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --template-file ./src/db/migrate/template.ts --date-format 'yyyymmddHHmmss' create", "db:migrate:create": "migrate --compiler 'ts:./src/db/compiler.ts' --migrations-dir ./src/db/migrations --template-file ./src/db/migrate/template.ts --date-format 'yyyymmddHHmmss' create",
"db:func:disable:notifications": "ts-node --require tsconfig-paths/register src/db/disable-notifications.ts",
"prod:migrate": "migrate --migrations-dir ./build/src/db/migrations --store ./build/src/db/migrate/store.js", "prod:migrate": "migrate --migrations-dir ./build/src/db/migrations --store ./build/src/db/migrate/store.js",
"prod:db:data:branding": "node build/src/db/data-branding.js", "prod:db:data:branding": "node build/src/db/data-branding.js",
"prod:db:data:categories": "node build/src/db/categories.js" "prod:db:data:categories": "node build/src/db/categories.js",
"prod:db:data:admin": "node build/src/db/admin.js",
"prod:db:func:disable:notifications": "node build/src/db/disable-notifications.js"
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.842.0", "@aws-sdk/client-s3": "^3.980.0",
"@aws-sdk/lib-storage": "^3.842.0", "@aws-sdk/lib-storage": "^3.980.0",
"@sentry/node": "^5.15.4", "@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",
"apollo-server-express": "^2.14.2", "apollo-server-express": "^2.14.2",
"bcryptjs": "~3.0.2", "bcryptjs": "~3.0.3",
"body-parser": "^1.20.3", "body-parser": "^1.20.3",
"cheerio": "~1.1.0", "cheerio": "~1.2.0",
"cross-env": "~7.0.3", "cross-env": "~10.1.0",
"dotenv": "~17.0.1", "dotenv": "~17.0.1",
"email-templates": "^12.0.3", "email-templates": "^12.0.3",
"express": "^5.1.0", "express": "^4.22.1",
"graphql": "^14.6.0", "graphql": "^14.6.0",
"graphql-middleware": "~4.0.2", "graphql-middleware": "~6.1.35",
"graphql-middleware-sentry": "^3.2.1", "graphql-middleware-sentry": "^3.2.1",
"graphql-redis-subscriptions": "^2.7.0", "graphql-redis-subscriptions": "^2.7.0",
"graphql-shield": "~7.2.2", "graphql-shield": "~7.2.2",
@ -50,79 +53,80 @@
"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.6.1", "ioredis": "^5.9.2",
"jsonwebtoken": "~8.5.1", "jsonwebtoken": "~8.5.1",
"languagedetect": "^2.0.0", "languagedetect": "^2.0.0",
"linkify-html": "^4.3.1", "linkify-html": "^4.3.2",
"linkifyjs": "^4.3.1", "linkifyjs": "^4.3.2",
"lodash": "~4.17.21", "lodash": "~4.17.23",
"merge-graphql-schemas": "^1.7.8", "merge-graphql-schemas": "^1.7.8",
"metascraper": "^5.49.1", "metascraper": "^5.49.19",
"metascraper-author": "^5.49.1", "metascraper-author": "^5.49.19",
"metascraper-date": "^5.49.1", "metascraper-date": "^5.49.19",
"metascraper-description": "^5.49.1", "metascraper-description": "^5.49.19",
"metascraper-image": "^5.49.1", "metascraper-image": "^5.49.19",
"metascraper-lang": "^5.49.1", "metascraper-lang": "^5.49.19",
"metascraper-lang-detector": "^4.10.2", "metascraper-lang-detector": "^4.10.2",
"metascraper-logo": "^5.49.1", "metascraper-logo": "^5.49.19",
"metascraper-publisher": "^5.49.1", "metascraper-publisher": "^5.49.19",
"metascraper-soundcloud": "^5.34.4", "metascraper-soundcloud": "^5.34.4",
"metascraper-title": "^5.49.1", "metascraper-title": "^5.49.19",
"metascraper-url": "^5.49.1", "metascraper-url": "^5.49.19",
"metascraper-video": "^5.49.1", "metascraper-video": "^5.49.19",
"metascraper-youtube": "^5.49.1", "metascraper-youtube": "^5.49.20",
"migrate": "^2.1.0", "migrate": "^2.1.0",
"mime-types": "^3.0.1", "mime-types": "^3.0.2",
"minimatch": "^10.0.3", "minimatch": "^10.1.1",
"mustache": "^4.2.0", "mustache": "^4.2.0",
"neo4j-driver": "^4.4.11", "neo4j-driver": "^4.4.11",
"neo4j-graphql-js": "^2.11.5", "neo4j-graphql-js": "2.11.5",
"neode": "^0.4.9", "neode": "^0.4.9",
"node-fetch": "^2.7.0", "node-fetch": "^2.7.0",
"nodemailer": "^7.0.3", "nodemailer": "^7.0.12",
"nodemailer-html-to-text": "^3.2.0", "nodemailer-html-to-text": "^3.2.0",
"preview-email": "^3.1.0", "preview-email": "^3.1.1",
"pug": "^3.0.3", "pug": "^3.0.3",
"sanitize-html": "~2.17.0", "sanitize-html": "~2.17.0",
"slug": "~9.1.0", "slugify": "^1.6.6",
"trunc-html": "~1.1.2", "trunc-html": "~1.1.2",
"tslog": "^4.9.3", "tslog": "^4.10.2",
"uuid": "~9.0.1", "uuid": "~9.0.1",
"validator": "^13.15.15", "validator": "^13.15.26",
"xregexp": "^5.1.2" "xregexp": "^5.1.2"
}, },
"devDependencies": { "devDependencies": {
"@eslint-community/eslint-plugin-eslint-comments": "^4.5.0", "@eslint-community/eslint-plugin-eslint-comments": "^4.6.0",
"@faker-js/faker": "9.8.0", "@faker-js/faker": "9.9.0",
"@graphql-eslint/eslint-plugin": "^3.20.1",
"@types/email-templates": "^10.0.4", "@types/email-templates": "^10.0.4",
"@types/jest": "^29.5.14", "@types/jest": "^30.0.0",
"@types/jsonwebtoken": "~8.5.1", "@types/jsonwebtoken": "~8.5.1",
"@types/lodash": "^4.17.19", "@types/lodash": "^4.17.23",
"@types/node": "^24.0.10", "@types/node": "^25.1.0",
"@types/request": "^2.48.12", "@types/request": "^2.48.13",
"@types/slug": "^5.0.9", "@types/slug": "^5.0.9",
"@types/uuid": "~9.0.1", "@types/uuid": "~9.0.1",
"@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0", "@typescript-eslint/parser": "^5.62.0",
"apollo-server-testing": "~2.11.0", "apollo-server-testing": "~2.11.0",
"eslint": "^8.57.1", "eslint": "^8.57.1",
"eslint-config-prettier": "^10.1.5", "eslint-config-prettier": "^10.1.8",
"eslint-config-standard": "^17.1.0", "eslint-config-standard": "^17.1.0",
"eslint-import-resolver-typescript": "^4.4.4", "eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-import": "^2.32.0", "eslint-plugin-import": "^2.32.0",
"eslint-plugin-jest": "^29.0.1", "eslint-plugin-jest": "^29.12.1",
"eslint-plugin-jsonc": "^2.20.1", "eslint-plugin-jsonc": "^2.21.0",
"eslint-plugin-n": "^17.20.0", "eslint-plugin-n": "^17.23.2",
"eslint-plugin-no-catch-all": "^1.1.0", "eslint-plugin-no-catch-all": "^1.1.0",
"eslint-plugin-prettier": "^5.5.1", "eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-promise": "^7.2.1", "eslint-plugin-promise": "^7.2.1",
"eslint-plugin-security": "^3.0.1", "eslint-plugin-security": "^3.0.1",
"jest": "^29.7.0", "jest": "^30.2.0",
"nodemon": "~3.1.10", "nodemon": "~3.1.11",
"prettier": "^3.6.2", "prettier": "^3.8.1",
"require-json5": "^1.3.0", "require-json5": "^1.3.0",
"rosie": "^2.1.1", "rosie": "^2.1.1",
"ts-jest": "^29.4.0", "ts-jest": "^29.4.6",
"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",
@ -133,7 +137,9 @@
"**/graphql-upload": "^11.0.0", "**/graphql-upload": "^11.0.0",
"**/strip-ansi": "6.0.1", "**/strip-ansi": "6.0.1",
"**/string-width": "4.2.0", "**/string-width": "4.2.0",
"**/wrap-ansi": "7.0.0" "**/wrap-ansi": "7.0.0",
"**/jwa": "^2.0.1",
"**/@types/express": "4.17.25"
}, },
"engines": { "engines": {
"node": ">=20.12.1" "node": ">=20.12.1"

View File

@ -30,29 +30,9 @@ const environment = {
: [], : [],
SEND_MAIL: env.NODE_ENV !== 'test', SEND_MAIL: env.NODE_ENV !== 'test',
LOG_LEVEL: 'DEBUG', LOG_LEVEL: 'DEBUG',
PROXY_S3: env.PROXY_S3,
} }
const required = {
MAPBOX_TOKEN: env.MAPBOX_TOKEN,
JWT_SECRET: env.JWT_SECRET,
PRIVATE_KEY_PASSPHRASE: env.PRIVATE_KEY_PASSPHRASE,
}
// https://stackoverflow.com/a/53050575
type NoUndefinedField<T> = { [P in keyof T]-?: NoUndefinedField<NonNullable<T[P]>> }
function assertRequiredConfig(
conf: typeof required,
): asserts conf is NoUndefinedField<typeof required> {
Object.entries(conf).forEach(([key, value]) => {
if (!value) {
throw new Error(`ERROR: "${key}" env variable is missing.`)
}
})
}
assertRequiredConfig(required)
const server = { const server = {
CLIENT_URI: env.CLIENT_URI ?? 'http://localhost:3000', CLIENT_URI: env.CLIENT_URI ?? 'http://localhost:3000',
GRAPHQL_URI: env.GRAPHQL_URI ?? 'http://localhost:4000', GRAPHQL_URI: env.GRAPHQL_URI ?? 'http://localhost:4000',
@ -68,7 +48,7 @@ const SMTP_PASSWORD = env.SMTP_PASSWORD
const SMTP_DKIM_DOMAINNAME = env.SMTP_DKIM_DOMAINNAME const SMTP_DKIM_DOMAINNAME = env.SMTP_DKIM_DOMAINNAME
const SMTP_DKIM_KEYSELECTOR = env.SMTP_DKIM_KEYSELECTOR const SMTP_DKIM_KEYSELECTOR = env.SMTP_DKIM_KEYSELECTOR
// PEM format = https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/PEM-file-format.html // PEM format = https://docs.progress.com/bundle/datadirect-hybrid-data-pipeline-installation-46/page/PEM-file-format.html
const SMTP_DKIM_PRIVATKEY = env.SMTP_DKIM_PRIVATKEY?.replace(/\\n/g, '\n') // replace all "\n" in .env string by real line break const SMTP_DKIM_PRIVATEKEY = env.SMTP_DKIM_PRIVATEKEY?.replace(/\\n/g, '\n') // replace all "\n" in .env string by real line break
const SMTP_MAX_CONNECTIONS = (env.SMTP_MAX_CONNECTIONS && parseInt(env.SMTP_MAX_CONNECTIONS)) || 5 const SMTP_MAX_CONNECTIONS = (env.SMTP_MAX_CONNECTIONS && parseInt(env.SMTP_MAX_CONNECTIONS)) || 5
const SMTP_MAX_MESSAGES = (env.SMTP_MAX_MESSAGES && parseInt(env.SMTP_MAX_MESSAGES)) || 100 const SMTP_MAX_MESSAGES = (env.SMTP_MAX_MESSAGES && parseInt(env.SMTP_MAX_MESSAGES)) || 100
@ -87,11 +67,11 @@ if (SMTP_USERNAME && SMTP_PASSWORD) {
pass: SMTP_PASSWORD, pass: SMTP_PASSWORD,
} }
} }
if (SMTP_DKIM_DOMAINNAME && SMTP_DKIM_KEYSELECTOR && SMTP_DKIM_PRIVATKEY) { if (SMTP_DKIM_DOMAINNAME && SMTP_DKIM_KEYSELECTOR && SMTP_DKIM_PRIVATEKEY) {
nodemailerTransportOptions.dkim = { nodemailerTransportOptions.dkim = {
domainName: SMTP_DKIM_DOMAINNAME, domainName: SMTP_DKIM_DOMAINNAME,
keySelector: SMTP_DKIM_KEYSELECTOR, keySelector: SMTP_DKIM_KEYSELECTOR,
privateKey: SMTP_DKIM_PRIVATKEY, privateKey: SMTP_DKIM_PRIVATEKEY,
} }
} }
@ -112,36 +92,38 @@ const redis = {
REDIS_PASSWORD: env.REDIS_PASSWORD, REDIS_PASSWORD: env.REDIS_PASSWORD,
} }
const s3 = { const required = {
EMAIL_DEFAULT_SENDER: env.EMAIL_DEFAULT_SENDER,
AWS_ACCESS_KEY_ID: env.AWS_ACCESS_KEY_ID, AWS_ACCESS_KEY_ID: env.AWS_ACCESS_KEY_ID,
AWS_SECRET_ACCESS_KEY: env.AWS_SECRET_ACCESS_KEY, AWS_SECRET_ACCESS_KEY: env.AWS_SECRET_ACCESS_KEY,
AWS_ENDPOINT: env.AWS_ENDPOINT, AWS_ENDPOINT: env.AWS_ENDPOINT,
AWS_REGION: env.AWS_REGION, AWS_REGION: env.AWS_REGION,
AWS_BUCKET: env.AWS_BUCKET, AWS_BUCKET: env.AWS_BUCKET,
S3_PUBLIC_GATEWAY: env.S3_PUBLIC_GATEWAY,
IMAGOR_PUBLIC_URL: env.IMAGOR_PUBLIC_URL,
IMAGOR_SECRET: env.IMAGOR_SECRET,
MAPBOX_TOKEN: env.MAPBOX_TOKEN,
JWT_SECRET: env.JWT_SECRET,
} }
export interface S3Configured { // https://stackoverflow.com/a/53050575
AWS_ACCESS_KEY_ID: string type NoUndefinedField<T> = { [P in keyof T]-?: NoUndefinedField<NonNullable<T[P]>> }
AWS_SECRET_ACCESS_KEY: string
AWS_ENDPOINT: string function assertRequiredConfig(
AWS_REGION: string conf: typeof required,
AWS_BUCKET: string ): asserts conf is NoUndefinedField<typeof required> {
S3_PUBLIC_GATEWAY: string | undefined Object.entries(conf).forEach(([key, value]) => {
if (!value) {
throw new Error(`ERROR: "${key}" env variable is missing.`)
}
})
} }
export const isS3configured = (config: typeof s3): config is S3Configured => { assertRequiredConfig(required)
return !!(
config.AWS_ACCESS_KEY_ID &&
config.AWS_SECRET_ACCESS_KEY &&
config.AWS_ENDPOINT &&
config.AWS_REGION &&
config.AWS_BUCKET
)
}
const options = { const options = {
EMAIL_DEFAULT_SENDER: env.EMAIL_DEFAULT_SENDER,
SUPPORT_EMAIL: env.SUPPORT_EMAIL, SUPPORT_EMAIL: env.SUPPORT_EMAIL,
SUPPORT_URL: emails.SUPPORT_LINK, SUPPORT_URL: emails.SUPPORT_LINK,
APPLICATION_NAME: metadata.APPLICATION_NAME, APPLICATION_NAME: metadata.APPLICATION_NAME,
@ -156,6 +138,9 @@ const options = {
MAX_PINNED_POSTS: Number.isNaN(Number(process.env.MAX_PINNED_POSTS)) MAX_PINNED_POSTS: Number.isNaN(Number(process.env.MAX_PINNED_POSTS))
? 1 ? 1
: Number(process.env.MAX_PINNED_POSTS), : Number(process.env.MAX_PINNED_POSTS),
MAX_GROUP_PINNED_POSTS: Number.isNaN(Number(process.env.MAX_GROUP_PINNED_POSTS))
? 1
: Number(process.env.MAX_GROUP_PINNED_POSTS),
} }
const language = { const language = {
@ -169,12 +154,21 @@ const CONFIG = {
...neo4j, ...neo4j,
...sentry, ...sentry,
...redis, ...redis,
...s3,
...options, ...options,
...language, ...language,
} }
export type Config = typeof CONFIG export type Config = typeof CONFIG
export type S3Config = Pick<
Config,
| 'AWS_ACCESS_KEY_ID'
| 'AWS_SECRET_ACCESS_KEY'
| 'AWS_ENDPOINT'
| 'AWS_REGION'
| 'AWS_BUCKET'
| 'IMAGOR_SECRET'
| 'IMAGOR_PUBLIC_URL'
>
export default CONFIG export default CONFIG
export { nodemailerTransportOptions } export { nodemailerTransportOptions }

View File

@ -0,0 +1,61 @@
import databaseContext from '@context/database'
const run = async () => {
const args = process.argv.slice(2)
if (args.length !== 1) {
// eslint-disable-next-line no-console
console.error('Usage: yarn run db:func:disable-notifications <email>')
// eslint-disable-next-line n/no-process-exit
process.exit(1)
}
const email = args[0]
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
if (!emailRegex.test(email)) {
// eslint-disable-next-line no-console
console.error('Error: Invalid email address format')
// eslint-disable-next-line n/no-process-exit
process.exit(1)
}
const { write } = databaseContext()
const result = (
await write({
query: `
MATCH (:EmailAddress {email: $email})-[:BELONGS_TO]->(user:User)
SET user.emailNotificationsFollowingUsers = false
SET user.emailNotificationsPostInGroup = false
SET user.emailNotificationsCommentOnObservedPost = false
SET user.emailNotificationsMention = false
SET user.emailNotificationsChatMessage = false
SET user.emailNotificationsGroupMemberJoined = false
SET user.emailNotificationsGroupMemberLeft = false
SET user.emailNotificationsGroupMemberRemoved = false
SET user.emailNotificationsGroupMemberRoleChanged = false
RETURN toString(count(user)) as count
`,
variables: {
email,
},
})
).records[0].get('count') as string
if (result !== '1') {
// eslint-disable-next-line no-console
console.error(`User with email address ${email} not found`)
// eslint-disable-next-line n/no-process-exit
process.exit(1)
}
// eslint-disable-next-line no-console
console.log(`Notifications for User with email address ${email} disabled`)
// eslint-disable-next-line n/no-process-exit
process.exit(0)
}
void (async function () {
await run()
})()

View File

@ -7,7 +7,7 @@
import { faker } from '@faker-js/faker' import { faker } from '@faker-js/faker'
import { hashSync } from 'bcryptjs' import { hashSync } from 'bcryptjs'
import { Factory } from 'rosie' import { Factory } from 'rosie'
import slugify from 'slug' import slugify from 'slugify'
import { v4 as uuid } from 'uuid' import { v4 as uuid } from 'uuid'
import { generateInviteCode } from '@graphql/resolvers/inviteCodes' import { generateInviteCode } from '@graphql/resolvers/inviteCodes'

View File

@ -37,42 +37,38 @@ export async function up(_next) {
urls = urls.filter((url) => url.startsWith('/uploads')) urls = urls.filter((url) => url.startsWith('/uploads'))
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log('URLS uploaded:') console.log('URLS uploaded:')
await Promise.all( for await (const url of urls) {
urls const { pathname } = new URL(url, 'http://example.org')
.map((url) => async () => { // TODO: find a better way to do this - this is quite a hack
const { pathname } = new URL(url, 'http://example.org') const fileLocation =
// TODO: find a better way to do this - this is quite a hack CONFIG.NODE_ENV === 'production'
const fileLocation = ? path.join(__dirname, `../../../../public/${pathname}`) // we're in the /build folder
CONFIG.NODE_ENV === 'production' : path.join(__dirname, `../../../public/${pathname}`)
? path.join(__dirname, `../../../../public/${pathname}`) // we're in the /build folder const s3Location = `original${pathname}`
: path.join(__dirname, `../../../public/${pathname}`) const mimeType = lookup(fileLocation)
const s3Location = `original${pathname}` // eslint-disable-next-line security/detect-non-literal-fs-filename
const mimeType = lookup(fileLocation) const fileHandle = await open(fileLocation)
// eslint-disable-next-line security/detect-non-literal-fs-filename const params = {
const fileHandle = await open(fileLocation) Bucket: AWS_BUCKET,
const params = { Key: s3Location,
Bucket: AWS_BUCKET, ACL: ObjectCannedACL.public_read,
Key: s3Location, ContentType: mimeType || 'image/jpeg',
ACL: ObjectCannedACL.public_read, Body: fileHandle.createReadStream(),
ContentType: mimeType || 'image/jpeg', }
Body: fileHandle.createReadStream(), const command = new Upload({ client: s3, params })
}
const command = new Upload({ client: s3, params })
const data = await command.done() const data = await command.done()
const { Location: spacesUrl } = data const { Location: spacesUrl } = data
const updatedRecord = await transaction.run( const updatedRecord = await transaction.run(
'MATCH (image:Image {url: $url}) SET image.url = $spacesUrl RETURN image.url as url', 'MATCH (image:Image {url: $url}) SET image.url = $spacesUrl RETURN image.url as url',
{ url, spacesUrl }, { url, spacesUrl },
) )
const [updatedUrl] = updatedRecord.records.map((record) => record.get('url') as string) const [updatedUrl] = updatedRecord.records.map((record) => record.get('url') as string)
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log(updatedUrl) console.log(updatedUrl)
return updatedUrl // return updatedUrl
}) }
.map((p) => p()),
)
await transaction.commit() await transaction.commit()
} catch (error) { } catch (error) {
// eslint-disable-next-line no-console // eslint-disable-next-line no-console

View File

@ -0,0 +1,51 @@
/* eslint-disable @typescript-eslint/no-unsafe-argument */
import { getDriver } from '@db/neo4j'
export const description = 'Delete follow relation for deleted users'
export async function up(_next) {
const driver = getDriver()
const session = driver.session()
const transaction = session.beginTransaction()
try {
// Implement your migration here.
await transaction.run(`
MATCH (:User {deleted: true})-[follow:FOLLOWS]-(:User)
DELETE follow;
`)
await transaction.commit()
} catch (error) {
// eslint-disable-next-line no-console
console.log(error)
await transaction.rollback()
// eslint-disable-next-line no-console
console.log('rolled back')
throw new Error(error)
} finally {
await session.close()
}
}
export async function down(_next) {
const driver = getDriver()
const session = driver.session()
const transaction = session.beginTransaction()
try {
// cannot be rolled back
// Implement your migration here.
// await transaction.run(``)
// await transaction.commit()
} catch (error) {
// eslint-disable-next-line no-console
console.log(error)
await transaction.rollback()
// eslint-disable-next-line no-console
console.log('rolled back')
throw new Error(error)
} finally {
await session.close()
}
}

View File

@ -18,7 +18,7 @@ export default {
}, },
title: { type: 'string', disallow: [null], min: 3 }, title: { type: 'string', disallow: [null], min: 3 },
slug: { type: 'string', allow: [null], unique: 'true' }, slug: { type: 'string', allow: [null], unique: 'true' },
content: { type: 'string', disallow: [null], min: 3 }, content: { type: 'string', disallow: [null], required: true, min: 3 },
contentExcerpt: { type: 'string', allow: [null] }, contentExcerpt: { type: 'string', allow: [null] },
deleted: { type: 'boolean', default: false }, deleted: { type: 'boolean', default: false },
disabled: { type: 'boolean', default: false }, disabled: { type: 'boolean', default: false },
@ -58,6 +58,7 @@ export default {
}, },
}, },
pinned: { type: 'boolean', default: null, valid: [null, true] }, pinned: { type: 'boolean', default: null, valid: [null, true] },
groupPinned: { type: 'boolean', default: null, valid: [null, true] },
postType: { type: 'string', default: 'Article', valid: ['Article', 'Event'] }, postType: { type: 'string', default: 'Article', valid: ['Article', 'Event'] },
observes: { observes: {
type: 'relationship', type: 'relationship',

View File

@ -1,36 +1,49 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-var-requires */
/* eslint-disable n/no-missing-require */
/* eslint-disable n/global-require */
// NOTE: We cannot use `fs` here to clean up the code. Cypress breaks on any npm // NOTE: We cannot use `fs` here to clean up the code. Cypress breaks on any npm
// module that is not browser-compatible. Node's `fs` module is server-side only // module that is not browser-compatible. Node's `fs` module is server-side only
// eslint-disable-next-line @typescript-eslint/no-explicit-any //
declare let Cypress: any | undefined // We use static imports instead of dynamic require() to ensure compatibility
// with both Node.js and Webpack (used by Cypress cucumber preprocessor).
import Badge from './Badge'
import Category from './Category'
import Comment from './Comment'
import Donations from './Donations'
import EmailAddress from './EmailAddress'
import File from './File'
import Group from './Group'
import Image from './Image'
import InviteCode from './InviteCode'
import Location from './Location'
import Migration from './Migration'
import Post from './Post'
import Report from './Report'
import SocialMedia from './SocialMedia'
import Tag from './Tag'
import UnverifiedEmailAddress from './UnverifiedEmailAddress'
import User from './User'
import type Neode from 'neode'
// Type assertion needed because TypeScript infers literal types from the model
// objects (e.g., type: 'string' as literal), but Neode expects the broader
// SchemaObject type with PropertyTypes union. The Neode type definitions are
// incomplete/incorrect, so we use double assertion to bypass the check.
export default { export default {
File: typeof Cypress !== 'undefined' ? require('./File') : require('./File').default, Badge,
Image: typeof Cypress !== 'undefined' ? require('./Image') : require('./Image').default, Category,
Badge: typeof Cypress !== 'undefined' ? require('./Badge') : require('./Badge').default, Comment,
User: typeof Cypress !== 'undefined' ? require('./User') : require('./User').default, Donations,
Group: typeof Cypress !== 'undefined' ? require('./Group') : require('./Group').default, EmailAddress,
EmailAddress: File,
typeof Cypress !== 'undefined' ? require('./EmailAddress') : require('./EmailAddress').default, Group,
UnverifiedEmailAddress: Image,
typeof Cypress !== 'undefined' InviteCode,
? require('./UnverifiedEmailAddress') Location,
: require('./UnverifiedEmailAddress').default, Migration,
SocialMedia: Post,
typeof Cypress !== 'undefined' ? require('./SocialMedia') : require('./SocialMedia').default, Report,
Post: typeof Cypress !== 'undefined' ? require('./Post') : require('./Post').default, SocialMedia,
Comment: typeof Cypress !== 'undefined' ? require('./Comment') : require('./Comment').default, Tag,
Category: typeof Cypress !== 'undefined' ? require('./Category') : require('./Category').default, UnverifiedEmailAddress,
Tag: typeof Cypress !== 'undefined' ? require('./Tag') : require('./Tag').default, User,
Location: typeof Cypress !== 'undefined' ? require('./Location') : require('./Location').default, } as unknown as Record<string, Neode.SchemaObject>
Donations:
typeof Cypress !== 'undefined' ? require('./Donations') : require('./Donations').default,
Report: typeof Cypress !== 'undefined' ? require('./Report') : require('./Report').default,
Migration:
typeof Cypress !== 'undefined' ? require('./Migration') : require('./Migration').default,
InviteCode:
typeof Cypress !== 'undefined' ? require('./InviteCode') : require('./InviteCode').default,
}

View File

@ -8,13 +8,13 @@ import sample from 'lodash/sample'
import CONFIG from '@config/index' import CONFIG from '@config/index'
import { categories } from '@constants/categories' import { categories } from '@constants/categories'
import { changeGroupMemberRoleMutation } from '@graphql/queries/changeGroupMemberRoleMutation' import { ChangeGroupMemberRole } from '@graphql/queries/ChangeGroupMemberRole'
import { createCommentMutation } from '@graphql/queries/createCommentMutation' import { CreateComment } from '@graphql/queries/CreateComment'
import { createGroupMutation } from '@graphql/queries/createGroupMutation' import { CreateGroup } from '@graphql/queries/CreateGroup'
import { CreateMessage } from '@graphql/queries/CreateMessage' import { CreateMessage } from '@graphql/queries/CreateMessage'
import { createPostMutation } from '@graphql/queries/createPostMutation' import { CreatePost } from '@graphql/queries/CreatePost'
import { createRoomMutation } from '@graphql/queries/createRoomMutation' import { CreateRoom } from '@graphql/queries/CreateRoom'
import { joinGroupMutation } from '@graphql/queries/joinGroupMutation' import { JoinGroup } from '@graphql/queries/JoinGroup'
import { createApolloTestSetup } from '@root/test/helpers' import { createApolloTestSetup } from '@root/test/helpers'
import Factory from './factories' import Factory from './factories'
@ -341,7 +341,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
console.log('seed', 'groups') console.log('seed', 'groups')
authenticatedUser = await peterLustig.toJson() authenticatedUser = await peterLustig.toJson()
await mutate({ await mutate({
mutation: createGroupMutation(), mutation: CreateGroup,
variables: { variables: {
id: 'g0', id: 'g0',
name: 'Investigative Journalism', name: 'Investigative Journalism',
@ -354,21 +354,21 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g0', groupId: 'g0',
userId: 'u2', userId: 'u2',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g0', groupId: 'g0',
userId: 'u4', userId: 'u4',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g0', groupId: 'g0',
userId: 'u6', userId: 'u6',
@ -376,7 +376,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g0', groupId: 'g0',
userId: 'u2', userId: 'u2',
@ -385,7 +385,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g0', groupId: 'g0',
userId: 'u4', userId: 'u4',
@ -396,7 +396,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log('seed', 'group posts') console.log('seed', 'group posts')
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p0-g0', id: 'p0-g0',
groupId: 'g0', groupId: 'g0',
@ -408,7 +408,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await bobDerBaumeister.toJson() authenticatedUser = await bobDerBaumeister.toJson()
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p1-g0', id: 'p1-g0',
groupId: 'g0', groupId: 'g0',
@ -420,7 +420,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await jennyRostock.toJson() authenticatedUser = await jennyRostock.toJson()
await mutate({ await mutate({
mutation: createGroupMutation(), mutation: CreateGroup,
variables: { variables: {
id: 'g1', id: 'g1',
name: 'School For Citizens', name: 'School For Citizens',
@ -433,35 +433,35 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u1', userId: 'u1',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u2', userId: 'u2',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u5', userId: 'u5',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u6', userId: 'u6',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u7', userId: 'u7',
@ -469,7 +469,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u1', userId: 'u1',
@ -477,7 +477,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u5', userId: 'u5',
@ -485,7 +485,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g1', groupId: 'g1',
userId: 'u6', userId: 'u6',
@ -493,7 +493,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p0-g1', id: 'p0-g1',
groupId: 'g1', groupId: 'g1',
@ -504,7 +504,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}) })
authenticatedUser = await peterLustig.toJson() authenticatedUser = await peterLustig.toJson()
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p1-g1', id: 'p1-g1',
groupId: 'g1', groupId: 'g1',
@ -516,7 +516,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await bobDerBaumeister.toJson() authenticatedUser = await bobDerBaumeister.toJson()
await mutate({ await mutate({
mutation: createGroupMutation(), mutation: CreateGroup,
variables: { variables: {
id: 'g2', id: 'g2',
name: 'Yoga Practice', name: 'Yoga Practice',
@ -528,35 +528,35 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u3', userId: 'u3',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u4', userId: 'u4',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u5', userId: 'u5',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u6', userId: 'u6',
}, },
}) })
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u7', userId: 'u7',
@ -564,7 +564,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u3', userId: 'u3',
@ -572,7 +572,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u4', userId: 'u4',
@ -580,7 +580,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u5', userId: 'u5',
@ -588,7 +588,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: changeGroupMemberRoleMutation(), mutation: ChangeGroupMemberRole,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: 'u6', userId: 'u6',
@ -598,7 +598,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await louie.toJson() authenticatedUser = await louie.toJson()
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p0-g2', id: 'p0-g2',
groupId: 'g2', groupId: 'g2',
@ -614,7 +614,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
const now = new Date() const now = new Date()
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'e0', id: 'e0',
title: 'Illegaler Kindergeburtstag', title: 'Illegaler Kindergeburtstag',
@ -629,7 +629,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'e1', id: 'e1',
title: 'Wir Schützen den Stuttgarter Schlossgarten', title: 'Wir Schützen den Stuttgarter Schlossgarten',
@ -644,7 +644,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'e2', id: 'e2',
title: 'IT 4 Change Treffen', title: 'IT 4 Change Treffen',
@ -848,7 +848,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
'The new physics of <a class="hashtag" data-hashtag-id="QuantenFlussTheorie" href="/?hashtag=QuantenFlussTheorie">#QuantenFlussTheorie</a> can explain <a class="hashtag" data-hashtag-id="QuantumGravity" href="/?hashtag=QuantumGravity">#QuantumGravity</a>! <a class="mention" data-mention-id="u1" href="/profile/u1">@peter-lustig</a> got that already. ;-)' 'The new physics of <a class="hashtag" data-hashtag-id="QuantenFlussTheorie" href="/?hashtag=QuantenFlussTheorie">#QuantenFlussTheorie</a> can explain <a class="hashtag" data-hashtag-id="QuantumGravity" href="/?hashtag=QuantumGravity">#QuantumGravity</a>! <a class="mention" data-mention-id="u1" href="/profile/u1">@peter-lustig</a> got that already. ;-)'
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p2', id: 'p2',
title: `Nature Philosophy Yoga`, title: `Nature Philosophy Yoga`,
@ -857,7 +857,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p7', id: 'p7',
title: 'This is post #7', title: 'This is post #7',
@ -866,7 +866,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p8', id: 'p8',
title: `Quantum Flow Theory explains Quantum Gravity`, title: `Quantum Flow Theory explains Quantum Gravity`,
@ -875,7 +875,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createPostMutation(), mutation: CreatePost,
variables: { variables: {
id: 'p12', id: 'p12',
title: 'This is post #12', title: 'This is post #12',
@ -899,7 +899,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
const mentionInComment2 = const mentionInComment2 =
'Did <a class="mention" data-mention-id="u1" href="/profile/u1">@peter-lustig</a> tell you?' 'Did <a class="mention" data-mention-id="u1" href="/profile/u1">@peter-lustig</a> tell you?'
await mutate({ await mutate({
mutation: createCommentMutation, mutation: CreateComment,
variables: { variables: {
id: 'c4', id: 'c4',
postId: 'p2', postId: 'p2',
@ -907,7 +907,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createCommentMutation, mutation: CreateComment,
variables: { variables: {
id: 'c4-1', id: 'c4-1',
postId: 'p2', postId: 'p2',
@ -915,7 +915,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
}, },
}) })
await mutate({ await mutate({
mutation: createCommentMutation, mutation: CreateComment,
variables: { variables: {
postId: 'p14', postId: 'p14',
content: faker.lorem.paragraph(), content: faker.lorem.paragraph(),
@ -1223,7 +1223,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = userObj authenticatedUser = userObj
await mutate({ await mutate({
mutation: joinGroupMutation(), mutation: JoinGroup,
variables: { variables: {
groupId: 'g2', groupId: 'g2',
userId: userObj.id, userId: userObj.id,
@ -1530,7 +1530,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
console.log('seed', 'chat') console.log('seed', 'chat')
authenticatedUser = await huey.toJson() authenticatedUser = await huey.toJson()
const { data: roomHueyPeter } = await mutate({ const { data: roomHueyPeter } = await mutate({
mutation: createRoomMutation(), mutation: CreateRoom,
variables: { variables: {
userId: (await peterLustig.toJson()).id, userId: (await peterLustig.toJson()).id,
}, },
@ -1557,7 +1557,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
authenticatedUser = await huey.toJson() authenticatedUser = await huey.toJson()
const { data: roomHueyJenny } = await mutate({ const { data: roomHueyJenny } = await mutate({
mutation: createRoomMutation(), mutation: CreateRoom,
variables: { variables: {
userId: (await jennyRostock.toJson()).id, userId: (await jennyRostock.toJson()).id,
}, },
@ -1584,7 +1584,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl']
for (const user of additionalUsers.slice(0, 99)) { for (const user of additionalUsers.slice(0, 99)) {
authenticatedUser = await jennyRostock.toJson() authenticatedUser = await jennyRostock.toJson()
const { data: room } = await mutate({ const { data: room } = await mutate({
mutation: createRoomMutation(), mutation: CreateRoom,
variables: { variables: {
userId: (await user.toJson()).id, userId: (await user.toJson()).id,
}, },

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendChatMessageMail English chat_message template 1`] = ` exports[`sendChatMessageMail English chat_message template 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendChatMessageMail English chat_message template 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendChatMessageMail English chat_message template 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -94,13 +100,13 @@ footer {
<p>you have received a new chat message from <a class="user" href="http://webapp:3000/profile/chatSender/chatsender">chatSender</a>. <p>you have received a new chat message from <a class="user" href="http://webapp:3000/profile/chatSender/chatsender">chatSender</a>.
</p><a class="button" href="http://webapp:3000/chat">Show Chat</a> </p><a class="button" href="http://webapp:3000/chat">Show Chat</a>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p><br> <p class="no-margin-top-bottom"> The ocelot.social Team</p><br>
<p>PS: If you don't want to receive e-mails anymore, change your <a class="settings" href="http://webapp:3000/settings/notifications">notification settings</a>!</p> <p class="no-margin-top-bottom">PS: If you don't want to receive e-mails anymore, change your <a class="settings" href="http://webapp:3000/settings/notifications">notification settings</a>!</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -129,14 +135,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "chatReceiver",
},
} }
`; `;
exports[`sendChatMessageMail German chat_message template 1`] = ` exports[`sendChatMessageMail German chat_message template 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -146,9 +158,10 @@ exports[`sendChatMessageMail German chat_message template 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -156,9 +169,10 @@ exports[`sendChatMessageMail German chat_message template 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -169,11 +183,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -184,10 +204,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -195,10 +214,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -207,7 +222,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -227,13 +242,13 @@ footer {
<p>du hast eine neue Chat-Nachricht von <a class="user" href="http://webapp:3000/profile/chatSender/chatsender">chatSender</a> erhalten. <p>du hast eine neue Chat-Nachricht von <a class="user" href="http://webapp:3000/profile/chatSender/chatsender">chatSender</a> erhalten.
</p><a class="button" href="http://webapp:3000/chat">Chat anzeigen</a> </p><a class="button" href="http://webapp:3000/chat">Chat anzeigen</a>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p><br> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p><br>
<p>PS: Möchtest du keine E-Mails mehr erhalten, dann ändere deine <a class="settings" href="http://webapp:3000/settings/notifications">Benachrichtigungseinstellungen</a>!</p> <p class="no-margin-top-bottom">PS: Möchtest du keine E-Mails mehr erhalten, dann ändere deine <a class="settings" href="http://webapp:3000/settings/notifications">Benachrichtigungseinstellungen</a>!</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -262,6 +277,9 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "chatReceiver",
},
} }
`; `;

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendEmailVerification English renders correctly 1`] = ` exports[`sendEmailVerification English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendEmailVerification English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendEmailVerification English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -95,12 +101,12 @@ footer {
<p>If you don't want to change your e-mail address feel free to ignore this message. </p> <p>If you don't want to change your e-mail address feel free to ignore this message. </p>
<p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -132,14 +138,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "User",
},
} }
`; `;
exports[`sendEmailVerification German renders correctly 1`] = ` exports[`sendEmailVerification German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -149,9 +161,10 @@ exports[`sendEmailVerification German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -159,9 +172,10 @@ exports[`sendEmailVerification German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -172,11 +186,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -187,10 +207,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -198,10 +217,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -210,7 +225,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -231,12 +246,12 @@ footer {
<p>Falls du deine E-Mail Adresse doch nicht ändern möchtest, kannst du diese Nachricht einfach ignorieren. </p> <p>Falls du deine E-Mail Adresse doch nicht ändern möchtest, kannst du diese Nachricht einfach ignorieren. </p>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -268,6 +283,9 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "User",
},
} }
`; `;

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendRegistrationMail with invite code English renders correctly 1`] = ` exports[`sendRegistrationMail with invite code English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendRegistrationMail with invite code English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendRegistrationMail with invite code English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -91,19 +97,19 @@ footer {
<h2>Welcome to ocelot.social!</h2> <h2>Welcome to ocelot.social!</h2>
<div class="wrapper"> <div class="wrapper">
<div class="content"></div> <div class="content"></div>
<p>Thank you for joining our cause it's awesome to have you on board. There's just one tiny step missing before we can start shaping the world together … Please confirm your e-mail address by clicking the button below:</p><a class="button" href="http://webapp:3000/registration?email=user%40example.org&amp;nonce=123456&amp;inviteCode=welcome&amp;method=invite-code">Confirm your e-mail address</a> <p>Thank you for joining our cause it's awesome to have you on board. There's just one tiny step missing before we can start shaping the world together … Please confirm your e-mail address by clicking the button below:</p><a class="button" href="http://webapp:3000/registration?email=moderator%40example.org&amp;nonce=123456&amp;inviteCode=welcome&amp;method=invite-code">Confirm your e-mail address</a>
<p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p>
<p>However, this only works if you have registered through our website.</p> <p>However, this only works if you have registered through our website.</p>
<p>If you didn't sign up for <a>ocelot.social</a> we recommend you to check it out! It's a social network from people for people who want to connect and change the world together. <p>If you didn't sign up for <a>ocelot.social</a> we recommend you to check it out! It's a social network from people for people who want to connect and change the world together.
</p> </p>
<p>PS: If you ignore this e-mail we will not create an account for you. ;)</p> <p>PS: If you ignore this e-mail we will not create an account for you. ;)</p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -119,7 +125,7 @@ just one tiny step missing before we can start shaping the world together …
Please confirm your e-mail address by clicking the button below: Please confirm your e-mail address by clicking the button below:
Confirm your e-mail address Confirm your e-mail address
[http://webapp:3000/registration?email=user%40example.org&nonce=123456&inviteCode=welcome&method=invite-code] [http://webapp:3000/registration?email=moderator%40example.org&nonce=123456&inviteCode=welcome&method=invite-code]
If the above button doesn't work, you can also copy the following code into your If the above button doesn't work, you can also copy the following code into your
browser window: 123456 browser window: 123456
@ -141,14 +147,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;
exports[`sendRegistrationMail with invite code German renders correctly 1`] = ` exports[`sendRegistrationMail with invite code German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -158,9 +170,10 @@ exports[`sendRegistrationMail with invite code German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -168,9 +181,10 @@ exports[`sendRegistrationMail with invite code German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -181,11 +195,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -196,10 +216,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -207,10 +226,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -219,7 +234,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -236,19 +251,19 @@ footer {
<h2>Willkommen bei ocelot.social!</h2> <h2>Willkommen bei ocelot.social!</h2>
<div class="wrapper"> <div class="wrapper">
<div class="content"></div> <div class="content"></div>
<p>Danke, dass du dich angemeldet hast wir freuen uns, dich dabei zu haben. Jetzt fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können … Bitte bestätige deine E-Mail Adresse:</p><a class="button" href="http://webapp:3000/registration?email=user%40example.org&amp;nonce=123456&amp;inviteCode=welcome&amp;method=invite-code">Bestätige deine E-Mail Adresse</a> <p>Danke, dass du dich angemeldet hast wir freuen uns, dich dabei zu haben. Jetzt fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können … Bitte bestätige deine E-Mail Adresse:</p><a class="button" href="http://webapp:3000/registration?email=moderator%40example.org&amp;nonce=123456&amp;inviteCode=welcome&amp;method=invite-code">Bestätige deine E-Mail Adresse</a>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<p>Das funktioniert allerdings nur, wenn du dich über unsere Website registriert hast.</p> <p>Das funktioniert allerdings nur, wenn du dich über unsere Website registriert hast.</p>
<p>Falls du dich nicht selbst bei <a>ocelot.social</a> angemeldet hast, schau doch mal vorbei! Wir sind ein gemeinnütziges Aktionsnetzwerk von Menschen für Menschen. <p>Falls du dich nicht selbst bei <a>ocelot.social</a> angemeldet hast, schau doch mal vorbei! Wir sind ein gemeinnütziges Aktionsnetzwerk von Menschen für Menschen.
</p> </p>
<p>PS: Wenn du keinen Account bei uns möchtest, kannst du diese E-Mail einfach ignorieren. ;)</p> <p>PS: Wenn du keinen Account bei uns möchtest, kannst du diese E-Mail einfach ignorieren. ;)</p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -264,7 +279,7 @@ fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können
… Bitte bestätige deine E-Mail Adresse: … Bitte bestätige deine E-Mail Adresse:
Bestätige deine E-Mail Adresse Bestätige deine E-Mail Adresse
[http://webapp:3000/registration?email=user%40example.org&nonce=123456&inviteCode=welcome&method=invite-code] [http://webapp:3000/registration?email=moderator%40example.org&nonce=123456&inviteCode=welcome&method=invite-code]
Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in
dein Browserfenster kopieren: 123456 dein Browserfenster kopieren: 123456
@ -287,14 +302,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;
exports[`sendRegistrationMail without invite code English renders correctly 1`] = ` exports[`sendRegistrationMail without invite code English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -304,9 +325,10 @@ exports[`sendRegistrationMail without invite code English renders correctly 1`]
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -314,9 +336,10 @@ exports[`sendRegistrationMail without invite code English renders correctly 1`]
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -327,11 +350,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -342,10 +371,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -353,10 +381,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -365,7 +389,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -382,19 +406,19 @@ footer {
<h2>Welcome to ocelot.social!</h2> <h2>Welcome to ocelot.social!</h2>
<div class="wrapper"> <div class="wrapper">
<div class="content"></div> <div class="content"></div>
<p>Thank you for joining our cause it's awesome to have you on board. There's just one tiny step missing before we can start shaping the world together … Please confirm your e-mail address by clicking the button below:</p><a class="button" href="http://webapp:3000/registration?email=user%40example.org&amp;nonce=123456&amp;method=invite-mail">Confirm your e-mail address</a> <p>Thank you for joining our cause it's awesome to have you on board. There's just one tiny step missing before we can start shaping the world together … Please confirm your e-mail address by clicking the button below:</p><a class="button" href="http://webapp:3000/registration?email=moderator%40example.org&amp;nonce=123456&amp;method=invite-mail">Confirm your e-mail address</a>
<p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work, you can also copy the following code into your browser window: <span>123456</span></p>
<p>However, this only works if you have registered through our website.</p> <p>However, this only works if you have registered through our website.</p>
<p>If you didn't sign up for <a>ocelot.social</a> we recommend you to check it out! It's a social network from people for people who want to connect and change the world together. <p>If you didn't sign up for <a>ocelot.social</a> we recommend you to check it out! It's a social network from people for people who want to connect and change the world together.
</p> </p>
<p>PS: If you ignore this e-mail we will not create an account for you. ;)</p> <p>PS: If you ignore this e-mail we will not create an account for you. ;)</p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -410,7 +434,7 @@ just one tiny step missing before we can start shaping the world together …
Please confirm your e-mail address by clicking the button below: Please confirm your e-mail address by clicking the button below:
Confirm your e-mail address Confirm your e-mail address
[http://webapp:3000/registration?email=user%40example.org&nonce=123456&method=invite-mail] [http://webapp:3000/registration?email=moderator%40example.org&nonce=123456&method=invite-mail]
If the above button doesn't work, you can also copy the following code into your If the above button doesn't work, you can also copy the following code into your
browser window: 123456 browser window: 123456
@ -432,14 +456,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;
exports[`sendRegistrationMail without invite code German renders correctly 1`] = ` exports[`sendRegistrationMail without invite code German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -449,9 +479,10 @@ exports[`sendRegistrationMail without invite code German renders correctly 1`] =
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -459,9 +490,10 @@ exports[`sendRegistrationMail without invite code German renders correctly 1`] =
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -472,11 +504,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -487,10 +525,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -498,10 +535,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -510,7 +543,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -527,19 +560,19 @@ footer {
<h2>Willkommen bei ocelot.social!</h2> <h2>Willkommen bei ocelot.social!</h2>
<div class="wrapper"> <div class="wrapper">
<div class="content"></div> <div class="content"></div>
<p>Danke, dass du dich angemeldet hast wir freuen uns, dich dabei zu haben. Jetzt fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können … Bitte bestätige deine E-Mail Adresse:</p><a class="button" href="http://webapp:3000/registration?email=user%40example.org&amp;nonce=123456&amp;method=invite-mail">Bestätige deine E-Mail Adresse</a> <p>Danke, dass du dich angemeldet hast wir freuen uns, dich dabei zu haben. Jetzt fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können … Bitte bestätige deine E-Mail Adresse:</p><a class="button" href="http://webapp:3000/registration?email=moderator%40example.org&amp;nonce=123456&amp;method=invite-mail">Bestätige deine E-Mail Adresse</a>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<p>Das funktioniert allerdings nur, wenn du dich über unsere Website registriert hast.</p> <p>Das funktioniert allerdings nur, wenn du dich über unsere Website registriert hast.</p>
<p>Falls du dich nicht selbst bei <a>ocelot.social</a> angemeldet hast, schau doch mal vorbei! Wir sind ein gemeinnütziges Aktionsnetzwerk von Menschen für Menschen. <p>Falls du dich nicht selbst bei <a>ocelot.social</a> angemeldet hast, schau doch mal vorbei! Wir sind ein gemeinnütziges Aktionsnetzwerk von Menschen für Menschen.
</p> </p>
<p>PS: Wenn du keinen Account bei uns möchtest, kannst du diese E-Mail einfach ignorieren. ;)</p> <p>PS: Wenn du keinen Account bei uns möchtest, kannst du diese E-Mail einfach ignorieren. ;)</p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -555,7 +588,7 @@ fehlt nur noch eine Kleinigkeit, bevor wir gemeinsam die Welt verbessern können
… Bitte bestätige deine E-Mail Adresse: … Bitte bestätige deine E-Mail Adresse:
Bestätige deine E-Mail Adresse Bestätige deine E-Mail Adresse
[http://webapp:3000/registration?email=user%40example.org&nonce=123456&method=invite-mail] [http://webapp:3000/registration?email=moderator%40example.org&nonce=123456&method=invite-mail]
Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in
dein Browserfenster kopieren: 123456 dein Browserfenster kopieren: 123456
@ -578,6 +611,9 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendResetPasswordMail English renders correctly 1`] = ` exports[`sendResetPasswordMail English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendResetPasswordMail English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendResetPasswordMail English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -95,12 +101,12 @@ footer {
<p>If you didn't request a new password feel free to ignore this e-mail.</p> <p>If you didn't request a new password feel free to ignore this e-mail.</p>
<p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -131,14 +137,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;
exports[`sendResetPasswordMail German renders correctly 1`] = ` exports[`sendResetPasswordMail German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -148,9 +160,10 @@ exports[`sendResetPasswordMail German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -158,9 +171,10 @@ exports[`sendResetPasswordMail German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -171,11 +185,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -186,10 +206,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -197,10 +216,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -209,7 +224,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -230,12 +245,12 @@ footer {
<p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p> <p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -267,6 +282,9 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendWrongEmail English renders correctly 1`] = ` exports[`sendWrongEmail English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendWrongEmail English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendWrongEmail English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -95,12 +101,12 @@ footer {
<p>If you don't have an account at <a>ocelot.social</a> yet or if you didn't want to reset your password, please ignore this e-mail. <p>If you don't have an account at <a>ocelot.social</a> yet or if you didn't want to reset your password, please ignore this e-mail.
</p> </p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -129,14 +135,20 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;
exports[`sendWrongEmail German renders correctly 1`] = ` exports[`sendWrongEmail German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -146,9 +158,10 @@ exports[`sendWrongEmail German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -156,9 +169,10 @@ exports[`sendWrongEmail German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -169,11 +183,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -184,10 +204,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -195,10 +214,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -207,7 +222,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -228,12 +243,12 @@ footer {
<p>Wenn du noch keinen Account bei <a>ocelot.social</a> hast oder dein Password gar nicht ändern willst, kannst du diese E-Mail einfach ignorieren! <p>Wenn du noch keinen Account bei <a>ocelot.social</a> hast oder dein Password gar nicht ändern willst, kannst du diese E-Mail einfach ignorieren!
</p> </p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:devops@ocelot.social">devops@ocelot.social</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -262,6 +277,9 @@ devops@ocelot.social [devops@ocelot.social]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "moderator@example.org",
"name": "Bob &"?@\\ Baumeister",
},
} }
`; `;

View File

@ -1,9 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`sendResetPasswordMail with support English renders correctly 1`] = ` exports[`sendResetPasswordMail with support English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -13,9 +16,10 @@ exports[`sendResetPasswordMail with support English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -23,9 +27,10 @@ exports[`sendResetPasswordMail with support English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -36,11 +41,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -51,10 +62,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -62,10 +72,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -74,7 +80,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -95,12 +101,12 @@ footer {
<p>If you didn't request a new password feel free to ignore this e-mail.</p> <p>If you didn't request a new password feel free to ignore this e-mail.</p>
<p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>If you have questions or problems, feel free to contact our support: <a href="mailto:support@example.org">support@example.org</a></p> <p class="no-margin-top-bottom">If you have questions or problems, feel free to contact our support: <a href="mailto:support@example.org">support@example.org</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -131,14 +137,20 @@ support@example.org [support@example.org]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;
exports[`sendResetPasswordMail with support German renders correctly 1`] = ` exports[`sendResetPasswordMail with support German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -148,9 +160,10 @@ exports[`sendResetPasswordMail with support German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -158,9 +171,10 @@ exports[`sendResetPasswordMail with support German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -171,11 +185,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -186,10 +206,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -197,10 +216,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -209,7 +224,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -230,12 +245,12 @@ footer {
<p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p> <p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<div class="support"> <div class="support">
<p>Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:support@example.org">support@example.org</a></p> <p class="no-margin-top-bottom">Wenn du Fragen oder Probleme hast, kannst du dich gerne an den Support wenden: <a href="mailto:support@example.org">support@example.org</a></p>
</div> </div>
<footer> <footer>
<div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a> <div class="footer"></div><a href="https://ocelot.social">ocelot.social Community</a>
@ -267,14 +282,20 @@ support@example.org [support@example.org]
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;
exports[`sendResetPasswordMail without support English renders correctly 1`] = ` exports[`sendResetPasswordMail without support English renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
@ -284,9 +305,10 @@ exports[`sendResetPasswordMail without support English renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -294,9 +316,10 @@ exports[`sendResetPasswordMail without support English renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -307,11 +330,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -322,10 +351,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -333,10 +361,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -345,7 +369,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -366,8 +390,8 @@ footer {
<p>If you didn't request a new password feel free to ignore this e-mail.</p> <p>If you didn't request a new password feel free to ignore this e-mail.</p>
<p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p> <p>If the above button doesn't work you can also copy the following code into your browser window: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">See you soon on <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> The ocelot.social Team</p> <p class="no-margin-top-bottom"> The ocelot.social Team</p>
</div> </div>
</div> </div>
<footer> <footer>
@ -396,14 +420,20 @@ See you soon on ocelot.social [https://ocelot.social]!
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;
exports[`sendResetPasswordMail without support German renders correctly 1`] = ` exports[`sendResetPasswordMail without support German renders correctly 1`] = `
{ {
"attachments": [], "attachments": [],
"from": "ocelot.social <devops@ocelot.social>", "from": {
"address": "devops@ocelot.social",
"name": "ocelot.social",
},
"html": "<!DOCTYPE html> "html": "<!DOCTYPE html>
<html lang="de"> <html lang="de">
<head> <head>
@ -413,9 +443,10 @@ exports[`sendResetPasswordMail without support German renders correctly 1`] = `
<style>body{ <style>body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -423,9 +454,10 @@ exports[`sendResetPasswordMail without support German renders correctly 1`] = `
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -436,11 +468,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -451,10 +489,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -462,10 +499,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -474,7 +507,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;
@ -495,8 +528,8 @@ footer {
<p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p> <p>Falls du kein neues Passwort angefordert hast, kannst du diese E-Mail einfach ignorieren.</p>
<p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p> <p>Sollte der Button für dich nicht funktionieren, kannst du auch folgenden Code in dein Browserfenster kopieren: <span>123456</span></p>
<div class="text-block"> <div class="text-block">
<p>Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p> <p class="no-margin-top-bottom">Bis bald bei <a class="organization" href="https://ocelot.social">ocelot.social</a>!</p>
<p> Dein ocelot.social Team</p> <p class="no-margin-top-bottom"> Dein ocelot.social Team</p>
</div> </div>
</div> </div>
<footer> <footer>
@ -526,6 +559,9 @@ Bis bald bei ocelot.social [https://ocelot.social]!
ocelot.social Community [https://ocelot.social]", ocelot.social Community [https://ocelot.social]",
"to": "user@example.org", "to": {
"address": "user@example.org",
"name": "Jenny Rostock",
},
} }
`; `;

View File

@ -2,7 +2,6 @@
/* eslint-disable @typescript-eslint/no-unsafe-member-access */ /* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unsafe-argument */ /* eslint-disable @typescript-eslint/no-unsafe-argument */
/* eslint-disable @typescript-eslint/restrict-template-expressions */
import path from 'node:path' import path from 'node:path'
import Email from 'email-templates' import Email from 'email-templates'
@ -29,7 +28,7 @@ export const defaultParams = {
renderSettingsUrl: true, renderSettingsUrl: true,
} }
const from = `${CONFIG.APPLICATION_NAME} <${CONFIG.EMAIL_DEFAULT_SENDER}>` const from = { name: CONFIG.APPLICATION_NAME, address: CONFIG.EMAIL_DEFAULT_SENDER }
const transport = createTransport(nodemailerTransportOptions) const transport = createTransport(nodemailerTransportOptions)
@ -74,8 +73,8 @@ interface OriginalMessage {
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
export const sendNotificationMail = async (notification: any): Promise<OriginalMessage> => { export const sendNotificationMail = async (notification: any): Promise<OriginalMessage> => {
const locale = notification?.to?.locale const locale = notification?.to?.locale
const to = notification?.email
const name = notification?.to?.name const name = notification?.to?.name
const to = { name, address: notification?.email }
const template = notification?.reason const template = notification?.reason
try { try {
@ -94,8 +93,8 @@ export const sendNotificationMail = async (notification: any): Promise<OriginalM
: notification?.from?.title, : notification?.from?.title,
postUrl: new URL( postUrl: new URL(
notification?.from?.__typename === 'Comment' notification?.from?.__typename === 'Comment'
? `/post/${notification?.from?.post?.id}/${notification?.from?.post?.slug}` ? `/post/${encodeURIComponent(notification?.from?.post?.id)}/${encodeURIComponent(notification?.from?.post?.slug)}`
: `/post/${notification?.from?.id}/${notification?.from?.slug}`, : `/post/${encodeURIComponent(notification?.from?.id)}/${encodeURIComponent(notification?.from?.slug)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
), ),
postAuthorName: postAuthorName:
@ -106,7 +105,7 @@ export const sendNotificationMail = async (notification: any): Promise<OriginalM
notification?.from?.__typename === 'Comment' notification?.from?.__typename === 'Comment'
? undefined ? undefined
: new URL( : new URL(
`user/${notification?.from?.author?.id}/${notification?.from?.author?.slug}`, `profile/${encodeURIComponent(notification?.from?.author?.id)}/${encodeURIComponent(notification?.from?.author?.slug)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
), ),
commenterName: commenterName:
@ -116,14 +115,14 @@ export const sendNotificationMail = async (notification: any): Promise<OriginalM
commenterUrl: commenterUrl:
notification?.from?.__typename === 'Comment' notification?.from?.__typename === 'Comment'
? new URL( ? new URL(
`/profile/${notification?.from?.author?.id}/${notification?.from?.author?.slug}`, `/profile/${encodeURIComponent(notification?.from?.author?.id)}/${encodeURIComponent(notification?.from?.author?.slug)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
) )
: undefined, : undefined,
commentUrl: commentUrl:
notification?.from?.__typename === 'Comment' notification?.from?.__typename === 'Comment'
? new URL( ? new URL(
`/post/${notification?.from?.post?.id}/${notification?.from?.post?.slug}#commentId-${notification?.from?.id}`, `/post/${encodeURIComponent(notification?.from?.post?.id)}/${encodeURIComponent(notification?.from?.post?.slug)}#commentId-${encodeURIComponent(notification?.from?.id)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
) )
: undefined, : undefined,
@ -132,7 +131,7 @@ export const sendNotificationMail = async (notification: any): Promise<OriginalM
groupUrl: groupUrl:
notification?.from?.__typename === 'Group' notification?.from?.__typename === 'Group'
? new URL( ? new URL(
`/groups/${notification?.from?.id}/${notification?.from?.slug}`, `/groups/${encodeURIComponent(notification?.from?.id)}/${encodeURIComponent(notification?.from?.slug)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
) )
: undefined, : undefined,
@ -143,7 +142,7 @@ export const sendNotificationMail = async (notification: any): Promise<OriginalM
groupRelatedUserUrl: groupRelatedUserUrl:
notification?.from?.__typename === 'Group' notification?.from?.__typename === 'Group'
? new URL( ? new URL(
`/profile/${notification?.relatedUser?.id}/${notification?.relatedUser?.slug}`, `/profile/${encodeURIComponent(notification?.relatedUser?.id)}/${encodeURIComponent(notification?.relatedUser?.slug)}`,
CONFIG.CLIENT_URI, CONFIG.CLIENT_URI,
) )
: undefined, : undefined,
@ -165,7 +164,7 @@ export const sendChatMessageMail = async (
data: ChatMessageEmailInput, data: ChatMessageEmailInput,
): Promise<OriginalMessage> => { ): Promise<OriginalMessage> => {
const { senderUser, recipientUser } = data const { senderUser, recipientUser } = data
const to = data.email const to = { name: recipientUser.name, address: data.email }
try { try {
const { originalMessage } = await email.send({ const { originalMessage } = await email.send({
template: path.join(__dirname, 'templates', 'chat_message'), template: path.join(__dirname, 'templates', 'chat_message'),
@ -177,7 +176,10 @@ export const sendChatMessageMail = async (
locale: recipientUser.locale, locale: recipientUser.locale,
name: recipientUser.name, name: recipientUser.name,
chattingUser: senderUser.name, chattingUser: senderUser.name,
chattingUserUrl: new URL(`/profile/${senderUser.id}/${senderUser.slug}`, CONFIG.CLIENT_URI), chattingUserUrl: new URL(
`/profile/${encodeURIComponent(senderUser.id)}/${encodeURIComponent(senderUser.slug)}`,
CONFIG.CLIENT_URI,
),
chatUrl: new URL('/chat', CONFIG.CLIENT_URI), chatUrl: new URL('/chat', CONFIG.CLIENT_URI),
}, },
}) })
@ -188,6 +190,7 @@ export const sendChatMessageMail = async (
} }
interface VerifyMailInput { interface VerifyMailInput {
name: string
email: string email: string
nonce: string nonce: string
locale: string locale: string
@ -200,10 +203,10 @@ interface RegistrationMailInput extends VerifyMailInput {
export const sendRegistrationMail = async ( export const sendRegistrationMail = async (
data: RegistrationMailInput, data: RegistrationMailInput,
): Promise<OriginalMessage> => { ): Promise<OriginalMessage> => {
const { nonce, locale, inviteCode } = data const { name, nonce, locale, inviteCode } = data
const to = data.email const to = { name, address: data.email }
const actionUrl = new URL('/registration', CONFIG.CLIENT_URI) const actionUrl = new URL('/registration', CONFIG.CLIENT_URI)
actionUrl.searchParams.set('email', to) actionUrl.searchParams.set('email', to.address)
actionUrl.searchParams.set('nonce', nonce) actionUrl.searchParams.set('nonce', nonce)
if (inviteCode) { if (inviteCode) {
actionUrl.searchParams.set('inviteCode', inviteCode) actionUrl.searchParams.set('inviteCode', inviteCode)
@ -240,9 +243,9 @@ export const sendEmailVerification = async (
data: EmailVerificationInput, data: EmailVerificationInput,
): Promise<OriginalMessage> => { ): Promise<OriginalMessage> => {
const { nonce, locale, name } = data const { nonce, locale, name } = data
const to = data.email const to = { name, address: data.email }
const actionUrl = new URL('/settings/my-email-address/verify', CONFIG.CLIENT_URI) const actionUrl = new URL('/settings/my-email-address/verify', CONFIG.CLIENT_URI)
actionUrl.searchParams.set('email', to) actionUrl.searchParams.set('email', to.address)
actionUrl.searchParams.set('nonce', nonce) actionUrl.searchParams.set('nonce', nonce)
try { try {
@ -270,9 +273,9 @@ export const sendResetPasswordMail = async (
data: EmailVerificationInput, data: EmailVerificationInput,
): Promise<OriginalMessage> => { ): Promise<OriginalMessage> => {
const { nonce, locale, name } = data const { nonce, locale, name } = data
const to = data.email const to = { name, address: data.email }
const actionUrl = new URL('/password-reset/change-password', CONFIG.CLIENT_URI) const actionUrl = new URL('/password-reset/change-password', CONFIG.CLIENT_URI)
actionUrl.searchParams.set('email', to) actionUrl.searchParams.set('email', to.address)
actionUrl.searchParams.set('nonce', nonce) actionUrl.searchParams.set('nonce', nonce)
try { try {
const { originalMessage } = await email.send({ const { originalMessage } = await email.send({
@ -296,11 +299,12 @@ export const sendResetPasswordMail = async (
} }
export const sendWrongEmail = async (data: { export const sendWrongEmail = async (data: {
name: string
locale: string locale: string
email: string email: string
}): Promise<OriginalMessage> => { }): Promise<OriginalMessage> => {
const { locale } = data const { locale, name } = data
const to = data.email const to = { name, address: data.email }
const actionUrl = new URL('/password-reset/request', CONFIG.CLIENT_URI) const actionUrl = new URL('/password-reset/request', CONFIG.CLIENT_URI)
try { try {
const { originalMessage } = await email.send({ const { originalMessage } = await email.send({

View File

@ -7,12 +7,14 @@ import { sendRegistrationMail } from './sendEmail'
describe('sendRegistrationMail', () => { describe('sendRegistrationMail', () => {
const data: { const data: {
name: string
email: string email: string
nonce: string nonce: string
locale: string locale: string
inviteCode?: string inviteCode?: string
} = { } = {
email: 'user@example.org', name: 'Bob &"?@\\ Baumeister',
email: 'moderator@example.org',
nonce: '123456', nonce: '123456',
locale: 'en', locale: 'en',
inviteCode: 'welcome', inviteCode: 'welcome',

View File

@ -7,10 +7,12 @@ import { sendWrongEmail } from './sendEmail'
describe('sendWrongEmail', () => { describe('sendWrongEmail', () => {
const data: { const data: {
name: string
email: string email: string
locale: string locale: string
} = { } = {
email: 'user@example.org', name: 'Bob &"?@\\ Baumeister',
email: 'moderator@example.org',
locale: 'en', locale: 'en',
} }

View File

@ -3,5 +3,5 @@ extend ../layout.pug
block content block content
.content .content
- var groupUrl = groupUrl - var groupUrl = groupUrl
p= t('changedGroupMemberRole', { groupName }) p!= t('changedGroupMemberRole', { groupName })
a.button(href=groupUrl)= t('buttons.viewGroup') a.button(href=groupUrl)!= t('buttons.viewGroup')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.changedGroupMemberRole')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.changedGroupMemberRole')}`

View File

@ -2,7 +2,7 @@ extend ../layout.pug
block content block content
.content .content
p= t('chatMessageStart') p!= t('chatMessageStart')
a.user(href=chattingUserUrl)= chattingUser a.user(href=chattingUserUrl)!= chattingUser
= t('chatMessageEnd') != t('chatMessageEnd')
a.button(href=chatUrl)= t('buttons.viewChat') a.button(href=chatUrl)!= t('buttons.viewChat')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.chatMessage')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.chatMessage')}`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=commenterUrl)= commenterName a.user(href=commenterUrl)!= commenterName
= t('commentedOnPost', { postTitle}) != t('commentedOnPost', { postTitle})
a.button(href=commentUrl)= t('buttons.viewComment') a.button(href=commentUrl)!= t('buttons.viewComment')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.commentedOnPost')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.commentedOnPost')}`

View File

@ -2,9 +2,9 @@ extend ../layout.pug
block content block content
.content .content
p= t('emailVerification.introduction') p!= t('emailVerification.introduction')
a.button(href=actionUrl)= t('buttons.verifyEmail') a.button(href=actionUrl)!= t('buttons.verifyEmail')
p= t('emailVerification.doNotChange') p!= t('emailVerification.doNotChange')
p= t('emailVerification.codeHint') p!= t('emailVerification.codeHint')
span= nonce span!= nonce

View File

@ -1 +1 @@
= `${t('subjects.newEmail')} ${APPLICATION_NAME}` != `${t('subjects.newEmail')} ${APPLICATION_NAME}`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=postAuthorUrl)= postAuthorName a.user(href=postAuthorUrl)!= postAuthorName
= t('followedUserPosted', { postTitle }) != t('followedUserPosted', { postTitle })
a.button(href=postUrl)= t('buttons.viewPost') a.button(href=postUrl)!= t('buttons.viewPost')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.followedUserPosted')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.followedUserPosted')}`

View File

@ -2,4 +2,4 @@ footer
.footer .footer
- var organizationUrl = ORGANIZATION_URL - var organizationUrl = ORGANIZATION_URL
- var organizationName = ORGANIZATION_NAME - var organizationName = ORGANIZATION_NAME
a(href=organizationUrl)= organizationName a(href=organizationUrl)!= organizationName

View File

@ -4,14 +4,14 @@
- var team = APPLICATION_NAME - var team = APPLICATION_NAME
- var settingsUrl = settingsUrl - var settingsUrl = settingsUrl
- var renderSettingsUrl = renderSettingsUrl - var renderSettingsUrl = renderSettingsUrl
p= t('general.seeYou') p.no-margin-top-bottom!= t('general.seeYou')
a.organization(href=organizationUrl)= team a.organization(href=organizationUrl)!= team
| ! | !
p= t('general.yourTeam', { team }) p.no-margin-top-bottom!= t('general.yourTeam', { team })
if renderSettingsUrl if renderSettingsUrl
br br
p= t('general.settingsHint') p.no-margin-top-bottom!= t('general.settingsHint')
a.settings(href=settingsUrl)= t('general.settingsName') a.settings(href=settingsUrl)!= t('general.settingsName')
| ! | !

View File

@ -1 +1 @@
h2= `${t('general.greeting')} ${name},` h2!= `${t('general.greeting')} ${name},`

View File

@ -1,2 +1,2 @@
p= t('support') p.no-margin-top-bottom!= t('support')
a(href='mailto:' + supportEmail)= supportEmail a(href='mailto:' + supportEmail)!= supportEmail

View File

@ -1,9 +1,10 @@
body{ body{
display: block; display: block;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 17px; font-size: 16px;
text-align: left; text-align: left;
text-align: -webkit-left; text-align: -webkit-left;
line-height: 24px;
justify-content: center; justify-content: center;
padding: 15px; padding: 15px;
margin: 0px; margin: 0px;
@ -11,9 +12,10 @@ body{
h2 { h2 {
margin-top: 25px; margin-top: 25px;
font-size: 25px; margin-bottom: 30px;
font-size: 24px;
font-weight: normal; font-weight: normal;
line-height: 22px; line-height: 24px;
color: #333333; color: #333333;
} }
@ -24,11 +26,17 @@ h2 {
} }
.head-logo { .head-logo {
width: 60%; width: 30%;
height: auto; height: auto;
display: block; display: block;
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
margin-bottom: 50px;
}
p.no-margin-top-bottom {
margin-top: 0;
margin-bottom: 0;
} }
a { a {
@ -39,10 +47,9 @@ a.button {
background: #17b53e; background: #17b53e;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 16px; font-size: 16px;
line-height: 15px;
text-decoration: none; text-decoration: none;
text-align:center; text-align:center;
padding: 13px 17px; padding: 9px 18px;
color: #ffffff; color: #ffffff;
display: table; display: table;
margin-left: auto; margin-left: auto;
@ -50,10 +57,6 @@ a.button {
border-radius: 4px; border-radius: 4px;
} }
span {
color: #17b53e;
}
.text-block { .text-block {
margin-top: 20px; margin-top: 20px;
color: #000000; color: #000000;
@ -62,7 +65,7 @@ span {
footer { footer {
padding: 20px; padding: 20px;
font-family: Lato, sans-serif; font-family: Lato, sans-serif;
font-size: 12px; font-size: 14px;
line-height: 15px; line-height: 15px;
text-align: center; text-align: center;
color: #888888; color: #888888;

View File

@ -1 +1 @@
h2= `${t('general.welcome')} ${APPLICATION_NAME}!` h2!= `${t('general.welcome')} ${APPLICATION_NAME}!`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=commenterUrl)= commenterName a.user(href=commenterUrl)!= commenterName
= t('mentionedInComment', { postTitle}) != t('mentionedInComment', { postTitle})
a.button(href=commentUrl)= t('buttons.viewComment') a.button(href=commentUrl)!= t('buttons.viewComment')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.mentionedInComment')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.mentionedInComment')}`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=postAuthorUrl)= postAuthorName a.user(href=postAuthorUrl)!= postAuthorName
= t('mentionedInPost', { postTitle }) != t('mentionedInPost', { postTitle })
a.button(href=postUrl)= t('buttons.viewPost') a.button(href=postUrl)!= t('buttons.viewPost')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.mentionedInPost')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.mentionedInPost')}`

View File

@ -3,5 +3,5 @@ extend ../layout.pug
block content block content
.content .content
- var postUrl = postUrl - var postUrl = postUrl
p= t('postInGroup', { postTitle}) p!= t('postInGroup', { postTitle})
a.button(href=postUrl)= t('buttons.viewPost') a.button(href=postUrl)!= t('buttons.viewPost')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.postInGroup')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.postInGroup')}`

View File

@ -2,14 +2,14 @@ extend ../layout.pug
block content block content
.content .content
p= t('registration.introduction') p!= t('registration.introduction')
a.button(href=actionUrl)= t('buttons.confirmEmail') a.button(href=actionUrl)!= t('buttons.confirmEmail')
p= t('registration.codeHint') p!= t('registration.codeHint')
span= nonce span!= nonce
p= t('registration.codeHintException') p!= t('registration.codeHintException')
p= t('registration.notYouStart') p!= t('registration.notYouStart')
a(href=ORGANIZATION_LINK)= APPLICATION_NAME a(href=ORGANIZATION_LINK)!= APPLICATION_NAME
= t('registration.notYouEnd') != t('registration.notYouEnd')
p= t('registration.ps') p!= t('registration.ps')

View File

@ -1 +1 @@
= `${t('general.welcome')} ${APPLICATION_NAME}` != `${t('general.welcome')} ${APPLICATION_NAME}`

View File

@ -2,4 +2,4 @@ extend ../layout.pug
block content block content
.content .content
p= t('removedUserFromGroup', { groupName }) p!= t('removedUserFromGroup', { groupName })

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.removedUserFromGroup')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.removedUserFromGroup')}`

View File

@ -2,8 +2,8 @@ extend ../layout.pug
block content block content
.content .content
p= t('resetPassword.introduction') p!= t('resetPassword.introduction')
a.button(href=actionUrl)= t('buttons.confirmEmail') a.button(href=actionUrl)!= t('buttons.confirmEmail')
p= t('resetPassword.ignore') p!= t('resetPassword.ignore')
p= t('resetPassword.codeHint') p!= t('resetPassword.codeHint')
span= nonce span!= nonce

View File

@ -1 +1 @@
= `${t('subjects.resetPassword')} ${APPLICATION_NAME}` != `${t('subjects.resetPassword')} ${APPLICATION_NAME}`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=groupRelatedUserUrl)= groupRelatedUserName a.user(href=groupRelatedUserUrl)!= groupRelatedUserName
= t('userJoinedGroup', { groupName }) != t('userJoinedGroup', { groupName })
a.button(href=groupUrl)= t('buttons.viewGroup') a.button(href=groupUrl)!= t('buttons.viewGroup')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.userJoinedGroup')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.userJoinedGroup')}`

View File

@ -3,6 +3,6 @@ extend ../layout.pug
block content block content
.content .content
p p
a.user(href=groupRelatedUserUrl)= groupRelatedUserName a.user(href=groupRelatedUserUrl)!= groupRelatedUserName
= t('userLeftGroup', { groupName }) != t('userLeftGroup', { groupName })
a.button(href=groupUrl)= t('buttons.viewGroup') a.button(href=groupUrl)!= t('buttons.viewGroup')

View File

@ -1 +1 @@
= `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.userLeftGroup')}` != `${APPLICATION_NAME} ${t('notification')}: ${t('subjects.userLeftGroup')}`

View File

@ -2,9 +2,9 @@ extend ../layout.pug
block content block content
.content .content
p= t('wrongEmail.introduction') p!= t('wrongEmail.introduction')
a.button(href=actionUrl)= t('buttons.tryAgain') a.button(href=actionUrl)!= t('buttons.tryAgain')
p= t('wrongEmail.ignoreStart') p!= t('wrongEmail.ignoreStart')
a(href=ORGANIZATION_LINK)= APPLICATION_NAME a(href=ORGANIZATION_LINK)!= APPLICATION_NAME
= t('wrongEmail.ignoreEnd') != t('wrongEmail.ignoreEnd')

View File

@ -1 +1 @@
= `${t('subjects.wrongEmail')} ${APPLICATION_NAME}` != `${t('subjects.wrongEmail')} ${APPLICATION_NAME}`

View File

@ -0,0 +1,11 @@
import gql from 'graphql-tag'
export const AddEmailAddress = gql`
mutation ($email: String!) {
AddEmailAddress(email: $email) {
email
verifiedAt
createdAt
}
}
`

View File

@ -0,0 +1,15 @@
import gql from 'graphql-tag'
export const AddPostEmotions = gql`
mutation ($to: _PostInput!, $data: _EMOTEDInput!) {
AddPostEmotions(to: $to, data: $data) {
from {
id
}
to {
id
}
emotion
}
}
`

View File

@ -0,0 +1,12 @@
import gql from 'graphql-tag'
export const Category = gql`
query {
Category {
id
slug
name
icon
}
}
`

View File

@ -0,0 +1,16 @@
import gql from 'graphql-tag'
export const ChangeGroupMemberRole = gql`
mutation ($groupId: ID!, $userId: ID!, $roleInGroup: GroupMemberRole!) {
ChangeGroupMemberRole(groupId: $groupId, userId: $userId, roleInGroup: $roleInGroup) {
user {
id
name
slug
}
membership {
role
}
}
}
`

View File

@ -1,9 +1,15 @@
import gql from 'graphql-tag' import gql from 'graphql-tag'
export const createCommentMutation = gql` export const CreateComment = gql`
mutation ($id: ID, $postId: ID!, $content: String!) { mutation ($id: ID, $postId: ID!, $content: String!) {
CreateComment(id: $id, postId: $postId, content: $content) { CreateComment(id: $id, postId: $postId, content: $content) {
id id
content
author {
name
}
isPostObservedByMe
postObservingUsersCount
} }
} }
` `

View File

@ -0,0 +1,53 @@
import gql from 'graphql-tag'
export const CreateGroup = gql`
mutation (
$id: ID
$name: String!
$slug: String
$about: String
$description: String!
$groupType: GroupType!
$actionRadius: GroupActionRadius!
$categoryIds: [ID]
$locationName: String # empty string '' sets it to null
) {
CreateGroup(
id: $id
name: $name
slug: $slug
about: $about
description: $description
groupType: $groupType
actionRadius: $actionRadius
categoryIds: $categoryIds
locationName: $locationName
) {
id
name
slug
createdAt
updatedAt
disabled
deleted
about
description
descriptionExcerpt
groupType
actionRadius
categories {
id
slug
name
icon
}
locationName
location {
name
nameDE
nameEN
}
myRole
}
}
`

View File

@ -0,0 +1,51 @@
import gql from 'graphql-tag'
export const CreatePost = gql`
mutation (
$id: ID
$title: String!
$slug: String
$content: String!
$categoryIds: [ID]
$groupId: ID
$postType: PostType
$eventInput: _EventInput
) {
CreatePost(
id: $id
title: $title
slug: $slug
content: $content
categoryIds: $categoryIds
groupId: $groupId
postType: $postType
eventInput: $eventInput
) {
id
slug
title
content
disabled
deleted
postType
author {
name
}
categories {
id
}
eventStart
eventEnd
eventLocationName
eventVenue
eventIsOnline
eventLocation {
lng
lat
}
isObservedByMe
observingUsersCount
language
}
}
`

View File

@ -0,0 +1,22 @@
import gql from 'graphql-tag'
export const CreateRoom = gql`
mutation ($userId: ID!) {
CreateRoom(userId: $userId) {
id
roomId
roomName
lastMessageAt
unreadCount
#avatar
users {
_id
id
name
avatar {
url
}
}
}
}
`

View File

@ -0,0 +1,14 @@
import gql from 'graphql-tag'
export const CreateSocialMedia = gql`
mutation ($url: String!) {
CreateSocialMedia(url: $url) {
id
url
url
ownedBy {
name
}
}
}
`

View File

@ -0,0 +1,12 @@
import gql from 'graphql-tag'
export const DeleteComment = gql`
mutation ($id: ID!) {
DeleteComment(id: $id) {
id
content
contentExcerpt
deleted
}
}
`

View File

@ -0,0 +1,20 @@
import gql from 'graphql-tag'
export const DeletePost = gql`
mutation ($id: ID!) {
DeletePost(id: $id) {
id
deleted
content
contentExcerpt
image {
url
}
comments {
deleted
content
contentExcerpt
}
}
}
`

View File

@ -0,0 +1,10 @@
import gql from 'graphql-tag'
export const DeleteSocialMedia = gql`
mutation ($id: ID!) {
DeleteSocialMedia(id: $id) {
id
url
}
}
`

View File

@ -0,0 +1,30 @@
import gql from 'graphql-tag'
export const DeleteUser = gql`
mutation ($id: ID!, $resource: [Deletable]) {
DeleteUser(id: $id, resource: $resource) {
id
name
about
deleted
contributions {
id
content
contentExcerpt
deleted
comments {
id
content
contentExcerpt
deleted
}
}
comments {
id
content
contentExcerpt
deleted
}
}
}
`

View File

@ -0,0 +1,12 @@
import gql from 'graphql-tag'
export const Donations = gql`
query {
Donations {
id
showDonations
goal
progress
}
}
`

View File

@ -3,10 +3,14 @@ import gql from 'graphql-tag'
export const GroupMembers = gql` export const GroupMembers = gql`
query GroupMembers($id: ID!) { query GroupMembers($id: ID!) {
GroupMembers(id: $id) { GroupMembers(id: $id) {
id user {
name id
slug name
myRoleInGroup slug
}
membership {
role
}
} }
} }
` `

View File

@ -0,0 +1,16 @@
import gql from 'graphql-tag'
export const JoinGroup = gql`
mutation ($groupId: ID!, $userId: ID!) {
JoinGroup(groupId: $groupId, userId: $userId) {
user {
id
name
slug
}
membership {
role
}
}
}
`

View File

@ -0,0 +1,16 @@
import gql from 'graphql-tag'
export const LeaveGroup = gql`
mutation ($groupId: ID!, $userId: ID!) {
LeaveGroup(groupId: $groupId, userId: $userId) {
user {
id
name
slug
}
membership {
role
}
}
}
`

View File

@ -1,12 +1,39 @@
import gql from 'graphql-tag' import gql from 'graphql-tag'
export const Post = gql` export const Post = gql`
query ($orderBy: [_PostOrdering]) { query ($id: ID, $filter: _PostFilter, $first: Int, $offset: Int, $orderBy: [_PostOrdering]) {
Post(orderBy: $orderBy) { Post(id: $id, filter: $filter, first: $first, offset: $offset, orderBy: $orderBy) {
id id
title
content
contentExcerpt
eventStart
pinned pinned
createdAt createdAt
pinnedAt pinnedAt
isObservedByMe
observingUsersCount
clickedCount
emotionsCount
emotions {
emotion
User {
id
}
}
author {
id
name
}
shoutedBy {
id
}
tags {
id
}
comments {
content
}
} }
} }
` `

Some files were not shown because too many files have changed in this diff Show More