From f27f289dc6961ca7c4b8c14140181f845d2fe31e Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Thu, 17 Oct 2024 12:37:43 +0300 Subject: [PATCH 1/2] chore(server): core IoC #78 - getServerInfoFactory --- .../activitystream/repositories/index.ts | 4 +- .../activitystream/tests/activity.spec.js | 6 +- .../tests/activitySummary.spec.ts | 5 +- packages/server/modules/auth/index.ts | 8 +-- .../server/modules/auth/strategies/azureAd.ts | 4 +- .../server/modules/auth/strategies/github.ts | 4 +- .../server/modules/auth/strategies/google.ts | 4 +- .../server/modules/auth/strategies/local.ts | 4 +- .../server/modules/auth/strategies/oidc.ts | 4 +- .../modules/auth/tests/apps.graphql.spec.js | 3 +- .../server/modules/auth/tests/apps.spec.js | 3 +- .../server/modules/auth/tests/auth.spec.js | 7 ++- .../tests/blobstorage.graph.spec.js | 6 +- .../tests/blobstorage.integration.spec.js | 6 +- .../modules/cli/commands/download/project.ts | 5 +- .../comments/tests/comments.graph.spec.js | 6 +- .../modules/comments/tests/comments.spec.js | 6 +- .../modules/core/domain/server/operations.ts | 3 + .../modules/core/domain/server/types.ts | 1 + .../modules/core/graph/resolvers/projects.ts | 5 +- .../modules/core/graph/resolvers/server.js | 5 +- .../modules/core/graph/resolvers/streams.ts | 5 +- .../core/graph/resolvers/userEmails.ts | 4 +- .../modules/core/graph/resolvers/users.ts | 3 +- packages/server/modules/core/helpers/types.ts | 4 ++ .../modules/core/repositories/server.ts | 58 +++++++++++++++++++ packages/server/modules/core/rest/health.ts | 4 +- .../server/modules/core/services/generic.js | 26 --------- .../modules/core/services/users/management.ts | 6 +- .../modules/core/tests/branches.spec.js | 6 +- .../server/modules/core/tests/commits.spec.js | 6 +- .../core/tests/favoriteStreams.spec.js | 6 +- .../server/modules/core/tests/generic.spec.js | 6 +- .../server/modules/core/tests/graph.spec.js | 3 +- .../modules/core/tests/graphSubs.spec.js | 3 +- .../core/tests/integration/createUser.spec.ts | 3 +- .../integration/emailVerification.spec.ts | 3 +- .../core/tests/integration/findUsers.spec.ts | 3 +- .../core/tests/integration/updateUser.spec.ts | 3 +- .../integration/userEmails.graph.spec.ts | 3 +- .../core/tests/integration/userEmails.spec.ts | 3 +- .../server/modules/core/tests/objects.spec.js | 6 +- .../server/modules/core/tests/rest.spec.js | 6 +- .../server/modules/core/tests/streams.spec.ts | 6 +- .../server/modules/core/tests/users.spec.js | 6 +- .../modules/core/tests/usersAdmin.spec.js | 3 +- .../modules/core/tests/usersAdminList.spec.ts | 6 +- .../modules/core/tests/usersGraphql.spec.ts | 3 +- .../server/modules/cross-server-sync/index.ts | 5 +- .../modules/emails/graph/resolvers/index.ts | 4 +- packages/server/modules/emails/index.ts | 4 +- .../emails/services/verification/request.ts | 6 +- .../emails/tests/emailTemplating.spec.ts | 5 +- .../emails/tests/verifications.spec.ts | 4 +- .../tests/fileuploads.integration.spec.ts | 6 +- .../services/handlers/activityDigest.ts | 7 ++- .../services/handlers/mentionedInComment.ts | 7 ++- .../handlers/newStreamAccessRequest.ts | 7 ++- .../handlers/streamAccessRequestApproved.ts | 7 ++- .../server/modules/pwdreset/rest/index.ts | 4 +- .../modules/pwdreset/services/request.ts | 4 +- .../modules/pwdreset/tests/pwdrest.spec.js | 3 +- .../graph/resolvers/serverInvites.ts | 9 ++- .../serverinvites/services/creation.ts | 10 +++- .../serverinvites/services/processing.ts | 4 +- .../server/modules/stats/tests/stats.spec.ts | 6 +- .../modules/webhooks/services/webhooks.ts | 4 +- .../modules/webhooks/tests/cleanup.spec.ts | 6 +- .../modules/webhooks/tests/webhooks.spec.js | 6 +- .../workspaces/graph/resolvers/workspaces.ts | 12 ++-- .../workspaces/tests/helpers/creation.ts | 5 +- packages/server/scripts/seedUsers.js | 3 +- packages/server/scripts/streamObjects.js | 5 +- packages/server/test/authHelper.ts | 3 +- .../test/speckle-helpers/inviteHelper.ts | 5 +- .../test/speckle-helpers/streamHelper.ts | 5 +- 76 files changed, 295 insertions(+), 154 deletions(-) create mode 100644 packages/server/modules/core/domain/server/operations.ts create mode 100644 packages/server/modules/core/domain/server/types.ts create mode 100644 packages/server/modules/core/repositories/server.ts diff --git a/packages/server/modules/activitystream/repositories/index.ts b/packages/server/modules/activitystream/repositories/index.ts index 08f691799..24afebc46 100644 --- a/packages/server/modules/activitystream/repositories/index.ts +++ b/packages/server/modules/activitystream/repositories/index.ts @@ -18,12 +18,12 @@ import { import { StreamAcl, StreamActivity } from '@/modules/core/dbSchema' import { Roles } from '@/modules/core/helpers/mainConstants' import { StreamAclRecord } from '@/modules/core/helpers/types' -import { getServerInfo } from '@/modules/core/services/generic' import { createWebhookEventFactory } from '@/modules/webhooks/repositories/webhooks' import { dispatchStreamEventFactory } from '@/modules/webhooks/services/webhooks' import { Knex } from 'knex' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const tables = { streamActivity: (db: Knex) => @@ -252,7 +252,7 @@ export const saveActivityFactory = await dispatchStreamEventFactory({ db, - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), getStream: getStreamFactory({ db }), createWebhookEvent: createWebhookEventFactory({ db }), getUser: getUserFactory({ db }) diff --git a/packages/server/modules/activitystream/tests/activity.spec.js b/packages/server/modules/activitystream/tests/activity.spec.js index 1306acc61..f8b604d21 100644 --- a/packages/server/modules/activitystream/tests/activity.spec.js +++ b/packages/server/modules/activitystream/tests/activity.spec.js @@ -37,7 +37,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -62,6 +61,7 @@ const { storeTokenScopesFactory, storeTokenResourceAccessDefinitionsFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const getUser = getUserFactory({ db }) const getUserActivity = getUserActivityFactory({ db }) @@ -85,13 +85,13 @@ const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, getUser: getUserFactory({ db }), - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory({ db }), renderEmail, sendEmail }) const createUser = createUserFactory({ - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), findEmail, storeUser: storeUserFactory({ db }), countAdminUsers: countAdminUsersFactory({ db }), diff --git a/packages/server/modules/activitystream/tests/activitySummary.spec.ts b/packages/server/modules/activitystream/tests/activitySummary.spec.ts index 7e73e1758..796ed4fa7 100644 --- a/packages/server/modules/activitystream/tests/activitySummary.spec.ts +++ b/packages/server/modules/activitystream/tests/activitySummary.spec.ts @@ -41,11 +41,13 @@ import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter' import { createBranchFactory } from '@/modules/core/repositories/branches' import { publish } from '@/modules/shared/utils/subscriptions' import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const cleanup = async () => { await truncateTables([StreamActivity.name, Users.name]) } +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const getStream = getStreamFactory({ db }) @@ -76,7 +78,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/auth/index.ts b/packages/server/modules/auth/index.ts index b4b323089..a4894c5e1 100644 --- a/packages/server/modules/auth/index.ts +++ b/packages/server/modules/auth/index.ts @@ -13,7 +13,6 @@ import { } from '@/modules/auth/repositories/apps' import setupStrategiesFactory from '@/modules/auth/strategies' import githubStrategyBuilderFactory from '@/modules/auth/strategies/github' -import { getServerInfo } from '@/modules/core/services/generic' import { validateServerInviteFactory, finalizeInvitedServerRegistrationFactory, @@ -59,18 +58,19 @@ import { requestNewEmailVerificationFactory } from '@/modules/emails/services/ve import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, getUser: getUserFactory({ db }), - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory({ db }), renderEmail, sendEmail }) const createUser = createUserFactory({ - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), findEmail, storeUser: storeUserFactory({ db }), countAdminUsers: countAdminUsersFactory({ db }), @@ -110,7 +110,7 @@ const finalizeInvitedServerRegistration = finalizeInvitedServerRegistrationFacto const resolveAuthRedirectPath = resolveAuthRedirectPathFactory() const commonBuilderDeps = { - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), getUserByEmail: legacyGetUserByEmailFactory({ db }), findOrCreateUser, validateServerInvite, diff --git a/packages/server/modules/auth/strategies/azureAd.ts b/packages/server/modules/auth/strategies/azureAd.ts index f2093b3ce..ac6d599f3 100644 --- a/packages/server/modules/auth/strategies/azureAd.ts +++ b/packages/server/modules/auth/strategies/azureAd.ts @@ -1,7 +1,6 @@ /* istanbul ignore file */ import passport from 'passport' import { OIDCStrategy, IProfile, VerifyCallback } from 'passport-azure-ad' -import { getServerInfo } from '@/modules/core/services/generic' import { UserInputError, @@ -31,10 +30,11 @@ import { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const azureAdStrategyBuilderFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getUserByEmail: LegacyGetUserByEmail findOrCreateUser: FindOrCreateValidatedUser validateServerInvite: ValidateServerInvite diff --git a/packages/server/modules/auth/strategies/github.ts b/packages/server/modules/auth/strategies/github.ts index 9a98399dd..048ecd156 100644 --- a/packages/server/modules/auth/strategies/github.ts +++ b/packages/server/modules/auth/strategies/github.ts @@ -3,7 +3,6 @@ import passport from 'passport' import type { VerifyCallback } from 'passport-oauth2' import { Strategy as GithubStrategy, type Profile } from 'passport-github2' -import { getServerInfo } from '@/modules/core/services/generic' import { UserInputError, UnverifiedEmailSSOLoginError @@ -32,10 +31,11 @@ import { LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' import crs from 'crypto-random-string' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const githubStrategyBuilderFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getUserByEmail: LegacyGetUserByEmail findOrCreateUser: FindOrCreateValidatedUser validateServerInvite: ValidateServerInvite diff --git a/packages/server/modules/auth/strategies/google.ts b/packages/server/modules/auth/strategies/google.ts index 094e9a09e..5037211c7 100644 --- a/packages/server/modules/auth/strategies/google.ts +++ b/packages/server/modules/auth/strategies/google.ts @@ -1,7 +1,6 @@ /* istanbul ignore file */ import passport from 'passport' import { Strategy as GoogleStrategy } from 'passport-google-oauth20' -import { getServerInfo } from '@/modules/core/services/generic' import { UserInputError, @@ -27,10 +26,11 @@ import { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const googleStrategyBuilderFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getUserByEmail: LegacyGetUserByEmail findOrCreateUser: FindOrCreateValidatedUser validateServerInvite: ValidateServerInvite diff --git a/packages/server/modules/auth/strategies/local.ts b/packages/server/modules/auth/strategies/local.ts index 188b636bb..57a868f63 100644 --- a/packages/server/modules/auth/strategies/local.ts +++ b/packages/server/modules/auth/strategies/local.ts @@ -1,4 +1,3 @@ -import { getServerInfo } from '@/modules/core/services/generic' import { sendRateLimitResponse, getRateLimitResult, @@ -23,12 +22,13 @@ import { LegacyGetUserByEmail, ValidateUserPassword } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const localStrategyBuilderFactory = (deps: { validateUserPassword: ValidateUserPassword getUserByEmail: LegacyGetUserByEmail - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getRateLimitResult: typeof getRateLimitResult validateServerInvite: ValidateServerInvite createUser: CreateValidatedUser diff --git a/packages/server/modules/auth/strategies/oidc.ts b/packages/server/modules/auth/strategies/oidc.ts index 3b881c013..6f40f8f10 100644 --- a/packages/server/modules/auth/strategies/oidc.ts +++ b/packages/server/modules/auth/strategies/oidc.ts @@ -1,7 +1,6 @@ /* istanbul ignore file */ import passport from 'passport' import { Issuer, Strategy } from 'openid-client' -import { getServerInfo } from '@/modules/core/services/generic' import { getOidcDiscoveryUrl, getOidcClientId, @@ -27,10 +26,11 @@ import { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const oidcStrategyBuilderFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getUserByEmail: LegacyGetUserByEmail findOrCreateUser: FindOrCreateValidatedUser validateServerInvite: ValidateServerInvite diff --git a/packages/server/modules/auth/tests/apps.graphql.spec.js b/packages/server/modules/auth/tests/apps.graphql.spec.js index 5e30d5515..1f6811980 100644 --- a/packages/server/modules/auth/tests/apps.graphql.spec.js +++ b/packages/server/modules/auth/tests/apps.graphql.spec.js @@ -36,7 +36,6 @@ const { countAdminUsersFactory, storeUserAclFactory } = require('@/modules/core/repositories/users') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -61,6 +60,7 @@ const { storeUserServerAppTokenFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') let sendRequest let server @@ -84,6 +84,7 @@ const createAppTokenFromAccessCode = createAppTokenFromAccessCodeFactory({ createBareToken }) +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/auth/tests/apps.spec.js b/packages/server/modules/auth/tests/apps.spec.js index d8baa1642..d9c5d28c3 100644 --- a/packages/server/modules/auth/tests/apps.spec.js +++ b/packages/server/modules/auth/tests/apps.spec.js @@ -46,7 +46,6 @@ const { storeUserAclFactory, getUserRoleFactory } = require('@/modules/core/repositories/users') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -75,6 +74,7 @@ const { getTokenResourceAccessDefinitionsByIdFactory, updateApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const db = knex const getApp = getAppFactory({ db: knex }) @@ -115,6 +115,7 @@ const refreshAppToken = refreshAppTokenFactory({ createBareToken }) +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/auth/tests/auth.spec.js b/packages/server/modules/auth/tests/auth.spec.js index 618a4c22e..7471fd085 100644 --- a/packages/server/modules/auth/tests/auth.spec.js +++ b/packages/server/modules/auth/tests/auth.spec.js @@ -2,7 +2,7 @@ const crs = require('crypto-random-string') const chai = require('chai') const request = require('supertest') -const { updateServerInfo, getServerInfo } = require('@/modules/core/services/generic') +const { updateServerInfo } = require('@/modules/core/services/generic') const { TIME } = require('@speckle/shared') const { RATE_LIMITERS, createConsumer } = require('@/modules/core/services/ratelimiter') const { beforeEachContext, initializeTestServer } = require('@/test/hooks') @@ -73,7 +73,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -100,7 +102,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/blobstorage/tests/blobstorage.graph.spec.js b/packages/server/modules/blobstorage/tests/blobstorage.graph.spec.js index 6e1b74ece..f06aabeae 100644 --- a/packages/server/modules/blobstorage/tests/blobstorage.graph.spec.js +++ b/packages/server/modules/blobstorage/tests/blobstorage.graph.spec.js @@ -55,7 +55,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -69,7 +68,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -94,7 +95,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/blobstorage/tests/blobstorage.integration.spec.js b/packages/server/modules/blobstorage/tests/blobstorage.integration.spec.js index 96294b6d9..b61ee6343 100644 --- a/packages/server/modules/blobstorage/tests/blobstorage.integration.spec.js +++ b/packages/server/modules/blobstorage/tests/blobstorage.integration.spec.js @@ -53,7 +53,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -73,7 +72,9 @@ const { storeTokenScopesFactory, storeTokenResourceAccessDefinitionsFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -98,7 +99,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index 33af01bf0..21d322b22 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -71,6 +71,7 @@ import { saveActivityFactory } from '@/modules/activitystream/repositories' import { publish } from '@/modules/shared/utils/subscriptions' import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity' import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const command: CommandModule< unknown, @@ -158,6 +159,7 @@ const command: CommandModule< }) }) + const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const createStreamReturnRecord = createStreamReturnRecordFactory({ @@ -176,7 +178,8 @@ const command: CommandModule< eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/comments/tests/comments.graph.spec.js b/packages/server/modules/comments/tests/comments.graph.spec.js index 80087275e..75a7168cf 100644 --- a/packages/server/modules/comments/tests/comments.graph.spec.js +++ b/packages/server/modules/comments/tests/comments.graph.spec.js @@ -103,7 +103,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -117,7 +116,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) @@ -181,7 +182,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/comments/tests/comments.spec.js b/packages/server/modules/comments/tests/comments.spec.js index bb670f969..ede881afa 100644 --- a/packages/server/modules/comments/tests/comments.spec.js +++ b/packages/server/modules/comments/tests/comments.spec.js @@ -122,7 +122,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -136,7 +135,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const getStream = getStreamFactory({ db }) @@ -229,7 +230,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/domain/server/operations.ts b/packages/server/modules/core/domain/server/operations.ts new file mode 100644 index 000000000..bc0232ca9 --- /dev/null +++ b/packages/server/modules/core/domain/server/operations.ts @@ -0,0 +1,3 @@ +import { ServerInfo } from '@/modules/core/domain/server/types' + +export type GetServerInfo = () => Promise diff --git a/packages/server/modules/core/domain/server/types.ts b/packages/server/modules/core/domain/server/types.ts new file mode 100644 index 000000000..692d55192 --- /dev/null +++ b/packages/server/modules/core/domain/server/types.ts @@ -0,0 +1 @@ +export { ServerInfo } from '@/modules/core/helpers/types' diff --git a/packages/server/modules/core/graph/resolvers/projects.ts b/packages/server/modules/core/graph/resolvers/projects.ts index dea234574..ed117b541 100644 --- a/packages/server/modules/core/graph/resolvers/projects.ts +++ b/packages/server/modules/core/graph/resolvers/projects.ts @@ -39,6 +39,7 @@ import { insertCommitsFactory, insertStreamCommitsFactory } from '@/modules/core/repositories/commits' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getStreamFactory, getStreamCollaboratorsFactory, @@ -91,6 +92,7 @@ import { } from '@/modules/shared/utils/subscriptions' import { has } from 'lodash' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const getUser = getUserFactory({ db }) const saveActivity = saveActivityFactory({ db }) @@ -112,7 +114,8 @@ const createStreamReturnRecord = createStreamReturnRecordFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/graph/resolvers/server.js b/packages/server/modules/core/graph/resolvers/server.js index d3dbd9c4b..c2cc7a02e 100644 --- a/packages/server/modules/core/graph/resolvers/server.js +++ b/packages/server/modules/core/graph/resolvers/server.js @@ -2,7 +2,6 @@ const { validateScopes } = require('@/modules/shared') const { updateServerInfo, - getServerInfo, getPublicScopes, getPublicRoles } = require('../../services/generic') @@ -12,6 +11,10 @@ const { speckleAutomateUrl, enableNewFrontendMessaging } = require('@/modules/shared/helpers/envHelper') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const { db } = require('@/db/knex') + +const getServerInfo = getServerInfoFactory({ db }) module.exports = { Query: { diff --git a/packages/server/modules/core/graph/resolvers/streams.ts b/packages/server/modules/core/graph/resolvers/streams.ts index 35a203442..2f3511c9c 100644 --- a/packages/server/modules/core/graph/resolvers/streams.ts +++ b/packages/server/modules/core/graph/resolvers/streams.ts @@ -87,7 +87,9 @@ import { getFavoriteStreamsCollectionFactory } from '@/modules/core/services/streams/favorite' import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const getUser = getUserFactory({ db }) const getFavoriteStreamsCollection = getFavoriteStreamsCollectionFactory({ @@ -112,7 +114,8 @@ const createStreamReturnRecord = createStreamReturnRecordFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/graph/resolvers/userEmails.ts b/packages/server/modules/core/graph/resolvers/userEmails.ts index 49c34c34c..f83de4856 100644 --- a/packages/server/modules/core/graph/resolvers/userEmails.ts +++ b/packages/server/modules/core/graph/resolvers/userEmails.ts @@ -15,17 +15,17 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' import { getUserFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const getUser = getUserFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail: findEmailFactory({ db }), getUser, - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory({ db }), renderEmail, sendEmail diff --git a/packages/server/modules/core/graph/resolvers/users.ts b/packages/server/modules/core/graph/resolvers/users.ts index e73632020..62b569511 100644 --- a/packages/server/modules/core/graph/resolvers/users.ts +++ b/packages/server/modules/core/graph/resolvers/users.ts @@ -17,7 +17,6 @@ import { legacyGetPaginatedUsersFactory } from '@/modules/core/repositories/users' import { UsersMeta } from '@/modules/core/dbSchema' -import { getServerInfo } from '@/modules/core/services/generic' import { throwForNotHavingServerRole } from '@/modules/shared/authz' import { deleteAllUserInvitesFactory, @@ -40,6 +39,7 @@ import { import { dbLogger } from '@/logging/logging' import { getAdminUsersListCollectionFactory } from '@/modules/core/services/users/legacyAdminUsersList' import { Resolvers } from '@/modules/core/graph/generated/graphql' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const getUser = legacyGetUserFactory({ db }) const getUserByEmail = legacyGetUserByEmailFactory({ db }) @@ -52,6 +52,7 @@ const updateUserAndNotify = updateUserAndNotifyFactory({ }) }) +const getServerInfo = getServerInfoFactory({ db }) const deleteUser = deleteUserFactory({ deleteStream: deleteStreamFactory({ db }), logger: dbLogger, diff --git a/packages/server/modules/core/helpers/types.ts b/packages/server/modules/core/helpers/types.ts index 528a2c08d..a9bc2c8d9 100644 --- a/packages/server/modules/core/helpers/types.ts +++ b/packages/server/modules/core/helpers/types.ts @@ -88,6 +88,10 @@ export type ServerInfo = ServerConfigRecord & { */ version: string migration?: { movedFrom?: string; movedTo?: string } + configuration: { + objectSizeLimitBytes: number + objectMultipartUploadSizeLimitBytes: number + } } export type CommitRecord = { diff --git a/packages/server/modules/core/repositories/server.ts b/packages/server/modules/core/repositories/server.ts new file mode 100644 index 000000000..d6708c430 --- /dev/null +++ b/packages/server/modules/core/repositories/server.ts @@ -0,0 +1,58 @@ +import { buildTableHelper } from '@/modules/core/dbSchema' +import { GetServerInfo } from '@/modules/core/domain/server/operations' +import { ServerInfo } from '@/modules/core/domain/server/types' +import { ServerConfigRecord } from '@/modules/core/helpers/types' +import { + getFileSizeLimitMB, + getMaximumObjectSizeMB, + getServerMovedFrom, + getServerMovedTo, + getServerOrigin, + getServerVersion +} from '@/modules/shared/helpers/envHelper' +import { Knex } from 'knex' + +const ServerConfig = buildTableHelper('server_config', [ + 'id', + 'name', + 'company', + 'description', + 'adminContact', + 'termsOfService', + 'canonicalUrl', + 'completed', + 'inviteOnly', + 'guestModeEnabled' +]) + +const tables = { + serverConfig: (db: Knex) => db(ServerConfig.name) +} + +export const getServerInfoFactory = + (deps: { db: Knex }): GetServerInfo => + async () => { + const movedTo = getServerMovedTo() + const movedFrom = getServerMovedFrom() + + // An entry should always exist from migrations + const serverInfo: ServerInfo = { + ...(await tables.serverConfig(deps.db).select('*').first())!, + version: getServerVersion(), + canonicalUrl: getServerOrigin(), + configuration: { + objectSizeLimitBytes: getMaximumObjectSizeMB() * 1024 * 1024, + objectMultipartUploadSizeLimitBytes: getFileSizeLimitMB() * 1024 * 1024 + }, + ...(movedTo || movedFrom + ? { + migration: { + movedFrom: movedFrom?.toString(), + movedTo: movedTo?.toString() + } + } + : {}) + } + + return serverInfo + } diff --git a/packages/server/modules/core/rest/health.ts b/packages/server/modules/core/rest/health.ts index 609917b49..4e6199f9e 100644 --- a/packages/server/modules/core/rest/health.ts +++ b/packages/server/modules/core/rest/health.ts @@ -1,5 +1,4 @@ import * as express from 'express' -import { getServerInfo } from '@/modules/core/services/generic' import { createRedisClient } from '@/modules/shared/redis/redis' import { getRedisUrl, @@ -10,6 +9,7 @@ import type { Redis } from 'ioredis' import { numberOfFreeConnections } from '@/modules/shared/helpers/dbHelper' import { db } from '@/db/knex' import type { Knex } from 'knex' +import { getServerInfoFactory } from '@/modules/core/repositories/server' type FreeConnectionsCalculator = { mean: () => number @@ -159,6 +159,8 @@ type CheckResponse = { isAlive: true } | { isAlive: false; err: unknown } type DBCheck = () => Promise const isPostgresAlive: DBCheck = async (): Promise => { + const getServerInfo = getServerInfoFactory({ db }) + try { await getServerInfo() } catch (err) { diff --git a/packages/server/modules/core/services/generic.js b/packages/server/modules/core/services/generic.js index 358aecaa2..f0dc68389 100644 --- a/packages/server/modules/core/services/generic.js +++ b/packages/server/modules/core/services/generic.js @@ -1,36 +1,10 @@ -'use strict' const knex = require('@/db/knex') -const { - getServerVersion, - getServerOrigin, - getServerMovedTo, - getServerMovedFrom, - getMaximumObjectSizeMB, - getFileSizeLimitMB -} = require('@/modules/shared/helpers/envHelper') const Roles = () => knex('user_roles') const Scopes = () => knex('scopes') const Info = () => knex('server_config') module.exports = { - /** - * @returns {Promise} - */ - async getServerInfo() { - const serverInfo = await Info().select('*').first() - serverInfo.version = getServerVersion() - serverInfo.canonicalUrl = getServerOrigin() - const movedTo = getServerMovedTo() - const movedFrom = getServerMovedFrom() - serverInfo.configuration = { - objectSizeLimitBytes: getMaximumObjectSizeMB() * 1024 * 1024, - objectMultipartUploadSizeLimitBytes: getFileSizeLimitMB() * 1024 * 1024 - } - if (movedTo || movedFrom) serverInfo.migration = { movedTo, movedFrom } - return serverInfo - }, - async getAllScopes() { return await Scopes().select('*') }, diff --git a/packages/server/modules/core/services/users/management.ts b/packages/server/modules/core/services/users/management.ts index 9d7105abd..0f10eddad 100644 --- a/packages/server/modules/core/services/users/management.ts +++ b/packages/server/modules/core/services/users/management.ts @@ -21,7 +21,6 @@ import { UserUpdateError, UserValidationError } from '@/modules/core/errors/user import { PasswordTooShortError, UserInputError } from '@/modules/core/errors/userinput' import { UserUpdateInput } from '@/modules/core/graph/generated/graphql' import type { UserRecord } from '@/modules/core/helpers/userHelper' -import { getServerInfo } from '@/modules/core/services/generic' import { sanitizeImageUrl } from '@/modules/shared/helpers/sanitization' import { isNullOrUndefined, @@ -44,6 +43,7 @@ import { } from '@/modules/core/domain/streams/operations' import { Logger } from '@/logging/logging' import { DeleteAllUserInvites } from '@/modules/serverinvites/domain/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' export const MINIMUM_PASSWORD_LENGTH = 8 @@ -132,7 +132,7 @@ export const changePasswordFactory = export const createUserFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo findEmail: FindEmail storeUser: StoreUser countAdminUsers: CountAdminUsers @@ -279,7 +279,7 @@ export const deleteUserFactory = export const changeUserRoleFactory = (deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo isLastAdminUser: IsLastAdminUser updateUserServerRole: UpdateUserServerRole }): ChangeUserRole => diff --git a/packages/server/modules/core/tests/branches.spec.js b/packages/server/modules/core/tests/branches.spec.js index 1f831bbb2..11af05b45 100644 --- a/packages/server/modules/core/tests/branches.spec.js +++ b/packages/server/modules/core/tests/branches.spec.js @@ -92,7 +92,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -106,6 +105,7 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const db = knex const Commits = () => knex('commits') @@ -132,6 +132,7 @@ const deleteBranchAndNotify = deleteBranchAndNotifyFactory({ deleteBranchById: deleteBranchByIdFactory({ db: knex }) }) +const getServerInfo = getServerInfoFactory({ db }) const getObject = getObjectFactory({ db: knex }) const createCommitByBranchId = createCommitByBranchIdFactory({ createCommit: createCommitFactory({ db }), @@ -175,7 +176,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/commits.spec.js b/packages/server/modules/core/tests/commits.spec.js index 1d500a16d..f7b57f533 100644 --- a/packages/server/modules/core/tests/commits.spec.js +++ b/packages/server/modules/core/tests/commits.spec.js @@ -98,7 +98,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -112,7 +111,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) @@ -196,7 +197,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/favoriteStreams.spec.js b/packages/server/modules/core/tests/favoriteStreams.spec.js index be5571367..f76e79e94 100644 --- a/packages/server/modules/core/tests/favoriteStreams.spec.js +++ b/packages/server/modules/core/tests/favoriteStreams.spec.js @@ -61,7 +61,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -75,7 +74,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -100,7 +101,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/generic.spec.js b/packages/server/modules/core/tests/generic.spec.js index b8de697ae..7a44e0f89 100644 --- a/packages/server/modules/core/tests/generic.spec.js +++ b/packages/server/modules/core/tests/generic.spec.js @@ -66,7 +66,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -80,7 +79,9 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -105,7 +106,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/graph.spec.js b/packages/server/modules/core/tests/graph.spec.js index fbb599f5c..2c894c6fd 100644 --- a/packages/server/modules/core/tests/graph.spec.js +++ b/packages/server/modules/core/tests/graph.spec.js @@ -44,7 +44,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -72,6 +71,7 @@ const { storeTokenResourceAccessDefinitionsFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const getUser = getUserFactory({ db }) const getStream = getStreamFactory({ db }) @@ -105,6 +105,7 @@ const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({ }) const getUsers = legacyGetPaginatedUsersFactory({ db }) +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/core/tests/graphSubs.spec.js b/packages/server/modules/core/tests/graphSubs.spec.js index d0154b870..0432f9de4 100644 --- a/packages/server/modules/core/tests/graphSubs.spec.js +++ b/packages/server/modules/core/tests/graphSubs.spec.js @@ -40,7 +40,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -65,6 +64,7 @@ const { storeTokenResourceAccessDefinitionsFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const saveActivity = saveActivityFactory({ db }) const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver }) @@ -84,6 +84,7 @@ const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({ }) }) +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/core/tests/integration/createUser.spec.ts b/packages/server/modules/core/tests/integration/createUser.spec.ts index e688316e3..9633638c2 100644 --- a/packages/server/modules/core/tests/integration/createUser.spec.ts +++ b/packages/server/modules/core/tests/integration/createUser.spec.ts @@ -22,7 +22,6 @@ import { storeUserFactory } from '@/modules/core/repositories/users' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -34,7 +33,9 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = legacyGetUserFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ diff --git a/packages/server/modules/core/tests/integration/emailVerification.spec.ts b/packages/server/modules/core/tests/integration/emailVerification.spec.ts index e776ea6ef..0fdb4379c 100644 --- a/packages/server/modules/core/tests/integration/emailVerification.spec.ts +++ b/packages/server/modules/core/tests/integration/emailVerification.spec.ts @@ -19,7 +19,6 @@ import { storeUserAclFactory, storeUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -31,7 +30,9 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/core/tests/integration/findUsers.spec.ts b/packages/server/modules/core/tests/integration/findUsers.spec.ts index 7eb594d9f..7de1a3653 100644 --- a/packages/server/modules/core/tests/integration/findUsers.spec.ts +++ b/packages/server/modules/core/tests/integration/findUsers.spec.ts @@ -21,7 +21,6 @@ import { storeUserFactory } from '@/modules/core/repositories/users' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -33,7 +32,9 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ diff --git a/packages/server/modules/core/tests/integration/updateUser.spec.ts b/packages/server/modules/core/tests/integration/updateUser.spec.ts index 72463e316..0178cd6a1 100644 --- a/packages/server/modules/core/tests/integration/updateUser.spec.ts +++ b/packages/server/modules/core/tests/integration/updateUser.spec.ts @@ -22,7 +22,6 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -34,9 +33,11 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const userEmailsDB = db(UserEmails.name) +const getServerInfo = getServerInfoFactory({ db }) const getUser = legacyGetUserFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ diff --git a/packages/server/modules/core/tests/integration/userEmails.graph.spec.ts b/packages/server/modules/core/tests/integration/userEmails.graph.spec.ts index becb07974..a3a05b855 100644 --- a/packages/server/modules/core/tests/integration/userEmails.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/userEmails.graph.spec.ts @@ -25,7 +25,6 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -37,7 +36,9 @@ import { } from '@/modules/core/repositories/users' import { createUserFactory } from '@/modules/core/services/users/management' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = legacyGetUserFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail: findEmailFactory({ db }), diff --git a/packages/server/modules/core/tests/integration/userEmails.spec.ts b/packages/server/modules/core/tests/integration/userEmails.spec.ts index 5e37fd97d..efca720f7 100644 --- a/packages/server/modules/core/tests/integration/userEmails.spec.ts +++ b/packages/server/modules/core/tests/integration/userEmails.spec.ts @@ -40,13 +40,14 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' import { createUserFactory } from '@/modules/core/services/users/management' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = legacyGetPaginatedUsersFactory({ db }) const countUsers = legacyGetPaginatedUsersCountFactory({ db }) diff --git a/packages/server/modules/core/tests/objects.spec.js b/packages/server/modules/core/tests/objects.spec.js index 6c4ad7f34..f3d5c1ec2 100644 --- a/packages/server/modules/core/tests/objects.spec.js +++ b/packages/server/modules/core/tests/objects.spec.js @@ -67,7 +67,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -81,6 +80,7 @@ const { finalizeInvitedServerRegistrationFactory } = require('@/modules/serverinvites/services/processing') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const sampleCommit = JSON.parse(`{ "Objects": [ @@ -105,6 +105,7 @@ const sampleObject = JSON.parse(`{ "speckleType": "Tests.Polyline" }`) +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -129,7 +130,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/rest.spec.js b/packages/server/modules/core/tests/rest.spec.js index 3aad81772..848fa99b2 100644 --- a/packages/server/modules/core/tests/rest.spec.js +++ b/packages/server/modules/core/tests/rest.spec.js @@ -59,7 +59,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -80,7 +79,9 @@ const { storeTokenResourceAccessDefinitionsFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -105,7 +106,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index 2c5a09fa8..fdaa60062 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -100,8 +100,9 @@ import { updateUserServerRoleFactory } from '@/modules/core/repositories/users' import { changeUserRoleFactory } from '@/modules/core/services/users/management' -import { getServerInfo } from '@/modules/core/services/generic' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) @@ -161,7 +162,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/users.spec.js b/packages/server/modules/core/tests/users.spec.js index 92e2d4961..6f41e6644 100644 --- a/packages/server/modules/core/tests/users.spec.js +++ b/packages/server/modules/core/tests/users.spec.js @@ -100,7 +100,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -139,7 +138,9 @@ const { updateApiTokenFactory } = require('@/modules/core/repositories/tokens') const { getTokenAppInfoFactory } = require('@/modules/auth/repositories/apps') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = legacyGetUserFactory({ db }) const getUsers = getUsersFactory({ db }) const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) @@ -190,7 +191,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser: getUserFactory({ db }) + getUser: getUserFactory({ db }), + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/usersAdmin.spec.js b/packages/server/modules/core/tests/usersAdmin.spec.js index 5dcb56e61..a3155d185 100644 --- a/packages/server/modules/core/tests/usersAdmin.spec.js +++ b/packages/server/modules/core/tests/usersAdmin.spec.js @@ -25,7 +25,6 @@ const { const { requestNewEmailVerificationFactory } = require('@/modules/emails/services/verification/request') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -53,10 +52,12 @@ const { getUserDeletableStreamsFactory } = require('@/modules/core/repositories/streams') const { dbLogger } = require('@/logging/logging') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const getUsers = legacyGetPaginatedUsersFactory({ db }) const countUsers = legacyGetPaginatedUsersCountFactory({ db }) +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/core/tests/usersAdminList.spec.ts b/packages/server/modules/core/tests/usersAdminList.spec.ts index df53a6da5..8c4da9b01 100644 --- a/packages/server/modules/core/tests/usersAdminList.spec.ts +++ b/packages/server/modules/core/tests/usersAdminList.spec.ts @@ -47,7 +47,6 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' @@ -55,10 +54,12 @@ import { createUserFactory } from '@/modules/core/services/users/management' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' // To ensure that the invites are created in the correct order, we need to wait a bit between each creation const WAIT_TIMEOUT = 5 +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -83,7 +84,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/core/tests/usersGraphql.spec.ts b/packages/server/modules/core/tests/usersGraphql.spec.ts index d62eceb5e..cd4c5a55a 100644 --- a/packages/server/modules/core/tests/usersGraphql.spec.ts +++ b/packages/server/modules/core/tests/usersGraphql.spec.ts @@ -29,7 +29,6 @@ import { } from '@/modules/serverinvites/repositories/serverInvites' import { buildApolloServer } from '@/app' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -41,7 +40,9 @@ import { } from '@/modules/core/repositories/users' import { UsersEmitter } from '@/modules/core/events/usersEmitter' import { createUserFactory } from '@/modules/core/services/users/management' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail: findEmailFactory({ db }), diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index 072e47d7a..1b7899845 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -43,6 +43,7 @@ import { getObjectFactory, getStreamObjectsFactory } from '@/modules/core/repositories/objects' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { createStreamFactory, getOnboardingBaseStreamFactory, @@ -86,6 +87,7 @@ const crossServerSyncModule: SpeckleModule = { finalize() { crossServerSyncLogger.info('⬇️ Ensuring base onboarding stream asynchronously...') + const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const markOnboardingBaseStream = markOnboardingBaseStreamFactory({ db }) @@ -158,7 +160,8 @@ const crossServerSyncModule: SpeckleModule = { eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/emails/graph/resolvers/index.ts b/packages/server/modules/emails/graph/resolvers/index.ts index e7bb50b77..cc31f05fb 100644 --- a/packages/server/modules/emails/graph/resolvers/index.ts +++ b/packages/server/modules/emails/graph/resolvers/index.ts @@ -1,11 +1,11 @@ import { db } from '@/db/knex' import { Resolvers } from '@/modules/core/graph/generated/graphql' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' import { getUserByEmailFactory, getUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory, getPendingTokenFactory @@ -17,7 +17,7 @@ import { requestEmailVerificationFactory } from '@/modules/emails/services/verif const getUser = getUserFactory({ db }) const requestEmailVerification = requestEmailVerificationFactory({ getUser, - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory({ db }), findPrimaryEmailForUser: findPrimaryEmailForUserFactory({ db }), sendEmail, diff --git a/packages/server/modules/emails/index.ts b/packages/server/modules/emails/index.ts index ce235b507..2b6c83460 100644 --- a/packages/server/modules/emails/index.ts +++ b/packages/server/modules/emails/index.ts @@ -2,9 +2,9 @@ import { db } from '@/db/knex' import { moduleLogger } from '@/logging/logging' import { UsersEmitter } from '@/modules/core/events/usersEmitter' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' import { getUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import * as SendingService from '@/modules/emails/services/sending' @@ -35,7 +35,7 @@ const emailsModule: SpeckleModule = { userEmitterListener: UsersEmitter.listen, requestEmailVerification: requestEmailVerificationFactory({ getUser, - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory( { db } ), diff --git a/packages/server/modules/emails/services/verification/request.ts b/packages/server/modules/emails/services/verification/request.ts index ef8c34ca2..35ebc76de 100644 --- a/packages/server/modules/emails/services/verification/request.ts +++ b/packages/server/modules/emails/services/verification/request.ts @@ -6,7 +6,6 @@ import { UserEmail } from '@/modules/core/domain/userEmails/types' import { UsersEmitter, UsersEvents } from '@/modules/core/events/usersEmitter' import { getEmailVerificationFinalizationRoute } from '@/modules/core/helpers/routeHelper' import { ServerInfo, UserRecord } from '@/modules/core/helpers/types' -import { getServerInfo } from '@/modules/core/services/generic' import { EmailVerificationRequestError } from '@/modules/emails/errors' import { EmailTemplateParams, @@ -20,13 +19,14 @@ import { RequestNewEmailVerification } from '@/modules/emails/domain/operations' import { GetUser } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const EMAIL_SUBJECT = 'Speckle Account E-mail Verification' type CreateNewVerificationDeps = { getUser: GetUser findPrimaryEmailForUser: FindPrimaryEmailForUser - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo deleteOldAndInsertNewVerification: DeleteOldAndInsertNewVerification } @@ -70,7 +70,7 @@ type VerificationRequestContext = { type CreateNewEmailVerificationFactoryDeps = { findEmail: FindEmail getUser: GetUser - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo deleteOldAndInsertNewVerification: DeleteOldAndInsertNewVerification } diff --git a/packages/server/modules/emails/tests/emailTemplating.spec.ts b/packages/server/modules/emails/tests/emailTemplating.spec.ts index 79bac31dd..4fde204f7 100644 --- a/packages/server/modules/emails/tests/emailTemplating.spec.ts +++ b/packages/server/modules/emails/tests/emailTemplating.spec.ts @@ -1,4 +1,5 @@ -import { getServerInfo } from '@/modules/core/services/generic' +import { db } from '@/db/knex' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { EmailTemplateServerInfo, renderEmail @@ -84,7 +85,7 @@ describe('Basic email template', () => { }) it('prefills server info, if not passed in', async () => { - const serverInfo = await getServerInfo() + const serverInfo = await getServerInfoFactory({ db })() const { text, html } = await renderEmail( { diff --git a/packages/server/modules/emails/tests/verifications.spec.ts b/packages/server/modules/emails/tests/verifications.spec.ts index cee98cbec..2b1e93369 100644 --- a/packages/server/modules/emails/tests/verifications.spec.ts +++ b/packages/server/modules/emails/tests/verifications.spec.ts @@ -24,11 +24,11 @@ import { import { buildApolloServer } from '@/app' import { db } from '@/db/knex' import { requestEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' import { sendEmail } from '@/modules/emails/services/sending' import { renderEmail } from '@/modules/emails/services/emailRendering' import { getUserFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const mailerMock = EmailSendingServiceMock const getUser = getUserFactory({ db }) @@ -36,7 +36,7 @@ const getPendingToken = getPendingTokenFactory({ db }) const deleteVerifications = deleteVerificationsFactory({ db }) const requestEmailVerification = requestEmailVerificationFactory({ getUser, - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), deleteOldAndInsertNewVerification: deleteOldAndInsertNewVerificationFactory({ db }), diff --git a/packages/server/modules/fileuploads/tests/fileuploads.integration.spec.ts b/packages/server/modules/fileuploads/tests/fileuploads.integration.spec.ts index a7e05ac99..5bec6de52 100644 --- a/packages/server/modules/fileuploads/tests/fileuploads.integration.spec.ts +++ b/packages/server/modules/fileuploads/tests/fileuploads.integration.spec.ts @@ -47,7 +47,6 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { createUserFactory } from '@/modules/core/services/users/management' @@ -61,7 +60,9 @@ import { storeTokenResourceAccessDefinitionsFactory, storeTokenScopesFactory } from '@/modules/core/repositories/tokens' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -86,7 +87,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/notifications/services/handlers/activityDigest.ts b/packages/server/modules/notifications/services/handlers/activityDigest.ts index 1c0e0f911..8dc19ccb0 100644 --- a/packages/server/modules/notifications/services/handlers/activityDigest.ts +++ b/packages/server/modules/notifications/services/handlers/activityDigest.ts @@ -8,7 +8,6 @@ import { AllActivityTypes, StreamScopeActivity } from '@/modules/activitystream/helpers/types' -import { getServerInfo } from '@/modules/core/services/generic' import { ServerInfo, UserRecord } from '@/modules/core/helpers/types' import { sendEmail, SendEmailParams } from '@/modules/emails/services/sending' import { groupBy } from 'lodash' @@ -33,13 +32,15 @@ import { createActivitySummaryFactory } from '@/modules/activitystream/services/ import { getActivityFactory } from '@/modules/activitystream/repositories' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' +import { GetServerInfo } from '@/modules/core/domain/server/operations' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const digestNotificationEmailHandlerFactory = ( deps: { getUserNotificationPreferences: GetUserNotificationPreferences createActivitySummary: CreateActivitySummary - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo } & PrepareSummaryEmailDeps ) => async ( @@ -441,7 +442,7 @@ const digestNotificationEmailHandler = digestNotificationEmailHandlerFactory({ getActivity: getActivityFactory({ db }), getUser: getUserFactory({ db }) }), - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), renderEmail }) diff --git a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts index 769eaebf3..ccfe87b18 100644 --- a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts +++ b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts @@ -2,15 +2,16 @@ import { db } from '@/db/knex' import { GetComment } from '@/modules/comments/domain/operations' import { ExtendedComment } from '@/modules/comments/domain/types' import { getCommentFactory } from '@/modules/comments/repositories/comments' +import { GetServerInfo } from '@/modules/core/domain/server/operations' import { GetStream } from '@/modules/core/domain/streams/operations' import { StreamWithOptionalRole } from '@/modules/core/domain/streams/types' import { GetUser } from '@/modules/core/domain/users/operations' import { Roles } from '@/modules/core/helpers/mainConstants' import { getCommentRoute } from '@/modules/core/helpers/routeHelper' import { ServerInfo } from '@/modules/core/helpers/types' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory, UserWithOptionalRole } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { EmailTemplateParams, renderEmail @@ -168,7 +169,7 @@ const mentionedInCommentHandlerFactory = getUser: GetUser getStream: GetStream getComment: GetComment - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo renderEmail: typeof renderEmail sendEmail: typeof sendEmail }): NotificationHandler => @@ -225,7 +226,7 @@ const handler: NotificationHandler = async (...args) getUser: getUserFactory({ db }), getStream: getStreamFactory({ db }), getComment: getCommentFactory({ db }), - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), renderEmail, sendEmail }) diff --git a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts index a1baee9e0..6209eced0 100644 --- a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts +++ b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts @@ -17,13 +17,14 @@ import { EmailTemplateParams, renderEmail } from '@/modules/emails/services/emailRendering' -import { getServerInfo } from '@/modules/core/services/generic' import { db } from '@/db/knex' import { GetPendingAccessRequest } from '@/modules/accessrequests/domain/operations' import { GetStream } from '@/modules/core/domain/streams/operations' import { getStreamFactory } from '@/modules/core/repositories/streams' import { GetUser } from '@/modules/core/domain/users/operations' import { getUserFactory } from '@/modules/core/repositories/users' +import { GetServerInfo } from '@/modules/core/domain/server/operations' +import { getServerInfoFactory } from '@/modules/core/repositories/server' type ValidateMessageDeps = { getPendingAccessRequest: GetPendingAccessRequest @@ -123,7 +124,7 @@ function buildEmailTemplateParams(state: ValidatedMessageState): EmailTemplatePa const newStreamAccessRequestHandlerFactory = ( deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo renderEmail: typeof renderEmail sendEmail: typeof sendEmail } & ValidateMessageDeps @@ -148,7 +149,7 @@ const newStreamAccessRequestHandlerFactory = const handler: NotificationHandler = (...args) => { const newStreamAccessRequestHandler = newStreamAccessRequestHandlerFactory({ - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), renderEmail, sendEmail, getUser: getUserFactory({ db }), diff --git a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts index ed2db6dee..3e3688e08 100644 --- a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts +++ b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts @@ -1,13 +1,14 @@ import { db } from '@/db/knex' +import { GetServerInfo } from '@/modules/core/domain/server/operations' import { GetStream } from '@/modules/core/domain/streams/operations' import { GetUser } from '@/modules/core/domain/users/operations' import { buildAbsoluteFrontendUrlFromPath, getStreamRoute } from '@/modules/core/helpers/routeHelper' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { EmailTemplateParams, renderEmail @@ -101,7 +102,7 @@ function buildEmailTemplateParams(state: ValidatedMessageState): EmailTemplatePa const streamAccessRequestApprovedHandlerFactory = ( deps: { - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo renderEmail: typeof renderEmail sendEmail: typeof sendEmail } & ValidateMessageDeps @@ -128,7 +129,7 @@ const handler: NotificationHandler = async ( ...args ) => { const streamAccessRequestApprovedHandler = streamAccessRequestApprovedHandlerFactory({ - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), renderEmail, sendEmail, getUser: getUserFactory({ db }), diff --git a/packages/server/modules/pwdreset/rest/index.ts b/packages/server/modules/pwdreset/rest/index.ts index 6aca61440..dd37706d8 100644 --- a/packages/server/modules/pwdreset/rest/index.ts +++ b/packages/server/modules/pwdreset/rest/index.ts @@ -1,11 +1,11 @@ import { db } from '@/db/knex' import { deleteExistingAuthTokensFactory } from '@/modules/auth/repositories' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getUserByEmailFactory, getUserFactory, updateUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { changePasswordFactory } from '@/modules/core/services/users/management' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -29,7 +29,7 @@ export default function (app: Express) { getUserByEmail, getPendingToken: getPendingTokenFactory({ db }), createToken: createTokenFactory({ db }), - getServerInfo, + getServerInfo: getServerInfoFactory({ db }), renderEmail, sendEmail }) diff --git a/packages/server/modules/pwdreset/services/request.ts b/packages/server/modules/pwdreset/services/request.ts index 433258c19..f08492bb8 100644 --- a/packages/server/modules/pwdreset/services/request.ts +++ b/packages/server/modules/pwdreset/services/request.ts @@ -1,6 +1,6 @@ +import { GetServerInfo } from '@/modules/core/domain/server/operations' import { GetUserByEmail } from '@/modules/core/domain/users/operations' import { getPasswordResetFinalizationRoute } from '@/modules/core/helpers/routeHelper' -import { getServerInfo } from '@/modules/core/services/generic' import { EmailTemplateParams, renderEmail @@ -17,7 +17,7 @@ type InitializeNewTokenDeps = { getUserByEmail: GetUserByEmail getPendingToken: GetPendingToken createToken: CreateToken - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo } /** diff --git a/packages/server/modules/pwdreset/tests/pwdrest.spec.js b/packages/server/modules/pwdreset/tests/pwdrest.spec.js index 8efe46376..3e7e9b64b 100644 --- a/packages/server/modules/pwdreset/tests/pwdrest.spec.js +++ b/packages/server/modules/pwdreset/tests/pwdrest.spec.js @@ -21,7 +21,6 @@ const { countAdminUsersFactory, storeUserAclFactory } = require('@/modules/core/repositories/users') -const { getServerInfo } = require('@/modules/core/services/generic') const { deleteOldAndInsertNewVerificationFactory } = require('@/modules/emails/repositories') @@ -39,8 +38,10 @@ const { updateAllInviteTargetsFactory } = require('@/modules/serverinvites/repositories/serverInvites') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const db = knex +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts b/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts index 7d1f2da1f..f00fb4448 100644 --- a/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts +++ b/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts @@ -67,7 +67,6 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' -import { getServerInfo } from '@/modules/core/services/generic' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' @@ -83,6 +82,7 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' const saveActivity = saveActivityFactory({ db }) const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver }) @@ -102,6 +102,7 @@ const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({ publish }) }) +const getServerInfo = getServerInfoFactory({ db }) const getStream = getStreamFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail: findEmailFactory({ db }), @@ -130,7 +131,8 @@ const buildCreateAndSendServerOrProjectInvite = () => eventName, payload }), - getUser + getUser, + getServerInfo }) export = { @@ -383,7 +385,8 @@ export = { findUserByTarget: findUserByTargetFactory({ db }), findInvite: findInviteFactory({ db }), markInviteUpdated: markInviteUpdatedfactory({ db }), - getUser + getUser, + getServerInfo }) await resendInviteEmail({ inviteId }) diff --git a/packages/server/modules/serverinvites/services/creation.ts b/packages/server/modules/serverinvites/services/creation.ts index df2b33875..b6a809dba 100644 --- a/packages/server/modules/serverinvites/services/creation.ts +++ b/packages/server/modules/serverinvites/services/creation.ts @@ -1,5 +1,4 @@ import crs from 'crypto-random-string' -import { getServerInfo } from '@/modules/core/services/generic' import emailsModule from '@/modules/emails' import { InviteCreateValidationError } from '@/modules/serverinvites/errors' import sanitizeHtml from 'sanitize-html' @@ -32,6 +31,7 @@ import { import { ServerInfo } from '@/modules/core/helpers/types' import { EventBusEmit } from '@/modules/shared/services/eventBus' import { GetUser } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const getFinalTargetData = ( target: string, @@ -90,7 +90,8 @@ export const createAndSendInviteFactory = collectAndValidateResourceTargets, buildInviteEmailContents, emitEvent, - getUser + getUser, + getServerInfo }: { findUserByTarget: FindUserByTarget insertInviteAndDeleteOld: InsertInviteAndDeleteOld @@ -98,6 +99,7 @@ export const createAndSendInviteFactory = buildInviteEmailContents: BuildInviteEmailContents emitEvent: EventBusEmit getUser: GetUser + getServerInfo: GetServerInfo }): CreateAndSendInvite => async (params, inviterResourceAccessLimits?) => { const sendInviteEmail = sendInviteEmailFactory({ buildInviteEmailContents }) @@ -194,13 +196,15 @@ export const resendInviteEmailFactory = findUserByTarget, findInvite, markInviteUpdated, - getUser + getUser, + getServerInfo }: { buildInviteEmailContents: BuildInviteEmailContents findUserByTarget: FindUserByTarget findInvite: FindInvite markInviteUpdated: MarkInviteUpdated getUser: GetUser + getServerInfo: GetServerInfo }): ResendInviteEmail => async (params) => { const sendInviteEmail = sendInviteEmailFactory({ buildInviteEmailContents }) diff --git a/packages/server/modules/serverinvites/services/processing.ts b/packages/server/modules/serverinvites/services/processing.ts index 694436744..9765ab8ac 100644 --- a/packages/server/modules/serverinvites/services/processing.ts +++ b/packages/server/modules/serverinvites/services/processing.ts @@ -46,8 +46,8 @@ import { ValidateAndCreateUserEmail } from '@/modules/core/domain/userEmails/operations' import { ServerInfo } from '@/modules/core/helpers/types' -import { getServerInfo } from '@/modules/core/services/generic' import { GetUser } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' /** * Convert the initial validation function to a finalization validation function so same logic can be reused @@ -195,7 +195,7 @@ type FinalizeResourceInviteFactoryDeps = { findEmail: FindEmail validateAndCreateUserEmail: ValidateAndCreateUserEmail collectAndValidateResourceTargets: CollectAndValidateResourceTargets - getServerInfo: typeof getServerInfo + getServerInfo: GetServerInfo getUser: GetUser } diff --git a/packages/server/modules/stats/tests/stats.spec.ts b/packages/server/modules/stats/tests/stats.spec.ts index 5dfdf5cb6..12cb624e3 100644 --- a/packages/server/modules/stats/tests/stats.spec.ts +++ b/packages/server/modules/stats/tests/stats.spec.ts @@ -73,7 +73,6 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -88,7 +87,9 @@ import { storeTokenResourceAccessDefinitionsFactory, storeTokenScopesFactory } from '@/modules/core/repositories/tokens' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db }) const getObject = getObjectFactory({ db }) @@ -135,7 +136,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser: getUserFactory({ db }) + getUser: getUserFactory({ db }), + getServerInfo }), getUsers }), diff --git a/packages/server/modules/webhooks/services/webhooks.ts b/packages/server/modules/webhooks/services/webhooks.ts index abbf579ae..ac8564ba7 100644 --- a/packages/server/modules/webhooks/services/webhooks.ts +++ b/packages/server/modules/webhooks/services/webhooks.ts @@ -1,4 +1,3 @@ -import { getServerInfo as getServerInfoFn } from '@/modules/core/services/generic' import { ForbiddenError } from '@/modules/shared/errors' import { CountWebhooksByStreamId, @@ -17,6 +16,7 @@ import { ServerInfo } from '@/modules/core/helpers/types' import { GetStream } from '@/modules/core/domain/streams/operations' import { UserWithOptionalRole } from '@/modules/core/domain/users/types' import { GetUser } from '@/modules/core/domain/users/operations' +import { GetServerInfo } from '@/modules/core/domain/server/operations' const MAX_STREAM_WEBHOOKS = 100 @@ -105,7 +105,7 @@ export const dispatchStreamEventFactory = getUser }: { db: Knex // TODO: this should not be injected here - getServerInfo: typeof getServerInfoFn + getServerInfo: GetServerInfo getStream: GetStream createWebhookEvent: CreateWebhookEvent getUser: GetUser diff --git a/packages/server/modules/webhooks/tests/cleanup.spec.ts b/packages/server/modules/webhooks/tests/cleanup.spec.ts index 25dd0bc85..daa3c699d 100644 --- a/packages/server/modules/webhooks/tests/cleanup.spec.ts +++ b/packages/server/modules/webhooks/tests/cleanup.spec.ts @@ -8,6 +8,7 @@ import { createRandomPassword } from '@/modules/core/helpers/testHelpers' import { createBranchFactory } from '@/modules/core/repositories/branches' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { createStreamFactory, getStreamFactory @@ -24,7 +25,6 @@ import { storeUserAclFactory, storeUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { createStreamReturnRecordFactory, legacyCreateStreamFactory @@ -59,6 +59,7 @@ const WEBHOOKS_EVENTS_TABLE = 'webhooks_events' const WebhooksConfig = () => knex(WEBHOOKS_CONFIG_TABLE) const randomId = () => crs({ length: 10 }) +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const getUser = getUserFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -83,7 +84,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/webhooks/tests/webhooks.spec.js b/packages/server/modules/webhooks/tests/webhooks.spec.js index eba30a18e..7b12d8c49 100644 --- a/packages/server/modules/webhooks/tests/webhooks.spec.js +++ b/packages/server/modules/webhooks/tests/webhooks.spec.js @@ -27,7 +27,6 @@ const { dispatchStreamEventFactory } = require('@/modules/webhooks/services/webhooks') const { Users, Streams } = require('@/modules/core/dbSchema') -const { getServerInfo } = require('@/modules/core/services/generic') const { getStreamFactory, createStreamFactory, @@ -98,7 +97,9 @@ const { storeTokenResourceAccessDefinitionsFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -127,7 +128,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts index 99dd0c966..ad271e594 100644 --- a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts +++ b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts @@ -129,7 +129,6 @@ import { deleteWorkspaceDomainFactory, isUserWorkspaceDomainPolicyCompliantFactory } from '@/modules/workspaces/services/domains' -import { getServerInfo } from '@/modules/core/services/generic' import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' @@ -149,7 +148,9 @@ import { import { publish } from '@/modules/shared/utils/subscriptions' import { updateStreamRoleAndNotifyFactory } from '@/modules/core/services/streams/management' import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getUsers = getUsersFactory({ db }) const getStream = getStreamFactory({ db }) @@ -183,7 +184,8 @@ const buildCreateAndSendServerOrProjectInvite = () => eventName, payload }), - getUser + getUser, + getServerInfo }) const buildCreateAndSendWorkspaceInvite = () => @@ -200,7 +202,8 @@ const buildCreateAndSendWorkspaceInvite = () => eventName, payload }), - getUser + getUser, + getServerInfo }) const deleteStream = deleteStreamFactory({ db }) const saveActivity = saveActivityFactory({ db }) @@ -598,7 +601,8 @@ export = FF_WORKSPACES_MODULE_ENABLED filterQuery: workspaceInviteValidityFilter }), markInviteUpdated: markInviteUpdatedfactory({ db }), - getUser + getUser, + getServerInfo }) await resendInviteEmail({ diff --git a/packages/server/modules/workspaces/tests/helpers/creation.ts b/packages/server/modules/workspaces/tests/helpers/creation.ts index 17bbde42f..3bff6288d 100644 --- a/packages/server/modules/workspaces/tests/helpers/creation.ts +++ b/packages/server/modules/workspaces/tests/helpers/creation.ts @@ -46,6 +46,7 @@ import { } from '@speckle/shared' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' export type BasicTestWorkspace = { /** @@ -208,6 +209,7 @@ export const createWorkspaceInviteDirectly = async ( args: CreateWorkspaceInviteMutationVariables, inviterId: string ) => { + const getServerInfo = getServerInfoFactory({ db }) const getStream = getStreamFactory({ db }) const getUser = getUserFactory({ db }) const createAndSendInvite = createAndSendInviteFactory({ @@ -228,7 +230,8 @@ export const createWorkspaceInviteDirectly = async ( eventName, payload }), - getUser + getUser, + getServerInfo }) const createInvite = createWorkspaceInviteFactory({ diff --git a/packages/server/scripts/seedUsers.js b/packages/server/scripts/seedUsers.js index 1fbfdc96f..d668549f5 100644 --- a/packages/server/scripts/seedUsers.js +++ b/packages/server/scripts/seedUsers.js @@ -2,6 +2,7 @@ require('../bootstrap') const { db } = require('@/db/knex') const { logger } = require('@/logging/logging') const { UsersEmitter } = require('@/modules/core/events/usersEmitter') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') const { findEmailFactory, createUserEmailFactory, @@ -13,7 +14,6 @@ const { countAdminUsersFactory, storeUserAclFactory } = require('@/modules/core/repositories/users') -const { getServerInfo } = require('@/modules/core/services/generic') const { validateAndCreateUserEmailFactory } = require('@/modules/core/services/userEmails') @@ -35,6 +35,7 @@ const { } = require('@/modules/serverinvites/services/processing') const axios = require('axios').default +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/scripts/streamObjects.js b/packages/server/scripts/streamObjects.js index 53c493418..819de81cc 100644 --- a/packages/server/scripts/streamObjects.js +++ b/packages/server/scripts/streamObjects.js @@ -51,7 +51,9 @@ const { storeTokenResourceAccessDefinitionsFactory, storePersonalApiTokenFactory } = require('@/modules/core/repositories/tokens') +const { getServerInfoFactory } = require('@/modules/core/repositories/server') +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const getUser = getUserFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -76,7 +78,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), diff --git a/packages/server/test/authHelper.ts b/packages/server/test/authHelper.ts index 78525dd39..fca9602a8 100644 --- a/packages/server/test/authHelper.ts +++ b/packages/server/test/authHelper.ts @@ -2,6 +2,7 @@ import { db } from '@/db/knex' import { UsersEmitter } from '@/modules/core/events/usersEmitter' import { AllScopes, ServerRoles } from '@/modules/core/helpers/mainConstants' import { UserRecord } from '@/modules/core/helpers/types' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { storeApiTokenFactory, storePersonalApiTokenFactory, @@ -19,7 +20,6 @@ import { storeUserAclFactory, storeUserFactory } from '@/modules/core/repositories/users' -import { getServerInfo } from '@/modules/core/services/generic' import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' import { createUserFactory } from '@/modules/core/services/users/management' @@ -35,6 +35,7 @@ import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvite import { ServerScope } from '@speckle/shared' import { kebabCase, omit } from 'lodash' +const getServerInfo = getServerInfoFactory({ db }) const findEmail = findEmailFactory({ db }) const requestNewEmailVerification = requestNewEmailVerificationFactory({ findEmail, diff --git a/packages/server/test/speckle-helpers/inviteHelper.ts b/packages/server/test/speckle-helpers/inviteHelper.ts index c3ce743fc..f618daf49 100644 --- a/packages/server/test/speckle-helpers/inviteHelper.ts +++ b/packages/server/test/speckle-helpers/inviteHelper.ts @@ -27,7 +27,9 @@ import { import { EmailSendingServiceMock } from '@/test/mocks/global' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' +import { getServerInfoFactory } from '@/modules/core/repositories/server' +const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) const getStream = getStreamFactory({ db }) const createAndSendInvite = createAndSendInviteFactory({ @@ -44,7 +46,8 @@ const createAndSendInvite = createAndSendInviteFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }) export const createServerInviteDirectly = async ( diff --git a/packages/server/test/speckle-helpers/streamHelper.ts b/packages/server/test/speckle-helpers/streamHelper.ts index 58608024a..ce51913a6 100644 --- a/packages/server/test/speckle-helpers/streamHelper.ts +++ b/packages/server/test/speckle-helpers/streamHelper.ts @@ -8,6 +8,7 @@ import { StreamAcl } from '@/modules/core/dbSchema' import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter' import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' import { createBranchFactory } from '@/modules/core/repositories/branches' +import { getServerInfoFactory } from '@/modules/core/repositories/server' import { createStreamFactory, getStreamFactory, @@ -39,6 +40,7 @@ import { BasicTestUser } from '@/test/authHelper' import { ensureError } from '@speckle/shared' import { omit } from 'lodash' +const getServerInfo = getServerInfoFactory({ db }) const getUsers = getUsersFactory({ db }) const getUser = getUserFactory({ db }) const addStreamCreatedActivity = addStreamCreatedActivityFactory({ @@ -63,7 +65,8 @@ const createStream = legacyCreateStreamFactory({ eventName, payload }), - getUser + getUser, + getServerInfo }), getUsers }), From 3d85cbe8b7dd5fe6dc72e16509d144bbd470c22a Mon Sep 17 00:00:00 2001 From: Kristaps Fabians Geikins Date: Thu, 17 Oct 2024 12:47:04 +0300 Subject: [PATCH 2/2] linter fix --- .../modules/notifications/tests/activityDigest.spec.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/server/modules/notifications/tests/activityDigest.spec.ts b/packages/server/modules/notifications/tests/activityDigest.spec.ts index 2fbea4d5d..44deeb63c 100644 --- a/packages/server/modules/notifications/tests/activityDigest.spec.ts +++ b/packages/server/modules/notifications/tests/activityDigest.spec.ts @@ -55,7 +55,11 @@ describe('Activity digest notifications @notifications', () => { completed: false, inviteOnly: true, version: 'testing 1 2 3', - guestModeEnabled: false + guestModeEnabled: false, + configuration: { + objectMultipartUploadSizeLimitBytes: 1000000, + objectSizeLimitBytes: 1000000 + } } const topic: DigestTopic = {