diff --git a/packages/server/app.ts b/packages/server/app.ts index 217bdb993..45a2a5170 100644 --- a/packages/server/app.ts +++ b/packages/server/app.ts @@ -3,7 +3,8 @@ // eslint-disable-next-line no-restricted-imports import './bootstrap.js' import http from 'http' -import express, { Express } from 'express' +import type { Express } from 'express' +import express from 'express' // `express-async-errors` patches express to catch errors in async handlers. no variable needed import 'express-async-errors' @@ -24,7 +25,8 @@ import { } from '@/observability/components/express/expressLogging' import { errorMetricsMiddlewareFactory } from '@/observability/components/express/metrics/errorMetrics' -import prometheusClient, { Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import prometheusClient from 'prom-client' import { ApolloServer } from '@apollo/server' import { expressMiddleware } from '@apollo/server/express4' @@ -52,7 +54,7 @@ import { isRateLimiterEnabled } from '@/modules/shared/helpers/envHelper' import * as ModulesSetup from '@/modules/index' -import { GraphQLContext, Optional } from '@/modules/shared/helpers/typeHelper' +import type { GraphQLContext, Optional } from '@/modules/shared/helpers/typeHelper' import { get, has, isString } from 'lodash-es' import { corsMiddlewareFactory } from '@/modules/core/configs/cors' @@ -74,7 +76,7 @@ import { initFactory as healthchecksInitFactory } from '@/healthchecks' import type { ReadinessHandler } from '@/healthchecks/types' import type ws from 'ws' import type { Server as MockWsServer } from 'mock-socket' -import { SetOptional } from 'type-fest' +import type { SetOptional } from 'type-fest' import { enterNewRequestContext, getRequestContext, diff --git a/packages/server/db/migrations.ts b/packages/server/db/migrations.ts index 7f462fa33..643da3079 100644 --- a/packages/server/db/migrations.ts +++ b/packages/server/db/migrations.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' import { DatabaseError } from '@/modules/shared/errors' import { ensureError } from '@speckle/shared' import { startupLogger } from '@/observability/logging' diff --git a/packages/server/eslint.config.mjs b/packages/server/eslint.config.mjs index 49c425ea3..60c181167 100644 --- a/packages/server/eslint.config.mjs +++ b/packages/server/eslint.config.mjs @@ -44,6 +44,7 @@ const configs = [ patterns: ['.*'] } ], + '@typescript-eslint/consistent-type-imports': 'error', '@typescript-eslint/no-explicit-any': 'error', '@typescript-eslint/no-unsafe-return': 'error', '@typescript-eslint/no-floating-promises': 'error', diff --git a/packages/server/esmLoader.js b/packages/server/esmLoader.js index d541ed272..652f09780 100644 --- a/packages/server/esmLoader.js +++ b/packages/server/esmLoader.js @@ -21,7 +21,7 @@ const aliases = { /** * EXTENSIONS TO EVALUATE FOR EXTENSIONLESS IMPORTS */ -const extensions = ['.js', '.mjs', '.cjs', '.json'] +const extensions = ['.ts', '.js', '.mjs', '.cjs', '.json'] // Register the module hooks register('./esmLoader.js', { diff --git a/packages/server/healthchecks/connectionPool.ts b/packages/server/healthchecks/connectionPool.ts index a938771ff..bff1538af 100644 --- a/packages/server/healthchecks/connectionPool.ts +++ b/packages/server/healthchecks/connectionPool.ts @@ -1,4 +1,4 @@ -import { +import type { FreeConnectionsCalculator, FreeConnectionsCalculators } from '@/healthchecks/types' diff --git a/packages/server/healthchecks/health.ts b/packages/server/healthchecks/health.ts index 3ff2d8bff..53c51a087 100644 --- a/packages/server/healthchecks/health.ts +++ b/packages/server/healthchecks/health.ts @@ -1,7 +1,7 @@ import { ensureErrorOrWrapAsCause } from '@/modules/shared/errors/ensureError' import { join, merge } from 'lodash-es' import VError from 'verror' -import { +import type { FreeConnectionsCalculators, MultiDBCheck, ReadinessHandler, diff --git a/packages/server/healthchecks/index.ts b/packages/server/healthchecks/index.ts index 4f935bdbf..e74244c9a 100644 --- a/packages/server/healthchecks/index.ts +++ b/packages/server/healthchecks/index.ts @@ -1,10 +1,10 @@ import { healthCheckLogger } from '@/observability/logging' import { highFrequencyMetricsCollectionPeriodMs } from '@/modules/shared/helpers/envHelper' import { handleLivenessFactory, handleReadinessFactory } from '@/healthchecks/health' -import { FreeConnectionsCalculator, ReadinessHandler } from '@/healthchecks/types' +import type { FreeConnectionsCalculator, ReadinessHandler } from '@/healthchecks/types' import { isRedisAlive } from '@/healthchecks/redis' import { areAllPostgresAlive } from '@/healthchecks/postgres' -import { Application } from 'express' +import type { Application } from 'express' import { knexFreeDbConnectionSamplerFactory } from '@/healthchecks/connectionPool' import { getAllRegisteredDbClients } from '@/modules/multiregion/utils/dbSelector' diff --git a/packages/server/healthchecks/tests/redis.spec.ts b/packages/server/healthchecks/tests/redis.spec.ts index 7b02a5b60..0a02d18d2 100644 --- a/packages/server/healthchecks/tests/redis.spec.ts +++ b/packages/server/healthchecks/tests/redis.spec.ts @@ -1,7 +1,7 @@ import { expect } from 'chai' import { isRedisAlive } from '@/healthchecks/redis' import { getInmemoryRedisClient } from '@/test/redisHelper' -import Redis from 'ioredis' +import type Redis from 'ioredis' describe('Healthchecks @healthchecks', () => { describe('Redis health check @redis', () => { diff --git a/packages/server/healthchecks/types.ts b/packages/server/healthchecks/types.ts index a80daba70..680584be8 100644 --- a/packages/server/healthchecks/types.ts +++ b/packages/server/healthchecks/types.ts @@ -1,4 +1,4 @@ -import Redis from 'ioredis' +import type Redis from 'ioredis' export type CheckResponse = { isAlive: true } | { isAlive: false; err: unknown } export type RedisCheck = (params: { client: Redis }) => Promise diff --git a/packages/server/knexfile.ts b/packages/server/knexfile.ts index 48d47e380..f93da3bac 100644 --- a/packages/server/knexfile.ts +++ b/packages/server/knexfile.ts @@ -13,13 +13,9 @@ import { knexAsyncStackTracesEnabled } from '@/modules/shared/helpers/envHelper' import { dbLogger as logger } from '@/observability/logging' -import { Knex } from 'knex' -import { - createKnexConfig, - configureKnexClient, - KnexConfigArgs, - RegionServerConfig -} from '@speckle/shared/environment/db' +import type { Knex } from 'knex' +import type { KnexConfigArgs, RegionServerConfig } from '@speckle/shared/environment/db' +import { createKnexConfig, configureKnexClient } from '@speckle/shared/environment/db' function walk(dir: string) { let results: string[] = [] diff --git a/packages/server/modules/accessrequests/domain/events.ts b/packages/server/modules/accessrequests/domain/events.ts index 5df619b3d..6214cde20 100644 --- a/packages/server/modules/accessrequests/domain/events.ts +++ b/packages/server/modules/accessrequests/domain/events.ts @@ -1,5 +1,5 @@ -import { ServerAccessRequestRecord } from '@/modules/accessrequests/repositories' -import { StreamRoles } from '@speckle/shared' +import type { ServerAccessRequestRecord } from '@/modules/accessrequests/repositories' +import type { StreamRoles } from '@speckle/shared' export const accessRequestEventsNamespace = 'accessrequests' as const diff --git a/packages/server/modules/accessrequests/domain/operations.ts b/packages/server/modules/accessrequests/domain/operations.ts index d279b947b..92187b3a8 100644 --- a/packages/server/modules/accessrequests/domain/operations.ts +++ b/packages/server/modules/accessrequests/domain/operations.ts @@ -1,10 +1,10 @@ -import { StreamAccessRequestGraphQLReturn } from '@/modules/accessrequests/helpers/graphTypes' -import { +import type { StreamAccessRequestGraphQLReturn } from '@/modules/accessrequests/helpers/graphTypes' +import type { AccessRequestType, ServerAccessRequestRecord, StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' -import { Nullable, Optional } from '@speckle/shared' +import type { Nullable, Optional } from '@speckle/shared' export type GetUsersPendingAccessRequest = < T extends AccessRequestType = AccessRequestType, diff --git a/packages/server/modules/accessrequests/graph/resolvers/index.ts b/packages/server/modules/accessrequests/graph/resolvers/index.ts index bf7b2611c..6263a4405 100644 --- a/packages/server/modules/accessrequests/graph/resolvers/index.ts +++ b/packages/server/modules/accessrequests/graph/resolvers/index.ts @@ -16,7 +16,7 @@ import { requestProjectAccessFactory, requestStreamAccessFactory } from '@/modules/accessrequests/services/stream' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { mapStreamRoleToValue } from '@/modules/core/helpers/graphTypes' import { Roles } from '@/modules/core/helpers/mainConstants' import { diff --git a/packages/server/modules/accessrequests/helpers/graphTypes.ts b/packages/server/modules/accessrequests/helpers/graphTypes.ts index 2f1946a80..e28aa782d 100644 --- a/packages/server/modules/accessrequests/helpers/graphTypes.ts +++ b/packages/server/modules/accessrequests/helpers/graphTypes.ts @@ -1,5 +1,5 @@ -import { StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' -import { StreamAccessRequest } from '@/modules/core/graph/generated/graphql' +import type { StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' +import type { StreamAccessRequest } from '@/modules/core/graph/generated/graphql' export type StreamAccessRequestGraphQLReturn = Omit< StreamAccessRequest, diff --git a/packages/server/modules/accessrequests/index.ts b/packages/server/modules/accessrequests/index.ts index 59b9f56d0..2f536c316 100644 --- a/packages/server/modules/accessrequests/index.ts +++ b/packages/server/modules/accessrequests/index.ts @@ -3,7 +3,7 @@ import { moduleLogger } from '@/observability/logging' import { initializeEventListenerFactory } from '@/modules/accessrequests/services/eventListener' import { getStreamCollaboratorsFactory } from '@/modules/core/repositories/streams' import { publishNotification } from '@/modules/notifications/services/publication' -import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' let quitListeners: Optional<() => void> = undefined diff --git a/packages/server/modules/accessrequests/migrations/20220829102231_add_server_access_requests_table.ts b/packages/server/modules/accessrequests/migrations/20220829102231_add_server_access_requests_table.ts index 47e5e3ec4..c953cdc50 100644 --- a/packages/server/modules/accessrequests/migrations/20220829102231_add_server_access_requests_table.ts +++ b/packages/server/modules/accessrequests/migrations/20220829102231_add_server_access_requests_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_access_requests' diff --git a/packages/server/modules/accessrequests/repositories/index.ts b/packages/server/modules/accessrequests/repositories/index.ts index e9426bc10..c9db02b79 100644 --- a/packages/server/modules/accessrequests/repositories/index.ts +++ b/packages/server/modules/accessrequests/repositories/index.ts @@ -1,4 +1,4 @@ -import { +import type { AccessRecordInput, CreateNewRequest, DeleteRequestById, @@ -8,9 +8,9 @@ import { } from '@/modules/accessrequests/domain/operations' import { ServerAccessRequests, Streams } from '@/modules/core/dbSchema' import { InvalidArgumentError } from '@/modules/shared/errors' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' const tables = { serverAccessRequests: (db: Knex) => db(ServerAccessRequests.name) diff --git a/packages/server/modules/accessrequests/services/eventListener.ts b/packages/server/modules/accessrequests/services/eventListener.ts index 48680f55a..929503cbf 100644 --- a/packages/server/modules/accessrequests/services/eventListener.ts +++ b/packages/server/modules/accessrequests/services/eventListener.ts @@ -1,12 +1,10 @@ import { AccessRequestEvents } from '@/modules/accessrequests/domain/events' import { isStreamAccessRequest } from '@/modules/accessrequests/repositories' -import { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' +import type { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' import { Roles } from '@/modules/core/helpers/mainConstants' -import { - NotificationPublisher, - NotificationType -} from '@/modules/notifications/helpers/types' -import { EventBus, EventPayload } from '@/modules/shared/services/eventBus' +import type { NotificationPublisher } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' +import type { EventBus, EventPayload } from '@/modules/shared/services/eventBus' type OnServerAccessRequestCreatedDeps = { getStreamCollaborators: GetStreamCollaborators diff --git a/packages/server/modules/accessrequests/services/stream.ts b/packages/server/modules/accessrequests/services/stream.ts index 7e134bcb9..bc2c5e5ce 100644 --- a/packages/server/modules/accessrequests/services/stream.ts +++ b/packages/server/modules/accessrequests/services/stream.ts @@ -2,23 +2,23 @@ import { AccessRequestCreationError, AccessRequestProcessingError } from '@/modules/accessrequests/errors' -import { StreamAccessRequestGraphQLReturn } from '@/modules/accessrequests/helpers/graphTypes' -import { - AccessRequestType, - generateId, +import type { StreamAccessRequestGraphQLReturn } from '@/modules/accessrequests/helpers/graphTypes' +import type { ServerAccessRequestRecord, StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' +import { AccessRequestType, generateId } from '@/modules/accessrequests/repositories' import { StreamInvalidAccessError } from '@/modules/core/errors/stream' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { Roles, StreamRoles } from '@/modules/core/helpers/mainConstants' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { StreamRoles } from '@/modules/core/helpers/mainConstants' +import { Roles } from '@/modules/core/helpers/mainConstants' import { ensureError } from '@/modules/shared/helpers/errorHelper' -import { +import type { MaybeNullOrUndefined, Nullable, Optional } from '@/modules/shared/helpers/typeHelper' -import { +import type { CreateNewRequest, DeleteRequestById, GetPendingAccessRequest, @@ -29,12 +29,12 @@ import { GetUserStreamAccessRequest, RequestProjectAccess } from '@/modules/accessrequests/domain/operations' -import { +import type { AddOrUpdateStreamCollaborator, GetStream, ValidateStreamAccess } from '@/modules/core/domain/streams/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { AccessRequestEvents } from '@/modules/accessrequests/domain/events' function buildStreamAccessRequestGraphQLReturn( diff --git a/packages/server/modules/accessrequests/tests/projectAccessRequests.spec.ts b/packages/server/modules/accessrequests/tests/projectAccessRequests.spec.ts index 2f997ed98..34bf317ce 100644 --- a/packages/server/modules/accessrequests/tests/projectAccessRequests.spec.ts +++ b/packages/server/modules/accessrequests/tests/projectAccessRequests.spec.ts @@ -40,7 +40,8 @@ import { import { NotificationType } from '@/modules/notifications/helpers/types' import { authorizeResolver } from '@/modules/shared' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { CreateProjectAccessRequestDocument, GetActiveUserFullProjectAccessRequestDocument, @@ -49,15 +50,16 @@ import { StreamRole, UseProjectAccessRequestDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { truncateTables } from '@/test/hooks' -import { - buildNotificationsStateTracker, - NotificationsStateManager -} from '@/test/notificationsHelper' +import type { NotificationsStateManager } from '@/test/notificationsHelper' +import { buildNotificationsStateTracker } from '@/test/notificationsHelper' import { getStreamActivities } from '@/test/speckle-helpers/activityStreamHelper' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { noop } from 'lodash-es' diff --git a/packages/server/modules/accessrequests/tests/streamAccessRequests.spec.ts b/packages/server/modules/accessrequests/tests/streamAccessRequests.spec.ts index 5638ec292..d3f943eac 100644 --- a/packages/server/modules/accessrequests/tests/streamAccessRequests.spec.ts +++ b/packages/server/modules/accessrequests/tests/streamAccessRequests.spec.ts @@ -41,7 +41,8 @@ import { import { NotificationType } from '@/modules/notifications/helpers/types' import { authorizeResolver } from '@/modules/shared' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { createStreamAccessRequest, getFullStreamAccessRequest, @@ -50,15 +51,16 @@ import { useStreamAccessRequest } from '@/test/graphql/accessRequests' import { StreamRole } from '@/modules/core/graph/generated/graphql' -import { createAuthedTestContext, ServerAndContext } from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext } from '@/test/graphqlHelper' import { truncateTables } from '@/test/hooks' -import { - buildNotificationsStateTracker, - NotificationsStateManager -} from '@/test/notificationsHelper' +import type { NotificationsStateManager } from '@/test/notificationsHelper' +import { buildNotificationsStateTracker } from '@/test/notificationsHelper' import { getStreamActivities } from '@/test/speckle-helpers/activityStreamHelper' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { noop } from 'lodash-es' diff --git a/packages/server/modules/activitystream/domain/operations.ts b/packages/server/modules/activitystream/domain/operations.ts index 2692483fe..d69046fed 100644 --- a/packages/server/modules/activitystream/domain/operations.ts +++ b/packages/server/modules/activitystream/domain/operations.ts @@ -1,4 +1,4 @@ -import { +import type { Activity, ActivitySummary, CommentCreatedActivityInput, @@ -7,12 +7,12 @@ import { ResourceType, StreamActionType } from '@/modules/activitystream/domain/types' -import { +import type { StreamActivityRecord, StreamScopeActivity } from '@/modules/activitystream/helpers/types' -import { CommentRecord } from '@/modules/comments/helpers/types' -import { +import type { CommentRecord } from '@/modules/comments/helpers/types' +import type { BranchDeleteInput, BranchUpdateInput, CommitCreateInput, @@ -24,13 +24,13 @@ import { UpdateModelInput, UpdateVersionInput } from '@/modules/core/graph/generated/graphql' -import { +import type { BranchRecord, CommitRecord, StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' export type GetUserStreamActivity = ( streamId: string, diff --git a/packages/server/modules/activitystream/domain/types.ts b/packages/server/modules/activitystream/domain/types.ts index d1de6dc51..8d3412e78 100644 --- a/packages/server/modules/activitystream/domain/types.ts +++ b/packages/server/modules/activitystream/domain/types.ts @@ -1,16 +1,16 @@ -import { +import type { StreamActionTypes, StreamResourceTypes, StreamScopeActivity } from '@/modules/activitystream/helpers/types' -import { ViewerResourceItem } from '@/modules/comments/domain/types' -import { +import type { ViewerResourceItem } from '@/modules/comments/domain/types' +import type { CommentCreateInput, CreateCommentInput, CreateCommentReplyInput, ReplyCreateInput } from '@/modules/core/graph/generated/graphql' -import { StreamRecord, UserRecord } from '@/modules/core/helpers/types' +import type { StreamRecord, UserRecord } from '@/modules/core/helpers/types' import z from 'zod' // Activity diff --git a/packages/server/modules/activitystream/events/accessRequestListeners.ts b/packages/server/modules/activitystream/events/accessRequestListeners.ts index 921139106..64da6e623 100644 --- a/packages/server/modules/activitystream/events/accessRequestListeners.ts +++ b/packages/server/modules/activitystream/events/accessRequestListeners.ts @@ -1,5 +1,5 @@ -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' -import { +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { AddStreamAccessRequestDeclinedActivity, AddStreamAccessRequestedActivity, SaveStreamActivity diff --git a/packages/server/modules/activitystream/events/branchListeners.ts b/packages/server/modules/activitystream/events/branchListeners.ts index 537688ad5..ff7530c6f 100644 --- a/packages/server/modules/activitystream/events/branchListeners.ts +++ b/packages/server/modules/activitystream/events/branchListeners.ts @@ -1,4 +1,4 @@ -import { +import type { AddBranchCreatedActivity, AddBranchDeletedActivity, AddBranchUpdatedActivity, @@ -10,7 +10,7 @@ import { } from '@/modules/activitystream/helpers/types' import { ModelEvents } from '@/modules/core/domain/branches/events' import { isBranchDeleteInput, isBranchUpdateInput } from '@/modules/core/helpers/branch' -import { EventBusListen } from '@/modules/shared/services/eventBus' +import type { EventBusListen } from '@/modules/shared/services/eventBus' /** * Save "branch created" activity diff --git a/packages/server/modules/activitystream/events/commentListeners.ts b/packages/server/modules/activitystream/events/commentListeners.ts index 31ed82cec..1a2571cce 100644 --- a/packages/server/modules/activitystream/events/commentListeners.ts +++ b/packages/server/modules/activitystream/events/commentListeners.ts @@ -1,10 +1,10 @@ -import { +import type { AddThreadCreatedActivity, AddReplyAddedActivity, SaveStreamActivity, AddCommentArchivedActivity } from '@/modules/activitystream/domain/operations' -import { +import type { CommentCreatedActivityInput, ReplyCreatedActivityInput } from '@/modules/activitystream/domain/types' @@ -12,11 +12,12 @@ import { StreamActionTypes, StreamResourceTypes } from '@/modules/activitystream/helpers/types' -import { CommentEvents, CommentEventsPayloads } from '@/modules/comments/domain/events' -import { ReplyCreateInput } from '@/modules/core/graph/generated/graphql' -import { EventBusListen } from '@/modules/shared/services/eventBus' +import type { CommentEventsPayloads } from '@/modules/comments/domain/events' +import { CommentEvents } from '@/modules/comments/domain/events' +import type { ReplyCreateInput } from '@/modules/core/graph/generated/graphql' +import type { EventBusListen } from '@/modules/shared/services/eventBus' import { has } from 'lodash-es' -import { OverrideProperties } from 'type-fest' +import type { OverrideProperties } from 'type-fest' const addThreadCreatedActivityFactory = ({ diff --git a/packages/server/modules/activitystream/events/commitListeners.ts b/packages/server/modules/activitystream/events/commitListeners.ts index 6bd25752a..d19264fe0 100644 --- a/packages/server/modules/activitystream/events/commitListeners.ts +++ b/packages/server/modules/activitystream/events/commitListeners.ts @@ -1,4 +1,4 @@ -import { +import type { AddCommitCreatedActivity, AddCommitDeletedActivity, AddCommitUpdatedActivity, @@ -9,10 +9,10 @@ import { StreamResourceTypes } from '@/modules/activitystream/helpers/types' import { VersionEvents } from '@/modules/core/domain/commits/events' -import { CommitCreateInput } from '@/modules/core/graph/generated/graphql' -import { CommitRecord } from '@/modules/core/helpers/types' -import { EventBusListen } from '@/modules/shared/services/eventBus' -import { MaybeNullOrUndefined } from '@speckle/shared' +import type { CommitCreateInput } from '@/modules/core/graph/generated/graphql' +import type { CommitRecord } from '@/modules/core/helpers/types' +import type { EventBusListen } from '@/modules/shared/services/eventBus' +import type { MaybeNullOrUndefined } from '@speckle/shared' /** * Save "new commit created" activity item diff --git a/packages/server/modules/activitystream/events/gatekeeperListeners.ts b/packages/server/modules/activitystream/events/gatekeeperListeners.ts index e051700c5..e14ea8586 100644 --- a/packages/server/modules/activitystream/events/gatekeeperListeners.ts +++ b/packages/server/modules/activitystream/events/gatekeeperListeners.ts @@ -1,6 +1,6 @@ -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' -import { SaveActivity } from '@/modules/activitystream/domain/operations' +import type { SaveActivity } from '@/modules/activitystream/domain/operations' const addWorkspacePlanCreatedActivityFactory = ({ saveActivity }: { saveActivity: SaveActivity }) => diff --git a/packages/server/modules/activitystream/events/streamInviteListeners.ts b/packages/server/modules/activitystream/events/streamInviteListeners.ts index fb2d35741..62c560116 100644 --- a/packages/server/modules/activitystream/events/streamInviteListeners.ts +++ b/packages/server/modules/activitystream/events/streamInviteListeners.ts @@ -1,4 +1,4 @@ -import { SaveStreamActivity } from '@/modules/activitystream/domain/operations' +import type { SaveStreamActivity } from '@/modules/activitystream/domain/operations' import { StreamActionTypes, StreamResourceTypes @@ -9,8 +9,8 @@ import { getResourceTypeRole, resolveTarget } from '@/modules/serverinvites/helpers/core' -import { GetProjectInviteProject } from '@/modules/serverinvites/services/operations' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { GetProjectInviteProject } from '@/modules/serverinvites/services/operations' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' import { Roles } from '@speckle/shared' /** diff --git a/packages/server/modules/activitystream/events/streamListeners.ts b/packages/server/modules/activitystream/events/streamListeners.ts index b9124eafd..670c9f58b 100644 --- a/packages/server/modules/activitystream/events/streamListeners.ts +++ b/packages/server/modules/activitystream/events/streamListeners.ts @@ -1,4 +1,4 @@ -import { +import type { AddStreamDeletedActivity, AddStreamUpdatedActivity, SaveActivity, @@ -9,12 +9,12 @@ import { StreamResourceTypes } from '@/modules/activitystream/helpers/types' import { ProjectEvents } from '@/modules/core/domain/projects/events' -import { +import type { ProjectCreateInput, StreamCreateInput } from '@/modules/core/graph/generated/graphql' -import { StreamRecord } from '@/modules/core/helpers/types' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { StreamRecord } from '@/modules/core/helpers/types' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' // Activity diff --git a/packages/server/modules/activitystream/events/userListeners.ts b/packages/server/modules/activitystream/events/userListeners.ts index e9f2ae6e7..bad26e8d8 100644 --- a/packages/server/modules/activitystream/events/userListeners.ts +++ b/packages/server/modules/activitystream/events/userListeners.ts @@ -1,11 +1,11 @@ -import { UserUpdateInput } from '@/modules/core/graph/generated/graphql' -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserUpdateInput } from '@/modules/core/graph/generated/graphql' +import type { UserRecord } from '@/modules/core/helpers/types' import { StreamActionTypes, StreamResourceTypes } from '@/modules/activitystream/helpers/types' -import { SaveStreamActivity } from '@/modules/activitystream/domain/operations' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { SaveStreamActivity } from '@/modules/activitystream/domain/operations' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' import { UserEvents } from '@/modules/core/domain/users/events' const addUserCreatedActivityFactory = diff --git a/packages/server/modules/activitystream/events/workspaceListeners.ts b/packages/server/modules/activitystream/events/workspaceListeners.ts index 2dcc88eba..b63dcc521 100644 --- a/packages/server/modules/activitystream/events/workspaceListeners.ts +++ b/packages/server/modules/activitystream/events/workspaceListeners.ts @@ -1,5 +1,5 @@ -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' -import { SaveActivity } from '@/modules/activitystream/domain/operations' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { SaveActivity } from '@/modules/activitystream/domain/operations' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' const addWorkspaceSeatUpdatedActivityFactory = diff --git a/packages/server/modules/activitystream/graph/resolvers/activity.ts b/packages/server/modules/activitystream/graph/resolvers/activity.ts index 3b2191146..2ff32de40 100644 --- a/packages/server/modules/activitystream/graph/resolvers/activity.ts +++ b/packages/server/modules/activitystream/graph/resolvers/activity.ts @@ -10,9 +10,9 @@ import { getUserActivityFactory, getUserTimelineFactory } from '@/modules/activitystream/repositories' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { InvalidActionTypeError } from '@/modules/activitystream/errors/activityStream' -import { StreamActionType } from '@/modules/activitystream/domain/types' +import type { StreamActionType } from '@/modules/activitystream/domain/types' import { md5 } from '@/modules/shared/helpers/cryptoHelper' type ActivityPaginatedArgs = { diff --git a/packages/server/modules/activitystream/helpers/graphTypes.ts b/packages/server/modules/activitystream/helpers/graphTypes.ts index 55fc47f5f..17c718f04 100644 --- a/packages/server/modules/activitystream/helpers/graphTypes.ts +++ b/packages/server/modules/activitystream/helpers/graphTypes.ts @@ -1,5 +1,5 @@ -import { StreamActivityRecord } from '@/modules/activitystream/helpers/types' -import { ActivityCollection } from '@/modules/core/graph/generated/graphql' +import type { StreamActivityRecord } from '@/modules/activitystream/helpers/types' +import type { ActivityCollection } from '@/modules/core/graph/generated/graphql' export type ActivityCollectionGraphQLReturn = Omit & { items: StreamActivityRecord[] diff --git a/packages/server/modules/activitystream/helpers/types.ts b/packages/server/modules/activitystream/helpers/types.ts index a633e0fdd..1035865fc 100644 --- a/packages/server/modules/activitystream/helpers/types.ts +++ b/packages/server/modules/activitystream/helpers/types.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' export type StreamActivityRecord = { streamId: Nullable diff --git a/packages/server/modules/activitystream/index.ts b/packages/server/modules/activitystream/index.ts index a077ce861..d66ebfbff 100644 --- a/packages/server/modules/activitystream/index.ts +++ b/packages/server/modules/activitystream/index.ts @@ -1,9 +1,10 @@ -import cron from 'node-cron' -import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type cron from 'node-cron' +import type { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { publishNotification } from '@/modules/notifications/services/publication' import { moduleLogger } from '@/observability/logging' import { weeklyEmailDigestEnabled } from '@/modules/shared/helpers/envHelper' -import { EventBus, getEventBus } from '@/modules/shared/services/eventBus' +import type { EventBus } from '@/modules/shared/services/eventBus' +import { getEventBus } from '@/modules/shared/services/eventBus' import { sendActivityNotificationsFactory } from '@/modules/activitystream/services/summary' import { getActiveUserStreamsFactory, @@ -12,13 +13,13 @@ import { } from '@/modules/activitystream/repositories' import { db } from '@/db/knex' import { getStreamFactory } from '@/modules/core/repositories/streams' -import { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' +import type { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' import { scheduleExecutionFactory } from '@/modules/core/services/taskScheduler' import { acquireTaskLockFactory, releaseTaskLockFactory } from '@/modules/core/repositories/scheduledTasks' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { reportUserActivityFactory } from '@/modules/activitystream/events/userListeners' import { reportAccessRequestActivityFactory } from '@/modules/activitystream/events/accessRequestListeners' import { reportBranchActivityFactory } from '@/modules/activitystream/events/branchListeners' diff --git a/packages/server/modules/activitystream/migrations/20250613121055_add_index_on_actionType_to_stream_activity.ts b/packages/server/modules/activitystream/migrations/20250613121055_add_index_on_actionType_to_stream_activity.ts index 90eabf779..96fba508c 100644 --- a/packages/server/modules/activitystream/migrations/20250613121055_add_index_on_actionType_to_stream_activity.ts +++ b/packages/server/modules/activitystream/migrations/20250613121055_add_index_on_actionType_to_stream_activity.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'stream_activity' diff --git a/packages/server/modules/activitystream/migrations/20250625095012_activity.ts b/packages/server/modules/activitystream/migrations/20250625095012_activity.ts index ec647220b..4d46cbb9b 100644 --- a/packages/server/modules/activitystream/migrations/20250625095012_activity.ts +++ b/packages/server/modules/activitystream/migrations/20250625095012_activity.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('activity', (table) => { diff --git a/packages/server/modules/activitystream/repositories/index.ts b/packages/server/modules/activitystream/repositories/index.ts index 04c7cd7eb..6f9d326b1 100644 --- a/packages/server/modules/activitystream/repositories/index.ts +++ b/packages/server/modules/activitystream/repositories/index.ts @@ -1,4 +1,4 @@ -import { +import type { GetActiveUserStreams, GetActivities, GetActivityCountByResourceId, @@ -12,7 +12,7 @@ import { SaveActivity, SaveStreamActivity } from '@/modules/activitystream/domain/operations' -import { +import type { StreamActivityRecord, StreamScopeActivity } from '@/modules/activitystream/helpers/types' @@ -22,19 +22,19 @@ import { StreamActivity } from '@/modules/core/dbSchema' import { Roles } from '@/modules/core/helpers/mainConstants' -import { StreamAclRecord } from '@/modules/core/helpers/types' +import type { StreamAclRecord } from '@/modules/core/helpers/types' import { createWebhookEventFactory, getStreamWebhooksFactory } from '@/modules/webhooks/repositories/webhooks' import { dispatchStreamEventFactory } from '@/modules/webhooks/services/webhooks' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import cryptoRandomString from 'crypto-random-string' -import { Activity } from '@/modules/activitystream/domain/types' +import type { Activity } from '@/modules/activitystream/domain/types' const tables = { streamActivity: (db: Knex) => diff --git a/packages/server/modules/activitystream/services/backfillActivity.ts b/packages/server/modules/activitystream/services/backfillActivity.ts index 634f89651..d324587e1 100644 --- a/packages/server/modules/activitystream/services/backfillActivity.ts +++ b/packages/server/modules/activitystream/services/backfillActivity.ts @@ -1,9 +1,9 @@ import { Activity as ActivityModel, StreamAcl } from '@/modules/core/dbSchema' -import { StreamAclRecord } from '@/modules/core/helpers/types' -import { SubscriptionData } from '@/modules/gatekeeper/domain/billing' -import { WorkspaceSeat } from '@/modules/workspacesCore/domain/types' +import type { StreamAclRecord } from '@/modules/core/helpers/types' +import type { SubscriptionData } from '@/modules/gatekeeper/domain/billing' +import type { WorkspaceSeat } from '@/modules/workspacesCore/domain/types' import { WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { +import type { StreamRoles, WorkspacePlan, WorkspacePlanBillingIntervals, @@ -11,10 +11,10 @@ import { WorkspacePlanStatuses } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { MaxBackfillIterationsReached } from '@/modules/activitystream/errors/activityStream' -import { Logger } from '@/observability/logging' -import { Activity } from '@/modules/activitystream/domain/types' +import type { Logger } from '@/observability/logging' +import type { Activity } from '@/modules/activitystream/domain/types' export const getUntrackedWorkspaceSeatsFactory = ({ db }: { db: Knex }) => diff --git a/packages/server/modules/activitystream/services/summary.ts b/packages/server/modules/activitystream/services/summary.ts index 15d6270ca..ee0cd01aa 100644 --- a/packages/server/modules/activitystream/services/summary.ts +++ b/packages/server/modules/activitystream/services/summary.ts @@ -1,14 +1,12 @@ -import { - NotificationPublisher, - NotificationType -} from '@/modules/notifications/helpers/types' -import { +import type { NotificationPublisher } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' +import type { CreateActivitySummary, GetActiveUserStreams, GetUserStreamActivity } from '@/modules/activitystream/domain/operations' -import { GetStream } from '@/modules/core/domain/streams/operations' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' export const createActivitySummaryFactory = ({ diff --git a/packages/server/modules/activitystream/tests/integration/activity.graph.spec.ts b/packages/server/modules/activitystream/tests/integration/activity.graph.spec.ts index 1cf74a434..c2236702a 100644 --- a/packages/server/modules/activitystream/tests/integration/activity.graph.spec.ts +++ b/packages/server/modules/activitystream/tests/integration/activity.graph.spec.ts @@ -50,8 +50,10 @@ import { createObjectFactory } from '@/modules/core/services/objects/management' import { storeSingleObjectIfNotFoundFactory } from '@/modules/core/repositories/objects' import { getEventBus } from '@/modules/shared/services/eventBus' import type http from 'node:http' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' import { getActivitiesFactory } from '@/modules/activitystream/repositories/index' const getUser = getUserFactory({ db }) diff --git a/packages/server/modules/activitystream/tests/integration/activitySummary.spec.ts b/packages/server/modules/activitystream/tests/integration/activitySummary.spec.ts index c9ca40ae9..4c5ba261a 100644 --- a/packages/server/modules/activitystream/tests/integration/activitySummary.spec.ts +++ b/packages/server/modules/activitystream/tests/integration/activitySummary.spec.ts @@ -1,5 +1,6 @@ import { truncateTables } from '@/test/hooks' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { StreamActivity, Users } from '@/modules/core/dbSchema' import { createActivitySummaryFactory, @@ -10,7 +11,7 @@ import { StreamActionTypes, StreamResourceTypes } from '@/modules/activitystream/helpers/types' -import { +import type { ActivityDigestMessage, NotificationType, NotificationTypeMessageMap diff --git a/packages/server/modules/activitystream/tests/integration/backfillActivity.spec.ts b/packages/server/modules/activitystream/tests/integration/backfillActivity.spec.ts index 9898d4e12..1305559aa 100644 --- a/packages/server/modules/activitystream/tests/integration/backfillActivity.spec.ts +++ b/packages/server/modules/activitystream/tests/integration/backfillActivity.spec.ts @@ -14,11 +14,12 @@ import { } from '@/modules/activitystream/services/backfillActivity' import { expect } from 'chai' import { WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { WorkspaceSeat, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceSeat } from '@/modules/workspacesCore/domain/types' +import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { saveActivityFactory } from '@/modules/activitystream/repositories' import { buildTestWorkspaceSubscription } from '@/modules/gatekeeper/tests/helpers/workspacePlan' -import { SubscriptionData } from '@/modules/gatekeeper/domain/billing' -import { StreamAclRecord } from '@/modules/core/helpers/types' +import type { SubscriptionData } from '@/modules/gatekeeper/domain/billing' +import type { StreamAclRecord } from '@/modules/core/helpers/types' import { StreamAcl } from '@/modules/core/dbSchema' import { Roles } from '@speckle/shared' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/apiexplorer/index.ts b/packages/server/modules/apiexplorer/index.ts index 69404c70d..42e614ab8 100644 --- a/packages/server/modules/apiexplorer/index.ts +++ b/packages/server/modules/apiexplorer/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { moduleLogger } from '@/observability/logging' import { readFile } from 'fs/promises' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/auth/defaultApps.ts b/packages/server/modules/auth/defaultApps.ts index 2fee196b4..73f583599 100644 --- a/packages/server/modules/auth/defaultApps.ts +++ b/packages/server/modules/auth/defaultApps.ts @@ -4,8 +4,8 @@ import { getServerOrigin, getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { ServerScope } from '@speckle/shared' -import { Merge } from 'type-fest' +import type { ServerScope } from '@speckle/shared' +import type { Merge } from 'type-fest' const { FF_WORKSPACES_MODULE_ENABLED, FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/auth/domain/operations.ts b/packages/server/modules/auth/domain/operations.ts index 90e32561e..6c8f85546 100644 --- a/packages/server/modules/auth/domain/operations.ts +++ b/packages/server/modules/auth/domain/operations.ts @@ -1,20 +1,20 @@ -import { DefaultAppWithUnwrappedScopes } from '@/modules/auth/defaultApps' -import { +import type { DefaultAppWithUnwrappedScopes } from '@/modules/auth/defaultApps' +import type { FullServerApp, ServerAppListItem, UserServerApp } from '@/modules/auth/domain/types' -import { ScopeRecord } from '@/modules/auth/helpers/types' -import { +import type { ScopeRecord } from '@/modules/auth/helpers/types' +import type { AuthorizationCodeRecord, RefreshTokenRecord } from '@/modules/auth/repositories' -import { ServerAppRecord } from '@/modules/core/helpers/types' -import { MarkNullableOptional } from '@/modules/shared/helpers/typeHelper' -import { Optional, ServerScope } from '@speckle/shared' -import { SetOptional } from 'type-fest' +import type { ServerAppRecord } from '@/modules/core/helpers/types' +import type { MarkNullableOptional } from '@/modules/shared/helpers/typeHelper' +import type { Optional, ServerScope } from '@speckle/shared' +import type { SetOptional } from 'type-fest' import type { Handler } from 'express' -import { Strategy, AuthenticateOptions } from 'passport' +import type { Strategy, AuthenticateOptions } from 'passport' export type GetApp = (params: { id: string }) => Promise diff --git a/packages/server/modules/auth/domain/types.ts b/packages/server/modules/auth/domain/types.ts index 0d6adccab..fdcb0d055 100644 --- a/packages/server/modules/auth/domain/types.ts +++ b/packages/server/modules/auth/domain/types.ts @@ -1,5 +1,5 @@ -import { ScopeRecord } from '@/modules/auth/helpers/types' -import { ServerAppRecord, UserRecord } from '@/modules/core/helpers/types' +import type { ScopeRecord } from '@/modules/auth/helpers/types' +import type { ServerAppRecord, UserRecord } from '@/modules/core/helpers/types' export type UserServerApp = ServerAppRecord & { author: Pick | null diff --git a/packages/server/modules/auth/graph/resolvers/apps.ts b/packages/server/modules/auth/graph/resolvers/apps.ts index e1a803c58..744b86be6 100644 --- a/packages/server/modules/auth/graph/resolvers/apps.ts +++ b/packages/server/modules/auth/graph/resolvers/apps.ts @@ -11,7 +11,7 @@ import { revokeExistingAppCredentialsForUserFactory } from '@/modules/auth/repositories/apps' import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { withOperationLogging } from '@/observability/domain/businessLogging' const getApp = getAppFactory({ db }) diff --git a/packages/server/modules/auth/graph/resolvers/auth.ts b/packages/server/modules/auth/graph/resolvers/auth.ts index b6a18a09d..07ec4039c 100644 --- a/packages/server/modules/auth/graph/resolvers/auth.ts +++ b/packages/server/modules/auth/graph/resolvers/auth.ts @@ -1,5 +1,5 @@ import { getAuthStrategies } from '@/modules/auth' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' export default { ServerInfo: { diff --git a/packages/server/modules/auth/helpers/graphTypes.ts b/packages/server/modules/auth/helpers/graphTypes.ts index 09e9d3cf5..c647fc058 100644 --- a/packages/server/modules/auth/helpers/graphTypes.ts +++ b/packages/server/modules/auth/helpers/graphTypes.ts @@ -1,4 +1,4 @@ -import { +import type { ServerAppListItem, FullServerApp, UserServerApp diff --git a/packages/server/modules/auth/helpers/types.ts b/packages/server/modules/auth/helpers/types.ts index 10f084848..bb8255727 100644 --- a/packages/server/modules/auth/helpers/types.ts +++ b/packages/server/modules/auth/helpers/types.ts @@ -1,4 +1,4 @@ -import { MaybeAsync, ServerScope } from '@speckle/shared' +import type { MaybeAsync, ServerScope } from '@speckle/shared' import type { Express, RequestHandler } from 'express' import type { Session, SessionData } from 'express-session' import type { TokenSet, UserinfoResponse } from 'openid-client' diff --git a/packages/server/modules/auth/index.ts b/packages/server/modules/auth/index.ts index cd39db4dc..4cc96a2cf 100644 --- a/packages/server/modules/auth/index.ts +++ b/packages/server/modules/auth/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scopes' import { moduleLogger } from '@/observability/logging' @@ -25,7 +25,7 @@ import { } from '@/modules/serverinvites/repositories/serverInvites' import authRestApi from '@/modules/auth/rest/index' import authScopes from '@/modules/auth/scopes' -import { AuthStrategyMetadata } from '@/modules/auth/helpers/types' +import type { AuthStrategyMetadata } from '@/modules/auth/helpers/types' import azureAdStrategyBuilderFactory from '@/modules/auth/strategies/azureAd' import googleStrategyBuilderFactory from '@/modules/auth/strategies/google' import localStrategyBuilderFactory from '@/modules/auth/strategies/local' diff --git a/packages/server/modules/auth/middleware.ts b/packages/server/modules/auth/middleware.ts index 28f24f6c8..a9608a4c8 100644 --- a/packages/server/modules/auth/middleware.ts +++ b/packages/server/modules/auth/middleware.ts @@ -9,12 +9,12 @@ import { getSessionSecret } from '@/modules/shared/helpers/envHelper' import { isString, noop } from 'lodash-es' -import { CreateAuthorizationCode } from '@/modules/auth/domain/operations' +import type { CreateAuthorizationCode } from '@/modules/auth/domain/operations' import { ensureError, TIME_MS } from '@speckle/shared' -import { LegacyGetUser } from '@/modules/core/domain/users/operations' +import type { LegacyGetUser } from '@/modules/core/domain/users/operations' import { ForbiddenError } from '@/modules/shared/errors' import { UserInputError } from '@/modules/core/errors/userinput' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { UserEvents } from '@/modules/core/domain/users/events' export const sessionMiddlewareFactory = (): RequestHandler => { diff --git a/packages/server/modules/auth/repositories/apps.ts b/packages/server/modules/auth/repositories/apps.ts index 81465aa6a..7d1cf5d94 100644 --- a/packages/server/modules/auth/repositories/apps.ts +++ b/packages/server/modules/auth/repositories/apps.ts @@ -1,6 +1,6 @@ import { logger, moduleLogger } from '@/observability/logging' import { getDefaultApp } from '@/modules/auth/defaultApps' -import { +import type { CreateApp, CreateAuthorizationCode, CreateRefreshToken, @@ -21,13 +21,13 @@ import { UpdateApp, UpdateDefaultApp } from '@/modules/auth/domain/operations' -import { +import type { ScopeRecord, ServerAppsScopesRecord, TokenScopeRecord, UserServerAppTokenRecord } from '@/modules/auth/helpers/types' -import { +import type { ApiTokenRecord, AuthorizationCodeRecord, RefreshTokenRecord @@ -43,9 +43,9 @@ import { Users, UserServerAppTokens } from '@/modules/core/dbSchema' -import { ServerAppRecord, UserRecord } from '@/modules/core/helpers/types' +import type { ServerAppRecord, UserRecord } from '@/modules/core/helpers/types' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { difference, omit } from 'lodash-es' import { AppCreateError } from '@/modules/auth/errors' import { UserInputError } from '@/modules/core/errors/userinput' diff --git a/packages/server/modules/auth/repositories/index.ts b/packages/server/modules/auth/repositories/index.ts index 185028718..6437283d7 100644 --- a/packages/server/modules/auth/repositories/index.ts +++ b/packages/server/modules/auth/repositories/index.ts @@ -6,12 +6,12 @@ import { knex } from '@/modules/core/dbSchema' import { InvalidArgumentError } from '@/modules/shared/errors' -import { Nullable } from '@/modules/shared/helpers/typeHelper' -import { ServerAppsScopesRecord } from '@/modules/auth/helpers/types' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { ServerAppsScopesRecord } from '@/modules/auth/helpers/types' import { groupBy, mapValues } from 'lodash-es' -import { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' -import { Knex } from 'knex' -import { +import type { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { Knex } from 'knex' +import type { DeleteExistingUserAuthTokens, GetAppScopes } from '@/modules/auth/domain/operations' diff --git a/packages/server/modules/auth/rest/index.ts b/packages/server/modules/auth/rest/index.ts index c183f95b2..a350c6089 100644 --- a/packages/server/modules/auth/rest/index.ts +++ b/packages/server/modules/auth/rest/index.ts @@ -5,7 +5,8 @@ import { } from '@/modules/core/services/tokens' import { validateScopes } from '@/modules/shared' import { InvalidAccessCodeRequestError } from '@/modules/auth/errors' -import { ensureError, Optional, Scopes } from '@speckle/shared' +import type { Optional } from '@speckle/shared' +import { ensureError, Scopes } from '@speckle/shared' import { BadRequestError, ForbiddenError } from '@/modules/shared/errors' import { getAppFactory, @@ -22,7 +23,7 @@ import { createAppTokenFromAccessCodeFactory, refreshAppTokenFactory } from '@/modules/auth/services/serverApps' -import { Express } from 'express' +import type { Express } from 'express' import { getApiTokenByIdFactory, getTokenResourceAccessDefinitionsByIdFactory, diff --git a/packages/server/modules/auth/services/mailchimp.ts b/packages/server/modules/auth/services/mailchimp.ts index 347c64ae6..527fee58e 100644 --- a/packages/server/modules/auth/services/mailchimp.ts +++ b/packages/server/modules/auth/services/mailchimp.ts @@ -2,9 +2,9 @@ import mailchimp from '@mailchimp/mailchimp_marketing' import { md5 } from '@/modules/shared/helpers/cryptoHelper' import { getMailchimpConfig } from '@/modules/shared/helpers/envHelper' -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/types' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' -import { OnboardingCompletionInput } from '@/modules/core/graph/generated/graphql' +import type { OnboardingCompletionInput } from '@/modules/core/graph/generated/graphql' let mailchimpInitialized = false diff --git a/packages/server/modules/auth/services/serverApps.ts b/packages/server/modules/auth/services/serverApps.ts index eaefcde75..76f717614 100644 --- a/packages/server/modules/auth/services/serverApps.ts +++ b/packages/server/modules/auth/services/serverApps.ts @@ -1,5 +1,5 @@ import { getDefaultApps } from '@/modules/auth/defaultApps' -import { +import type { CreateAppTokenFromAccessCode, CreateRefreshToken, DeleteAuthorizationCode, @@ -12,10 +12,10 @@ import { RevokeRefreshToken, UpdateDefaultApp } from '@/modules/auth/domain/operations' -import { ScopeRecord } from '@/modules/auth/helpers/types' -import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' -import { createBareToken } from '@/modules/core/services/tokens' -import { ServerScope } from '@speckle/shared' +import type { ScopeRecord } from '@/modules/auth/helpers/types' +import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' +import type { createBareToken } from '@/modules/core/services/tokens' +import type { ServerScope } from '@speckle/shared' import bcrypt from 'bcrypt' import { AccessCodeNotFoundError, diff --git a/packages/server/modules/auth/strategies.ts b/packages/server/modules/auth/strategies.ts index 60ad4b6c6..c4697103f 100644 --- a/packages/server/modules/auth/strategies.ts +++ b/packages/server/modules/auth/strategies.ts @@ -1,18 +1,18 @@ import passport from 'passport' import type { Express } from 'express' -import { +import type { AuthStrategyBuilder, AuthStrategyMetadata, AuthStrategyPassportUser } from '@/modules/auth/helpers/types' -import { CreateAuthorizationCode } from '@/modules/auth/domain/operations' +import type { CreateAuthorizationCode } from '@/modules/auth/domain/operations' import { finalizeAuthMiddlewareFactory, moveAuthParamsToSessionMiddlewareFactory, sessionMiddlewareFactory } from '@/modules/auth/middleware' -import { LegacyGetUser } from '@/modules/core/domain/users/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { LegacyGetUser } from '@/modules/core/domain/users/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' const setupStrategiesFactory = (deps: { diff --git a/packages/server/modules/auth/strategies/azureAd.ts b/packages/server/modules/auth/strategies/azureAd.ts index 2af3d2ab1..7bf3121ad 100644 --- a/packages/server/modules/auth/strategies/azureAd.ts +++ b/packages/server/modules/auth/strategies/azureAd.ts @@ -1,6 +1,7 @@ /* istanbul ignore file */ import passport from 'passport' -import { OIDCStrategy, IProfile, VerifyCallback } from 'passport-azure-ad' +import type { IProfile, VerifyCallback } from 'passport-azure-ad' +import { OIDCStrategy } from 'passport-azure-ad' import { UserInputError, @@ -9,7 +10,7 @@ import { import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core' -import { AuthStrategyBuilder } from '@/modules/auth/helpers/types' +import type { AuthStrategyBuilder } from '@/modules/auth/helpers/types' import { getAzureAdClientId, getAzureAdClientSecret, @@ -18,19 +19,20 @@ import { getServerOrigin } from '@/modules/shared/helpers/envHelper' import type { Request } from 'express' -import { ensureError, Optional } from '@speckle/shared' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { FinalizeInvitedServerRegistration, ResolveAuthRedirectPath, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' -import { +import type { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' +import type { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { EnvironmentResourceError } from '@/modules/shared/errors' import { InviteNotFoundError } from '@/modules/serverinvites/errors' diff --git a/packages/server/modules/auth/strategies/github.ts b/packages/server/modules/auth/strategies/github.ts index 6d89edc26..f736ac356 100644 --- a/packages/server/modules/auth/strategies/github.ts +++ b/packages/server/modules/auth/strategies/github.ts @@ -10,7 +10,10 @@ import { import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core' -import { AuthStrategyBuilder, AuthStrategyMetadata } from '@/modules/auth/helpers/types' +import type { + AuthStrategyBuilder, + AuthStrategyMetadata +} from '@/modules/auth/helpers/types' import { getGithubClientId, getGithubClientSecret, @@ -18,23 +21,24 @@ import { } from '@/modules/shared/helpers/envHelper' import type { Request } from 'express' import { get } from 'lodash-es' -import { ensureError, Optional } from '@speckle/shared' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { FinalizeInvitedServerRegistration, ResolveAuthRedirectPath, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' -import { +import type { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' +import type { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' import crs from 'crypto-random-string' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { EnvironmentResourceError } from '@/modules/shared/errors' import { InviteNotFoundError } from '@/modules/serverinvites/errors' -import { ExpectedAuthFailure } from '@/modules/auth/domain/const' +import type { ExpectedAuthFailure } from '@/modules/auth/domain/const' const githubStrategyBuilderFactory = (deps: { diff --git a/packages/server/modules/auth/strategies/google.ts b/packages/server/modules/auth/strategies/google.ts index f4654a5f5..747224bce 100644 --- a/packages/server/modules/auth/strategies/google.ts +++ b/packages/server/modules/auth/strategies/google.ts @@ -9,24 +9,28 @@ import { import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core' -import { AuthStrategyMetadata, AuthStrategyBuilder } from '@/modules/auth/helpers/types' +import type { + AuthStrategyMetadata, + AuthStrategyBuilder +} from '@/modules/auth/helpers/types' import { getGoogleClientId, getGoogleClientSecret } from '@/modules/shared/helpers/envHelper' -import { ensureError, Optional } from '@speckle/shared' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { FinalizeInvitedServerRegistration, ResolveAuthRedirectPath, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' -import { +import type { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' +import type { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { EnvironmentResourceError } from '@/modules/shared/errors' import { ExpectedAuthFailure } from '@/modules/auth/domain/const' import { ServerNoAccessError } from '@speckle/shared/authz' diff --git a/packages/server/modules/auth/strategies/local.ts b/packages/server/modules/auth/strategies/local.ts index e5bdf8ca4..ef1adebed 100644 --- a/packages/server/modules/auth/strategies/local.ts +++ b/packages/server/modules/auth/strategies/local.ts @@ -3,20 +3,24 @@ import { getIpFromRequest } from '@/modules/shared/utils/ip' import { UserInputError } from '@/modules/core/errors/userinput' import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core' -import { AuthStrategyMetadata, AuthStrategyBuilder } from '@/modules/auth/helpers/types' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { ensureError, Optional } from '@speckle/shared' -import { +import type { + AuthStrategyMetadata, + AuthStrategyBuilder +} from '@/modules/auth/helpers/types' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { FinalizeInvitedServerRegistration, ResolveAuthRedirectPath, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { +import type { CreateValidatedUser, LegacyGetUserByEmail, ValidateUserPassword } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { UserValidationError } from '@/modules/core/errors/user' import { resolveErrorInfo, diff --git a/packages/server/modules/auth/strategies/oidc.ts b/packages/server/modules/auth/strategies/oidc.ts index 1e72ba16f..e79410e62 100644 --- a/packages/server/modules/auth/strategies/oidc.ts +++ b/packages/server/modules/auth/strategies/oidc.ts @@ -15,21 +15,22 @@ import { import { getNameFromUserInfo } from '@/modules/auth/helpers/oidc' import { ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' import { getResourceTypeRole } from '@/modules/serverinvites/helpers/core' -import { AuthStrategyBuilder } from '@/modules/auth/helpers/types' +import type { AuthStrategyBuilder } from '@/modules/auth/helpers/types' import { get } from 'lodash-es' -import { ensureError, Optional } from '@speckle/shared' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { FinalizeInvitedServerRegistration, ResolveAuthRedirectPath, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' -import { +import type { PassportAuthenticateHandlerBuilder } from '@/modules/auth/domain/operations' +import type { FindOrCreateValidatedUser, LegacyGetUserByEmail } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { EnvironmentResourceError } from '@/modules/shared/errors' import { InviteNotFoundError } from '@/modules/serverinvites/errors' diff --git a/packages/server/modules/auth/tests/apps.graphql.spec.ts b/packages/server/modules/auth/tests/apps.graphql.spec.ts index f87b3188d..8fb60c6ad 100644 --- a/packages/server/modules/auth/tests/apps.graphql.spec.ts +++ b/packages/server/modules/auth/tests/apps.graphql.spec.ts @@ -51,7 +51,7 @@ import { } from '@/modules/core/repositories/tokens' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' let sendRequest: Awaited>['sendRequest'] diff --git a/packages/server/modules/auth/tests/apps.spec.ts b/packages/server/modules/auth/tests/apps.spec.ts index 52e47efc9..c7e18a70d 100644 --- a/packages/server/modules/auth/tests/apps.spec.ts +++ b/packages/server/modules/auth/tests/apps.spec.ts @@ -67,10 +67,11 @@ import { } from '@/modules/core/repositories/tokens' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser } from '@/test/authHelper' -import { AppScopes, ensureError } from '@speckle/shared' -import { ValidTokenResult } from '@/modules/core/helpers/types' -import { +import type { BasicTestUser } from '@/test/authHelper' +import type { AppScopes } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ValidTokenResult } from '@/modules/core/helpers/types' +import type { DefaultAppIds, DefaultAppWithUnwrappedScopes } from '@/modules/auth/defaultApps' diff --git a/packages/server/modules/auth/tests/integration/registration.spec.ts b/packages/server/modules/auth/tests/integration/registration.spec.ts index fa4c5cc8d..4afe6d8d1 100644 --- a/packages/server/modules/auth/tests/integration/registration.spec.ts +++ b/packages/server/modules/auth/tests/integration/registration.spec.ts @@ -1,33 +1,35 @@ import { db } from '@/db/knex' -import { - generateRegistrationParams, - localAuthRestApi, +import type { LocalAuthRestApiHelpers, LoginParams } from '@/modules/auth/tests/helpers/registration' +import { + generateRegistrationParams, + localAuthRestApi +} from '@/modules/auth/tests/helpers/registration' import { AllScopes } from '@/modules/core/helpers/mainConstants' import { updateServerInfoFactory } from '@/modules/core/repositories/server' import { findInviteFactory } from '@/modules/serverinvites/repositories/serverInvites' import { LogicError } from '@/modules/shared/errors' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { expectToThrow, itEach } from '@/test/assertionHelper' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { - CreateProjectInviteDocument, +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { CreateProjectInviteMutationVariables, - CreateServerInviteDocument, - CreateServerInviteMutationVariables, - UseStreamInviteDocument + CreateServerInviteMutationVariables } from '@/modules/core/graph/generated/graphql' import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' + CreateProjectInviteDocument, + CreateServerInviteDocument, + UseStreamInviteDocument +} from '@/modules/core/graph/generated/graphql' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { captureCreatedInvite } from '@/test/speckle-helpers/inviteHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStreams, getUserStreamRole } from '@/test/speckle-helpers/streamHelper' diff --git a/packages/server/modules/automate/clients/executionEngine.ts b/packages/server/modules/automate/clients/executionEngine.ts index 20a05a9af..661ca1dc9 100644 --- a/packages/server/modules/automate/clients/executionEngine.ts +++ b/packages/server/modules/automate/clients/executionEngine.ts @@ -10,10 +10,10 @@ import type { FunctionSchemaType, FunctionWithVersionsSchemaType } from '@/modules/automate/helpers/executionEngine' +import type { VersionCreationTriggerType } from '@/modules/automate/helpers/types' import { type AutomationFunctionRunRecord, type BaseTriggerManifest, - VersionCreationTriggerType, isVersionCreatedTriggerManifest } from '@/modules/automate/helpers/types' import type { AuthCodePayload } from '@/modules/automate/services/authCode' diff --git a/packages/server/modules/automate/domain/events.ts b/packages/server/modules/automate/domain/events.ts index c0bda159a..d5bf99245 100644 --- a/packages/server/modules/automate/domain/events.ts +++ b/packages/server/modules/automate/domain/events.ts @@ -1,4 +1,4 @@ -import { +import type { AutomationFunctionRunRecord, AutomationRecord, AutomationRunRecord, @@ -7,7 +7,7 @@ import { BaseTriggerManifest, RunTriggerSource } from '@/modules/automate/helpers/types' -import { +import type { InsertableAutomationRun, StoredInsertableAutomationRevision } from '@/modules/automate/repositories/automations' diff --git a/packages/server/modules/automate/domain/logic.ts b/packages/server/modules/automate/domain/logic.ts index 2937b9c09..84718d091 100644 --- a/packages/server/modules/automate/domain/logic.ts +++ b/packages/server/modules/automate/domain/logic.ts @@ -1,7 +1,5 @@ -import { - AutomationRunStatus, - AutomationRunStatuses -} from '@/modules/automate/helpers/types' +import type { AutomationRunStatus } from '@/modules/automate/helpers/types' +import { AutomationRunStatuses } from '@/modules/automate/helpers/types' export const isFinished = (runStatus: AutomationRunStatus) => { const finishedStatuses: AutomationRunStatus[] = [ diff --git a/packages/server/modules/automate/domain/operations.ts b/packages/server/modules/automate/domain/operations.ts index 677332da8..2b4560ced 100644 --- a/packages/server/modules/automate/domain/operations.ts +++ b/packages/server/modules/automate/domain/operations.ts @@ -1,5 +1,5 @@ -import { InsertableAutomationFunctionRun } from '@/modules/automate/domain/types' -import { +import type { InsertableAutomationFunctionRun } from '@/modules/automate/domain/types' +import type { AutomationRevisionFunctionRecord, AutomationFunctionRunRecord, AutomationRecord, @@ -15,16 +15,20 @@ import { BaseTriggerManifest, RunTriggerSource } from '@/modules/automate/helpers/types' -import { +import type { InsertableAutomationRevision, InsertableAutomationRun } from '@/modules/automate/repositories/automations' -import { AuthCodePayload } from '@/modules/automate/services/authCode' -import { ProjectAutomationCreateInput } from '@/modules/core/graph/generated/graphql' -import { ContextResourceAccessRules } from '@/modules/core/helpers/token' -import { BranchRecord, CommitRecord, StreamRecord } from '@/modules/core/helpers/types' -import { Nullable, Optional, StreamRoles } from '@speckle/shared' -import { SetRequired } from 'type-fest' +import type { AuthCodePayload } from '@/modules/automate/services/authCode' +import type { ProjectAutomationCreateInput } from '@/modules/core/graph/generated/graphql' +import type { ContextResourceAccessRules } from '@/modules/core/helpers/token' +import type { + BranchRecord, + CommitRecord, + StreamRecord +} from '@/modules/core/helpers/types' +import type { Nullable, Optional, StreamRoles } from '@speckle/shared' +import type { SetRequired } from 'type-fest' export type StoreAutomation = ( automation: AutomationRecord diff --git a/packages/server/modules/automate/domain/types.ts b/packages/server/modules/automate/domain/types.ts index c30e18bcd..24911ce91 100644 --- a/packages/server/modules/automate/domain/types.ts +++ b/packages/server/modules/automate/domain/types.ts @@ -1,9 +1,9 @@ -import { +import type { AutomationFunctionRunRecord, AutomationRunTriggerRecord, AutomationTriggerType } from '@/modules/automate/helpers/types' -import { BranchRecord, CommitRecord } from '@/modules/core/helpers/types' +import type { BranchRecord, CommitRecord } from '@/modules/core/helpers/types' export type InsertableAutomationFunctionRun = Pick< AutomationFunctionRunRecord, diff --git a/packages/server/modules/automate/graph/mocks/automate.ts b/packages/server/modules/automate/graph/mocks/automate.ts index 2d7d9d5ff..8c90895c2 100644 --- a/packages/server/modules/automate/graph/mocks/automate.ts +++ b/packages/server/modules/automate/graph/mocks/automate.ts @@ -5,14 +5,14 @@ import { FunctionNotFoundError } from '@/modules/automate/errors/management' import { functionTemplateRepos } from '@/modules/automate/helpers/executionEngine' -import { +import type { AutomationRevisionTriggerDefinitionGraphQLReturn, AutomationRunTriggerGraphQLReturn } from '@/modules/automate/helpers/graphTypes' import { VersionCreationTriggerType } from '@/modules/automate/helpers/types' import { BranchCommits, Branches, Commits } from '@/modules/core/dbSchema' import { AutomateRunStatus } from '@/modules/core/graph/generated/graphql' -import { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { faker } from '@faker-js/faker' import { Automate, isNullOrUndefined, SourceAppNames } from '@speckle/shared' diff --git a/packages/server/modules/automate/graph/resolvers/automate.ts b/packages/server/modules/automate/graph/resolvers/automate.ts index 510a7d08b..e6411426a 100644 --- a/packages/server/modules/automate/graph/resolvers/automate.ts +++ b/packages/server/modules/automate/graph/resolvers/automate.ts @@ -11,8 +11,8 @@ import { getUserFunctionsFactory, regenerateFunctionToken } from '@/modules/automate/clients/executionEngine' +import type { GetProjectAutomationsParams } from '@/modules/automate/repositories/automations' import { - GetProjectAutomationsParams, getAutomationFactory, getAutomationRunsItemsFactory, getAutomationRunsTotalCountFactory, @@ -53,10 +53,8 @@ import { regenerateFunctionTokenFactory, updateFunctionFactory } from '@/modules/automate/services/functionManagement' -import { - Resolvers, - AutomateRunTriggerType -} from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { AutomateRunTriggerType } from '@/modules/core/graph/generated/graphql' import { getGenericRedis } from '@/modules/shared/redis/redis' import { createAutomation as clientCreateAutomation } from '@/modules/automate/clients/executionEngine' import { @@ -81,14 +79,14 @@ import { AutomationNotFoundError, FunctionNotFoundError } from '@/modules/automate/errors/management' +import type { FunctionReleaseSchemaType } from '@/modules/automate/helpers/executionEngine' import { - FunctionReleaseSchemaType, dbToGraphqlTriggerTypeMap, functionTemplateRepos } from '@/modules/automate/helpers/executionEngine' import { authorizeResolver } from '@/modules/shared' +import type { AutomationRevisionFunctionForInputRedaction } from '@/modules/automate/services/encryption' import { - AutomationRevisionFunctionForInputRedaction, getEncryptionKeyPair, getEncryptionKeyPairFor, getEncryptionPublicKey, diff --git a/packages/server/modules/automate/graph/resolvers/permissions.ts b/packages/server/modules/automate/graph/resolvers/permissions.ts index 261bb7c5b..60348bbcf 100644 --- a/packages/server/modules/automate/graph/resolvers/permissions.ts +++ b/packages/server/modules/automate/graph/resolvers/permissions.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { Authz } from '@speckle/shared' export default { diff --git a/packages/server/modules/automate/helpers/executionEngine.ts b/packages/server/modules/automate/helpers/executionEngine.ts index 97b4a3195..eaf72829b 100644 --- a/packages/server/modules/automate/helpers/executionEngine.ts +++ b/packages/server/modules/automate/helpers/executionEngine.ts @@ -3,7 +3,7 @@ import { AutomateFunctionTemplateLanguage, AutomateRunTriggerType } from '@/modules/core/graph/generated/graphql' -import { Nullable, SourceAppName } from '@speckle/shared' +import type { Nullable, SourceAppName } from '@speckle/shared' // TODO: These should be managed in a shared package maybe? export type FunctionSchemaType = { diff --git a/packages/server/modules/automate/helpers/graphTypes.ts b/packages/server/modules/automate/helpers/graphTypes.ts index ed04cf3ef..ef89ede00 100644 --- a/packages/server/modules/automate/helpers/graphTypes.ts +++ b/packages/server/modules/automate/helpers/graphTypes.ts @@ -1,4 +1,4 @@ -import { +import type { AutomationRevisionFunctionRecord, AutomationFunctionRunRecord, AutomationRecord, @@ -8,15 +8,15 @@ import { AutomationRunWithTriggersFunctionRuns, AutomationTriggerDefinitionRecord } from '@/modules/automate/helpers/types' -import { +import type { AutomateFunction, AutomateFunctionRelease, ProjectAutomationsUpdatedMessage, ProjectTriggeredAutomationsStatusUpdatedMessageType, TriggeredAutomationsStatus } from '@/modules/core/graph/generated/graphql' -import { Nullable } from '@speckle/shared' -import { Merge, SetOptional } from 'type-fest' +import type { Nullable } from '@speckle/shared' +import type { Merge, SetOptional } from 'type-fest' export type AutomateFunctionGraphQLReturn = Pick< AutomateFunction, diff --git a/packages/server/modules/automate/helpers/types.ts b/packages/server/modules/automate/helpers/types.ts index edb2c1fa0..9350748f1 100644 --- a/packages/server/modules/automate/helpers/types.ts +++ b/packages/server/modules/automate/helpers/types.ts @@ -1,4 +1,4 @@ -import { Automate, Nullable } from '@speckle/shared' +import type { Automate, Nullable } from '@speckle/shared' export type AutomationRecord = { id: string diff --git a/packages/server/modules/automate/index.ts b/packages/server/modules/automate/index.ts index 8090de905..9ea0fc0f0 100644 --- a/packages/server/modules/automate/index.ts +++ b/packages/server/modules/automate/index.ts @@ -1,5 +1,5 @@ import { automateLogger, moduleLogger } from '@/observability/logging' -import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { onModelVersionCreateFactory, triggerAutomationRevisionRunFactory @@ -29,7 +29,7 @@ import { buildDecryptor } from '@/modules/shared/utils/libsodium' import { getUserEmailFromAutomationRunFactory } from '@/modules/automate/services/tracking' import authGithubAppRest from '@/modules/automate/rest/authGithubApp' import { getFeatureFlags, isTestEnv } from '@/modules/shared/helpers/envHelper' -import { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' import { db } from '@/db/knex' import { ProjectSubscriptions, publish } from '@/modules/shared/utils/subscriptions' import { getBranchLatestCommitsFactory } from '@/modules/core/repositories/branches' diff --git a/packages/server/modules/automate/migrations/20230905162038_automations.ts b/packages/server/modules/automate/migrations/20230905162038_automations.ts index d961d122c..2037fe20e 100644 --- a/packages/server/modules/automate/migrations/20230905162038_automations.ts +++ b/packages/server/modules/automate/migrations/20230905162038_automations.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME = 'automations' const AUTOMATION_RUNS_TABLE_NAME = 'automation_runs' diff --git a/packages/server/modules/automate/migrations/20230912114629_automations_tables_normalization.ts b/packages/server/modules/automate/migrations/20230912114629_automations_tables_normalization.ts index 02524b7f5..e4d9acd4b 100644 --- a/packages/server/modules/automate/migrations/20230912114629_automations_tables_normalization.ts +++ b/packages/server/modules/automate/migrations/20230912114629_automations_tables_normalization.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME = 'automations' const AUTOMATION_RUNS_TABLE_NAME = 'automation_runs' diff --git a/packages/server/modules/automate/migrations/20230914071540_make_function_run_results_nullable.ts b/packages/server/modules/automate/migrations/20230914071540_make_function_run_results_nullable.ts index 164646e4c..9d0b5024e 100644 --- a/packages/server/modules/automate/migrations/20230914071540_make_function_run_results_nullable.ts +++ b/packages/server/modules/automate/migrations/20230914071540_make_function_run_results_nullable.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'automation_function_runs' diff --git a/packages/server/modules/automate/migrations/20230920130032_fix_project_delete_cascade.ts b/packages/server/modules/automate/migrations/20230920130032_fix_project_delete_cascade.ts index 510ade223..844cf3d8f 100644 --- a/packages/server/modules/automate/migrations/20230920130032_fix_project_delete_cascade.ts +++ b/packages/server/modules/automate/migrations/20230920130032_fix_project_delete_cascade.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME = 'automations' const AUTOMATION_RUNS_TABLE_NAME = 'automation_runs' diff --git a/packages/server/modules/automate/migrations/20231025100054_automation_function_name_and_logo.ts b/packages/server/modules/automate/migrations/20231025100054_automation_function_name_and_logo.ts index 074f6de99..68d40217e 100644 --- a/packages/server/modules/automate/migrations/20231025100054_automation_function_name_and_logo.ts +++ b/packages/server/modules/automate/migrations/20231025100054_automation_function_name_and_logo.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATION_FUNCTION_RUNS_TABLE_NAME = 'automation_function_runs' diff --git a/packages/server/modules/automate/migrations/20240304143445_rename_tables.ts b/packages/server/modules/automate/migrations/20240304143445_rename_tables.ts index 01790cb34..d5df70a20 100644 --- a/packages/server/modules/automate/migrations/20240304143445_rename_tables.ts +++ b/packages/server/modules/automate/migrations/20240304143445_rename_tables.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME_OLD = 'automations' const AUTOMATION_RUNS_TABLE_NAME_OLD = 'automation_runs' diff --git a/packages/server/modules/automate/migrations/20240305120620_automate.ts b/packages/server/modules/automate/migrations/20240305120620_automate.ts index e98c65b47..807dcfb28 100644 --- a/packages/server/modules/automate/migrations/20240305120620_automate.ts +++ b/packages/server/modules/automate/migrations/20240305120620_automate.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME = 'automations' const REVISIONS_TABLE_NAME = 'automation_revisions' diff --git a/packages/server/modules/automate/migrations/20240321092858_triggers.ts b/packages/server/modules/automate/migrations/20240321092858_triggers.ts index a439c5de8..7290f2f10 100644 --- a/packages/server/modules/automate/migrations/20240321092858_triggers.ts +++ b/packages/server/modules/automate/migrations/20240321092858_triggers.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const REVISIONS_TABLE_NAME = 'automation_revisions' const TRIGGERS_TABLE_NAME = 'automation_triggers' diff --git a/packages/server/modules/automate/migrations/20240404075414_revision_active.ts b/packages/server/modules/automate/migrations/20240404075414_revision_active.ts index f816a34a2..f7cb74526 100644 --- a/packages/server/modules/automate/migrations/20240404075414_revision_active.ts +++ b/packages/server/modules/automate/migrations/20240404075414_revision_active.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const REVISIONS_TABLE_NAME = 'automation_revisions' diff --git a/packages/server/modules/automate/migrations/20240404173455_automation_token.ts b/packages/server/modules/automate/migrations/20240404173455_automation_token.ts index e566b9bc1..1d1a5fd6f 100644 --- a/packages/server/modules/automate/migrations/20240404173455_automation_token.ts +++ b/packages/server/modules/automate/migrations/20240404173455_automation_token.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('automation_tokens', (table) => { diff --git a/packages/server/modules/automate/migrations/20240507075055_add_function_run_timestamps.ts b/packages/server/modules/automate/migrations/20240507075055_add_function_run_timestamps.ts index c0c316a9d..72417e098 100644 --- a/packages/server/modules/automate/migrations/20240507075055_add_function_run_timestamps.ts +++ b/packages/server/modules/automate/migrations/20240507075055_add_function_run_timestamps.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'automation_function_runs' diff --git a/packages/server/modules/automate/migrations/20240507140149_add_encryption_support.ts b/packages/server/modules/automate/migrations/20240507140149_add_encryption_support.ts index 903ca65c8..610a5b56b 100644 --- a/packages/server/modules/automate/migrations/20240507140149_add_encryption_support.ts +++ b/packages/server/modules/automate/migrations/20240507140149_add_encryption_support.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATION_REVISIONS_TABLE = 'automation_revisions' const AUTOMATION_REVISION_FUNCTIONS_TABLE = 'automation_revision_functions' diff --git a/packages/server/modules/automate/migrations/20240523192300_add_is_test_automation_column.ts b/packages/server/modules/automate/migrations/20240523192300_add_is_test_automation_column.ts index 2d45a7110..8981420ee 100644 --- a/packages/server/modules/automate/migrations/20240523192300_add_is_test_automation_column.ts +++ b/packages/server/modules/automate/migrations/20240523192300_add_is_test_automation_column.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE = 'automations' diff --git a/packages/server/modules/automate/migrations/20240620105859_drop_beta_tables.ts b/packages/server/modules/automate/migrations/20240620105859_drop_beta_tables.ts index 29b8421dd..5fbc21455 100644 --- a/packages/server/modules/automate/migrations/20240620105859_drop_beta_tables.ts +++ b/packages/server/modules/automate/migrations/20240620105859_drop_beta_tables.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const AUTOMATIONS_TABLE_NAME_NEW = 'beta_automations' const AUTOMATION_RUNS_TABLE_NAME_NEW = 'beta_automation_runs' diff --git a/packages/server/modules/automate/migrations/20241203212110_cascade_delete_automations.ts b/packages/server/modules/automate/migrations/20241203212110_cascade_delete_automations.ts index 145a98eee..6e1813f2c 100644 --- a/packages/server/modules/automate/migrations/20241203212110_cascade_delete_automations.ts +++ b/packages/server/modules/automate/migrations/20241203212110_cascade_delete_automations.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('automation_revision_functions', (table) => { diff --git a/packages/server/modules/automate/migrations/20250422161129_soft_delete_automations.ts b/packages/server/modules/automate/migrations/20250422161129_soft_delete_automations.ts index cda8f7722..a4b2a6f0b 100644 --- a/packages/server/modules/automate/migrations/20250422161129_soft_delete_automations.ts +++ b/packages/server/modules/automate/migrations/20250422161129_soft_delete_automations.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('automations', (table) => { diff --git a/packages/server/modules/automate/repositories/automations.ts b/packages/server/modules/automate/repositories/automations.ts index 4942167e1..844b3a5c6 100644 --- a/packages/server/modules/automate/repositories/automations.ts +++ b/packages/server/modules/automate/repositories/automations.ts @@ -1,4 +1,4 @@ -import { +import type { MarkAutomationDeleted, GetActiveTriggerDefinitions, GetAutomation, @@ -29,11 +29,11 @@ import { UpsertAutomationFunctionRun, UpsertAutomationRun } from '@/modules/automate/domain/operations' -import { +import type { AutomationRunFullTrigger, InsertableAutomationFunctionRun } from '@/modules/automate/domain/types' -import { +import type { AutomationRecord, AutomationRevisionRecord, AutomationTriggerDefinitionRecord, @@ -45,7 +45,9 @@ import { AutomationRunTriggerRecord, AutomationFunctionRunRecord, AutomationRevisionWithTriggersFunctions, - AutomationTriggerType, + AutomationTriggerType +} from '@/modules/automate/helpers/types' +import { VersionCreationTriggerType, isVersionCreatedTrigger } from '@/modules/automate/helpers/types' @@ -65,11 +67,11 @@ import { Streams, knex } from '@/modules/core/dbSchema' -import { +import type { AutomationRunsArgs, ProjectAutomationsArgs } from '@/modules/core/graph/generated/graphql' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { executeBatchedSelect, @@ -80,11 +82,12 @@ import { decodeIsoDateCursor, encodeIsoDateCursor } from '@/modules/shared/helpers/dbHelper' -import { Nullable, StreamRoles, isNullOrUndefined } from '@speckle/shared' +import type { Nullable, StreamRoles } from '@speckle/shared' +import { isNullOrUndefined } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { clamp, groupBy, keyBy, pick } from 'lodash-es' -import { SetOptional, SetRequired } from 'type-fest' +import type { SetOptional, SetRequired } from 'type-fest' const tables = { automations: (db: Knex) => db(Automations.name), diff --git a/packages/server/modules/automate/rest/authGithubApp.ts b/packages/server/modules/automate/rest/authGithubApp.ts index 4fa5cd9d0..93ad159de 100644 --- a/packages/server/modules/automate/rest/authGithubApp.ts +++ b/packages/server/modules/automate/rest/authGithubApp.ts @@ -10,7 +10,7 @@ import { validateScope, validateServerRoleBuilderFactory } from '@/modules/share import { authMiddlewareCreator } from '@/modules/shared/middleware' import { getRolesFactory } from '@/modules/shared/repositories/roles' import { Roles, Scopes } from '@speckle/shared' -import { Application } from 'express' +import type { Application } from 'express' import { validateRequest } from 'zod-express' import { z } from 'zod' import { sessionMiddlewareFactory } from '@/modules/auth/middleware' diff --git a/packages/server/modules/automate/rest/logStream.ts b/packages/server/modules/automate/rest/logStream.ts index 066815b8c..f86505787 100644 --- a/packages/server/modules/automate/rest/logStream.ts +++ b/packages/server/modules/automate/rest/logStream.ts @@ -15,7 +15,7 @@ import { import { authMiddlewareCreator } from '@/modules/shared/middleware' import { getRolesFactory } from '@/modules/shared/repositories/roles' import { Roles, Scopes } from '@speckle/shared' -import { Application } from 'express' +import type { Application } from 'express' import { FunctionRunNotFoundError } from '@/modules/automate/errors/runs' export default (app: Application) => { diff --git a/packages/server/modules/automate/services/authCode.ts b/packages/server/modules/automate/services/authCode.ts index 25b74440b..5908ebd29 100644 --- a/packages/server/modules/automate/services/authCode.ts +++ b/packages/server/modules/automate/services/authCode.ts @@ -1,11 +1,11 @@ import { automateLogger } from '@/observability/logging' -import { CreateStoredAuthCode } from '@/modules/automate/domain/operations' +import type { CreateStoredAuthCode } from '@/modules/automate/domain/operations' import { AutomateAuthCodeHandshakeError } from '@/modules/automate/errors/management' -import { EventBus } from '@/modules/shared/services/eventBus' +import type { EventBus } from '@/modules/shared/services/eventBus' import cryptoRandomString from 'crypto-random-string' -import Redis from 'ioredis' +import type Redis from 'ioredis' import { get, has, isObjectLike } from 'lodash-es' -import { Logger } from 'pino' +import type { Logger } from 'pino' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' export enum AuthCodePayloadAction { diff --git a/packages/server/modules/automate/services/automationManagement.ts b/packages/server/modules/automate/services/automationManagement.ts index a2c87804b..d4df27e18 100644 --- a/packages/server/modules/automate/services/automationManagement.ts +++ b/packages/server/modules/automate/services/automationManagement.ts @@ -1,11 +1,11 @@ -import { +import type { InsertableAutomationRevision, InsertableAutomationRevisionFunction, InsertableAutomationRevisionTrigger } from '@/modules/automate/repositories/automations' import { getServerOrigin } from '@/modules/shared/helpers/envHelper' import cryptoRandomString from 'crypto-random-string' -import { +import type { createAutomation as clientCreateAutomation, getFunctionReleaseFactory, getFunctionReleasesFactory @@ -17,31 +17,31 @@ import { removeNullOrUndefinedKeys } from '@speckle/shared' import { AuthCodePayloadAction } from '@/modules/automate/services/authCode' -import { +import type { ProjectAutomationCreateInput, ProjectAutomationRevisionCreateInput, ProjectAutomationUpdateInput } from '@/modules/core/graph/generated/graphql' -import { ContextResourceAccessRules } from '@/modules/core/helpers/token' +import type { ContextResourceAccessRules } from '@/modules/core/helpers/token' import { AutomationFunctionInputEncryptionError, AutomationRevisionCreationError, AutomationUpdateError, JsonSchemaInputValidationError } from '@/modules/automate/errors/management' +import type { AutomationRunStatus } from '@/modules/automate/helpers/types' import { - AutomationRunStatus, AutomationRunStatuses, VersionCreationTriggerType } from '@/modules/automate/helpers/types' import { keyBy, uniq } from 'lodash-es' import { resolveStatusFromFunctionRunStatuses } from '@/modules/automate/services/runsManagement' -import { TriggeredAutomationsStatusGraphQLReturn } from '@/modules/automate/helpers/graphTypes' -import { FunctionInputDecryptor } from '@/modules/automate/services/encryption' +import type { TriggeredAutomationsStatusGraphQLReturn } from '@/modules/automate/helpers/graphTypes' +import type { FunctionInputDecryptor } from '@/modules/automate/services/encryption' import { LibsodiumEncryptionError } from '@/modules/shared/errors/encryption' import { validateInputAgainstFunctionSchema } from '@/modules/automate/utils/inputSchemaValidator' import { validateAutomationName } from '@/modules/automate/utils/automationConfigurationValidator' -import { +import type { CreateAutomation, CreateStoredAuthCode, MarkAutomationDeleted, @@ -53,9 +53,9 @@ import { StoreAutomationToken, UpdateAutomation } from '@/modules/automate/domain/operations' -import { GetBranchesByIds } from '@/modules/core/domain/branches/operations' -import { ValidateStreamAccess } from '@/modules/core/domain/streams/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetBranchesByIds } from '@/modules/core/domain/branches/operations' +import type { ValidateStreamAccess } from '@/modules/core/domain/streams/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { AutomationEvents } from '@/modules/automate/domain/events' import { UnformattableTriggerDefinitionSchemaError } from '@speckle/shared/automate' diff --git a/packages/server/modules/automate/services/encryption.ts b/packages/server/modules/automate/services/encryption.ts index cdb216a8f..54e41cd37 100644 --- a/packages/server/modules/automate/services/encryption.ts +++ b/packages/server/modules/automate/services/encryption.ts @@ -3,18 +3,18 @@ import { packageRoot } from '@/bootstrap' import path from 'node:path' import fs from 'node:fs/promises' import { has, isArray, isObjectLike } from 'lodash-es' -import { Nullable, Optional } from '@speckle/shared' +import type { Nullable, Optional } from '@speckle/shared' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { AutomationFunctionInputEncryptionError } from '@/modules/automate/errors/management' -import { KeyPair, buildDecryptor } from '@/modules/shared/utils/libsodium' -import { AutomationRevisionFunctionRecord } from '@/modules/automate/helpers/types' -import { AutomationRevisionFunctionGraphQLReturn } from '@/modules/automate/helpers/graphTypes' -import { FunctionReleaseSchemaType } from '@/modules/automate/helpers/executionEngine' +import type { KeyPair, buildDecryptor } from '@/modules/shared/utils/libsodium' +import type { AutomationRevisionFunctionRecord } from '@/modules/automate/helpers/types' +import type { AutomationRevisionFunctionGraphQLReturn } from '@/modules/automate/helpers/graphTypes' +import type { FunctionReleaseSchemaType } from '@/modules/automate/helpers/executionEngine' import { LibsodiumEncryptionError } from '@/modules/shared/errors/encryption' -import { Merge } from 'type-fest' +import type { Merge } from 'type-fest' import { convertFunctionReleaseToGraphQLReturn } from '@/modules/automate/services/functionManagement' -import { redactWriteOnlyInputData } from '@/modules/automate/utils/jsonSchemaRedactor' -import { +import type { redactWriteOnlyInputData } from '@/modules/automate/utils/jsonSchemaRedactor' +import type { GetEncryptionKeyPair, GetEncryptionKeyPairFor } from '@/modules/automate/domain/operations' diff --git a/packages/server/modules/automate/services/functionManagement.ts b/packages/server/modules/automate/services/functionManagement.ts index 810559037..8e3dda955 100644 --- a/packages/server/modules/automate/services/functionManagement.ts +++ b/packages/server/modules/automate/services/functionManagement.ts @@ -1,43 +1,41 @@ -import { +import type { CreateFunctionBody, - ExecutionEngineFunctionTemplateId, createFunction, getFunctionFactory, regenerateFunctionToken, updateFunction as updateExecEngineFunction } from '@/modules/automate/clients/executionEngine' +import { ExecutionEngineFunctionTemplateId } from '@/modules/automate/clients/executionEngine' import { AutomateFunctionCreationError, AutomateFunctionUpdateError } from '@/modules/automate/errors/management' -import { +import type { BasicGitRepositoryMetadata, UpdateAutomateFunctionInput, - CreateAutomateFunctionInput, - AutomateFunctionTemplateLanguage + CreateAutomateFunctionInput } from '@/modules/core/graph/generated/graphql' -import { +import { AutomateFunctionTemplateLanguage } from '@/modules/core/graph/generated/graphql' +import type { MaybeNullOrUndefined, Nullable, Optional, - SourceAppName, - removeNullOrUndefinedKeys + SourceAppName } from '@speckle/shared' -import { +import { removeNullOrUndefinedKeys } from '@speckle/shared' +import type { AutomateFunctionGraphQLReturn, AutomateFunctionReleaseGraphQLReturn } from '@/modules/automate/helpers/graphTypes' -import { +import type { FunctionReleaseSchemaType, FunctionSchemaType } from '@/modules/automate/helpers/executionEngine' -import { Request, Response } from 'express' +import type { Request, Response } from 'express' import { UnauthorizedError } from '@/modules/shared/errors' -import { - AuthCodePayload, - AuthCodePayloadAction -} from '@/modules/automate/services/authCode' +import type { AuthCodePayload } from '@/modules/automate/services/authCode' +import { AuthCodePayloadAction } from '@/modules/automate/services/authCode' import { getServerOrigin, isDevEnv, @@ -45,8 +43,8 @@ import { } from '@/modules/shared/helpers/envHelper' import { getFunctionsMarketplaceUrl } from '@/modules/core/helpers/routeHelper' import type { Logger } from '@/observability/logging' -import { CreateStoredAuthCode } from '@/modules/automate/domain/operations' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { CreateStoredAuthCode } from '@/modules/automate/domain/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { noop } from 'lodash-es' import { UnknownFunctionTemplateError } from '@/modules/automate/errors/functions' import { UserInputError } from '@/modules/core/errors/userinput' diff --git a/packages/server/modules/automate/services/runsManagement.ts b/packages/server/modules/automate/services/runsManagement.ts index 65daf91ba..f4cbbaa13 100644 --- a/packages/server/modules/automate/services/runsManagement.ts +++ b/packages/server/modules/automate/services/runsManagement.ts @@ -1,5 +1,5 @@ import { AutomationRunEvents } from '@/modules/automate/domain/events' -import { +import type { GetFunctionRun, UpdateAutomationRun, UpsertAutomationFunctionRun @@ -8,12 +8,12 @@ import { FunctionRunReportStatusError, FunctionRunNotFoundError } from '@/modules/automate/errors/runs' -import { +import type { AutomationFunctionRunRecord, - AutomationRunStatus, - AutomationRunStatuses + AutomationRunStatus } from '@/modules/automate/helpers/types' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import { AutomationRunStatuses } from '@/modules/automate/helpers/types' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { Automate } from '@speckle/shared' const AutomationRunStatusOrder: { [key in AutomationRunStatus]: number } = { diff --git a/packages/server/modules/automate/services/tracking.ts b/packages/server/modules/automate/services/tracking.ts index 345258ab9..6dfe78286 100644 --- a/packages/server/modules/automate/services/tracking.ts +++ b/packages/server/modules/automate/services/tracking.ts @@ -1,10 +1,10 @@ -import { +import type { GetFullAutomationRevisionMetadata, GetFullAutomationRunById } from '@/modules/automate/domain/operations' -import { InsertableAutomationRun } from '@/modules/automate/repositories/automations' -import { GetCommit } from '@/modules/core/domain/commits/operations' -import { LegacyGetUser } from '@/modules/core/domain/users/operations' +import type { InsertableAutomationRun } from '@/modules/automate/repositories/automations' +import type { GetCommit } from '@/modules/core/domain/commits/operations' +import type { LegacyGetUser } from '@/modules/core/domain/users/operations' import { CommitNotFoundError } from '@/modules/core/errors/commit' import { throwUncoveredError } from '@speckle/shared' diff --git a/packages/server/modules/automate/services/trigger.ts b/packages/server/modules/automate/services/trigger.ts index d2b1d81a9..3c04aeb06 100644 --- a/packages/server/modules/automate/services/trigger.ts +++ b/packages/server/modules/automate/services/trigger.ts @@ -1,34 +1,34 @@ -import { InsertableAutomationRun } from '@/modules/automate/repositories/automations' -import { +import type { InsertableAutomationRun } from '@/modules/automate/repositories/automations' +import type { AutomationWithRevision, AutomationTriggerDefinitionRecord, AutomationRevisionWithTriggersFunctions, VersionCreatedTriggerManifest, - VersionCreationTriggerType, BaseTriggerManifest, + LiveAutomation +} from '@/modules/automate/helpers/types' +import { + VersionCreationTriggerType, isVersionCreatedTriggerManifest, - LiveAutomation, RunTriggerSource } from '@/modules/automate/helpers/types' import { Roles, Scopes } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' import { DefaultAppIds } from '@/modules/auth/defaultApps' -import { Merge } from 'type-fest' +import type { Merge } from 'type-fest' import { AutomateInvalidTriggerError, AutomationFunctionInputEncryptionError } from '@/modules/automate/errors/management' -import { - triggerAutomationRun, - type TriggeredAutomationFunctionRun -} from '@/modules/automate/clients/executionEngine' +import type { triggerAutomationRun } from '@/modules/automate/clients/executionEngine' +import { type TriggeredAutomationFunctionRun } from '@/modules/automate/clients/executionEngine' import { TriggerAutomationError } from '@/modules/automate/errors/runs' -import { ContextResourceAccessRules } from '@/modules/core/helpers/token' +import type { ContextResourceAccessRules } from '@/modules/core/helpers/token' import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { automateLogger } from '@/observability/logging' -import { FunctionInputDecryptor } from '@/modules/automate/services/encryption' +import type { FunctionInputDecryptor } from '@/modules/automate/services/encryption' import { LibsodiumEncryptionError } from '@/modules/shared/errors/encryption' -import { +import type { GetActiveTriggerDefinitions, GetAutomation, GetAutomationRevision, @@ -40,11 +40,11 @@ import { TriggerAutomationRevisionRun, UpsertAutomationRun } from '@/modules/automate/domain/operations' -import { GetBranchLatestCommits } from '@/modules/core/domain/branches/operations' -import { GetCommit } from '@/modules/core/domain/commits/operations' -import { ValidateStreamAccess } from '@/modules/core/domain/streams/operations' -import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetBranchLatestCommits } from '@/modules/core/domain/branches/operations' +import type { GetCommit } from '@/modules/core/domain/commits/operations' +import type { ValidateStreamAccess } from '@/modules/core/domain/streams/operations' +import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { AutomationRunEvents } from '@/modules/automate/domain/events' import { isTestEnv } from '@/modules/shared/helpers/envHelper' import { getRequestLogger } from '@/observability/utils/requestContext' diff --git a/packages/server/modules/automate/tests/automations.spec.ts b/packages/server/modules/automate/tests/automations.spec.ts index b7a44b2f7..1d6e015ff 100644 --- a/packages/server/modules/automate/tests/automations.spec.ts +++ b/packages/server/modules/automate/tests/automations.spec.ts @@ -13,23 +13,21 @@ import { createStoredAuthCodeFactory } from '@/modules/automate/services/authCode' import { getGenericRedis } from '@/modules/shared/redis/redis' -import { ProjectAutomationRevisionCreateInput } from '@/modules/core/graph/generated/graphql' -import { BranchRecord } from '@/modules/core/helpers/types' +import type { ProjectAutomationRevisionCreateInput } from '@/modules/core/graph/generated/graphql' +import type { BranchRecord } from '@/modules/core/helpers/types' import { getLatestStreamBranchFactory } from '@/modules/core/repositories/branches' import { expectToThrow } from '@/test/assertionHelper' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { AutomateValidateAuthCodeDocument, GetProjectAutomationDocument } from '@/modules/core/graph/generated/graphql' -import { - TestApolloServer, - createTestContext, - testApolloServer -} from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' +import type { TestAutomationWithRevision } from '@/test/speckle-helpers/automationHelper' import { - TestAutomationWithRevision, buildAutomationCreate, buildAutomationRevisionCreate, createTestAutomation, @@ -37,8 +35,10 @@ import { generateFunctionReleaseId, truncateAutomations } from '@/test/speckle-helpers/automationHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' -import { Automate, Roles } from '@speckle/shared' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { Automate } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { expect } from 'chai' import { times } from 'lodash-es' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/automate/tests/trigger.spec.ts b/packages/server/modules/automate/tests/trigger.spec.ts index 29fd6cfda..6ddfec14d 100644 --- a/packages/server/modules/automate/tests/trigger.spec.ts +++ b/packages/server/modules/automate/tests/trigger.spec.ts @@ -2,37 +2,40 @@ import { FunctionRunReportStatusError, FunctionRunNotFoundError } from '@/modules/automate/errors/runs' +import type { ManuallyTriggerAutomationDeps } from '@/modules/automate/services/trigger' import { - ManuallyTriggerAutomationDeps, ensureRunConditionsFactory, manuallyTriggerAutomationFactory, onModelVersionCreateFactory, triggerAutomationRevisionRunFactory } from '@/modules/automate/services/trigger' -import { +import type { AutomationRecord, AutomationRevisionRecord, - AutomationRunStatuses, AutomationTriggerDefinitionRecord, AutomationTriggerType, BaseTriggerManifest, LiveAutomation, + VersionCreatedTriggerManifest +} from '@/modules/automate/helpers/types' +import { + AutomationRunStatuses, RunTriggerSource, - VersionCreatedTriggerManifest, VersionCreationTriggerType, isVersionCreatedTriggerManifest } from '@/modules/automate/helpers/types' import cryptoRandomString from 'crypto-random-string' import { expect } from 'chai' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' import { createTestCommit } from '@/test/speckle-helpers/commitHelper' +import type { InsertableAutomationRun } from '@/modules/automate/repositories/automations' import { - InsertableAutomationRun, storeAutomationFactory, storeAutomationTokenFactory, storeAutomationRevisionFactory, @@ -63,7 +66,7 @@ import { } from '@/test/speckle-helpers/automationHelper' import { expectToThrow } from '@/test/assertionHelper' import { Commits } from '@/modules/core/dbSchema' -import { BranchRecord } from '@/modules/core/helpers/types' +import type { BranchRecord } from '@/modules/core/helpers/types' import { reportFunctionRunStatusFactory } from '@/modules/automate/services/runsManagement' import { AutomateRunStatus } from '@/modules/core/graph/generated/graphql' import { diff --git a/packages/server/modules/automate/utils/automateFunctionRunStatus.ts b/packages/server/modules/automate/utils/automateFunctionRunStatus.ts index 86b1c0833..bac7a02db 100644 --- a/packages/server/modules/automate/utils/automateFunctionRunStatus.ts +++ b/packages/server/modules/automate/utils/automateFunctionRunStatus.ts @@ -1,7 +1,5 @@ -import { - AutomationRunStatus, - AutomationRunStatuses -} from '@/modules/automate/helpers/types' +import type { AutomationRunStatus } from '@/modules/automate/helpers/types' +import { AutomationRunStatuses } from '@/modules/automate/helpers/types' import { AutomateRunStatus } from '@/modules/core/graph/generated/graphql' export const mapGqlStatusToDbStatus = (status: AutomateRunStatus) => { diff --git a/packages/server/modules/automate/utils/jsonSchemaRedactor.ts b/packages/server/modules/automate/utils/jsonSchemaRedactor.ts index dbd1ff046..6bf547f6a 100644 --- a/packages/server/modules/automate/utils/jsonSchemaRedactor.ts +++ b/packages/server/modules/automate/utils/jsonSchemaRedactor.ts @@ -2,7 +2,8 @@ import type { Code, CodeKeywordDefinition, KeywordCxt } from 'ajv/dist/2020.js' import { _, getProperty } from 'ajv/dist/compile/codegen/index.js' import type { Plugin } from 'ajv/dist/2020.js' import Ajv2020 from 'ajv/dist/2020.js' -import { Automate, MaybeNullOrUndefined } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { Automate } from '@speckle/shared' import { JsonSchemaInputValidationError } from '@/modules/automate/errors/management' type RedactionType = 'redactString' | 'redactNumber' diff --git a/packages/server/modules/backgroundjobs/index.ts b/packages/server/modules/backgroundjobs/index.ts index 14a9271dd..c22993164 100644 --- a/packages/server/modules/backgroundjobs/index.ts +++ b/packages/server/modules/backgroundjobs/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { moduleLogger } from '@/observability/logging' const backgroundJobsModule: SpeckleModule = { diff --git a/packages/server/modules/backgroundjobs/migrations/20250624121042_fileimport_job_queue.ts b/packages/server/modules/backgroundjobs/migrations/20250624121042_fileimport_job_queue.ts index 9245e2bc6..b2121fbce 100644 --- a/packages/server/modules/backgroundjobs/migrations/20250624121042_fileimport_job_queue.ts +++ b/packages/server/modules/backgroundjobs/migrations/20250624121042_fileimport_job_queue.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const JOB_TABLE_NAME = 'background_jobs' diff --git a/packages/server/modules/backgroundjobs/repositories.ts b/packages/server/modules/backgroundjobs/repositories.ts index 830622981..83e526598 100644 --- a/packages/server/modules/backgroundjobs/repositories.ts +++ b/packages/server/modules/backgroundjobs/repositories.ts @@ -1,12 +1,12 @@ -import { Knex } from 'knex' -import { +import type { Knex } from 'knex' +import type { BackgroundJob, BackgroundJobPayload, - BackgroundJobStatus, GetBackgroundJob, GetBackgroundJobCount, StoreBackgroundJob } from '@/modules/backgroundjobs/domain' +import { BackgroundJobStatus } from '@/modules/backgroundjobs/domain' import { buildTableHelper } from '@/modules/core/dbSchema' export const BackgroundJobs = buildTableHelper('background_jobs', [ diff --git a/packages/server/modules/backgroundjobs/services.ts b/packages/server/modules/backgroundjobs/services.ts index c93e7d96a..3e6f2babc 100644 --- a/packages/server/modules/backgroundjobs/services.ts +++ b/packages/server/modules/backgroundjobs/services.ts @@ -1,10 +1,10 @@ -import { +import type { BackgroundJob, BackgroundJobConfig, BackgroundJobPayload, - BackgroundJobStatus, StoreBackgroundJob } from '@/modules/backgroundjobs/domain' +import { BackgroundJobStatus } from '@/modules/backgroundjobs/domain' import cryptoRandomString from 'crypto-random-string' export const scheduleBackgroundJobFactory = ({ diff --git a/packages/server/modules/backgroundjobs/tests/integration/repositories.spec.ts b/packages/server/modules/backgroundjobs/tests/integration/repositories.spec.ts index 199627916..e0e7fab5d 100644 --- a/packages/server/modules/backgroundjobs/tests/integration/repositories.spec.ts +++ b/packages/server/modules/backgroundjobs/tests/integration/repositories.spec.ts @@ -5,11 +5,11 @@ import { BackgroundJobs, getBackgroundJobCountFactory } from '@/modules/backgroundjobs/repositories' -import { +import type { BackgroundJob, - BackgroundJobPayload, - BackgroundJobStatus + BackgroundJobPayload } from '@/modules/backgroundjobs/domain' +import { BackgroundJobStatus } from '@/modules/backgroundjobs/domain' import { expect } from 'chai' import { createRandomString } from '@/modules/core/helpers/testHelpers' diff --git a/packages/server/modules/backgroundjobs/tests/unit/services.spec.ts b/packages/server/modules/backgroundjobs/tests/unit/services.spec.ts index 46da6fe88..098e9c3af 100644 --- a/packages/server/modules/backgroundjobs/tests/unit/services.spec.ts +++ b/packages/server/modules/backgroundjobs/tests/unit/services.spec.ts @@ -1,12 +1,12 @@ import { expect } from 'chai' import { scheduleBackgroundJobFactory } from '@/modules/backgroundjobs/services' -import { +import type { BackgroundJob, BackgroundJobConfig, BackgroundJobPayload, - BackgroundJobStatus, StoreBackgroundJob } from '@/modules/backgroundjobs/domain' +import { BackgroundJobStatus } from '@/modules/backgroundjobs/domain' describe('scheduleBackgroundJobFactory', () => { const mockJobConfig: BackgroundJobConfig = { diff --git a/packages/server/modules/blobstorage/clients/objectStorage.ts b/packages/server/modules/blobstorage/clients/objectStorage.ts index 437af161d..1a45af037 100644 --- a/packages/server/modules/blobstorage/clients/objectStorage.ts +++ b/packages/server/modules/blobstorage/clients/objectStorage.ts @@ -6,15 +6,11 @@ import { getS3Region, getS3SecretKey } from '@/modules/shared/helpers/envHelper' -import { - HeadObjectCommand, - PutObjectCommand, - S3Client, - S3ClientConfig -} from '@aws-sdk/client-s3' +import type { S3ClientConfig } from '@aws-sdk/client-s3' +import { HeadObjectCommand, PutObjectCommand, S3Client } from '@aws-sdk/client-s3' import { getSignedUrl as s3GetSignedUrl } from '@aws-sdk/s3-request-presigner' import type { Optional } from '@speckle/shared' -import { +import type { GetBlobMetadataFromStorage, GetSignedUrl } from '@/modules/blobstorage/domain/operations' diff --git a/packages/server/modules/blobstorage/domain/operations.ts b/packages/server/modules/blobstorage/domain/operations.ts index caf115524..326672927 100644 --- a/packages/server/modules/blobstorage/domain/operations.ts +++ b/packages/server/modules/blobstorage/domain/operations.ts @@ -1,9 +1,9 @@ -import { +import type { BlobStorageItem, BlobStorageItemInput } from '@/modules/blobstorage/domain/types' -import { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' -import { BlobUploadStatus } from '@speckle/shared/blobs' +import type { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' +import type { BlobUploadStatus } from '@speckle/shared/blobs' import type { Readable } from 'stream' import { StoreFileStream } from '@/modules/blobstorage/domain/storageOperations' diff --git a/packages/server/modules/blobstorage/domain/types.ts b/packages/server/modules/blobstorage/domain/types.ts index bbe70a7c6..475b782e1 100644 --- a/packages/server/modules/blobstorage/domain/types.ts +++ b/packages/server/modules/blobstorage/domain/types.ts @@ -1,6 +1,6 @@ -import { Nullable } from '@speckle/shared' -import { BlobUploadStatus } from '@speckle/shared/blobs' -import { SetOptional } from 'type-fest' +import type { Nullable } from '@speckle/shared' +import type { BlobUploadStatus } from '@speckle/shared/blobs' +import type { SetOptional } from 'type-fest' export type BlobStorageItem = { id: string diff --git a/packages/server/modules/blobstorage/graph/resolvers/index.ts b/packages/server/modules/blobstorage/graph/resolvers/index.ts index 16625e2f1..2be66ea23 100644 --- a/packages/server/modules/blobstorage/graph/resolvers/index.ts +++ b/packages/server/modules/blobstorage/graph/resolvers/index.ts @@ -4,14 +4,14 @@ import { getBlobMetadataFactory } from '@/modules/blobstorage/repositories' import { getFileSizeLimit } from '@/modules/blobstorage/services/management' -import { +import type { ProjectBlobArgs, ProjectBlobsArgs, Resolvers, StreamBlobArgs, StreamBlobsArgs } from '@/modules/core/graph/generated/graphql' -import { StreamGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { StreamGraphQLReturn } from '@/modules/core/helpers/graphTypes' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { BadRequestError, diff --git a/packages/server/modules/blobstorage/helpers/types.ts b/packages/server/modules/blobstorage/helpers/types.ts index bd126214b..518febc0d 100644 --- a/packages/server/modules/blobstorage/helpers/types.ts +++ b/packages/server/modules/blobstorage/helpers/types.ts @@ -1,3 +1,3 @@ -import { BlobStorageItem } from '@/modules/blobstorage/domain/types' +import type { BlobStorageItem } from '@/modules/blobstorage/domain/types' export type BlobStorageRecord = BlobStorageItem diff --git a/packages/server/modules/blobstorage/index.ts b/packages/server/modules/blobstorage/index.ts index 7280f6a7b..90c96c147 100644 --- a/packages/server/modules/blobstorage/index.ts +++ b/packages/server/modules/blobstorage/index.ts @@ -1,11 +1,11 @@ -import cron from 'node-cron' +import type cron from 'node-cron' import { db } from '@/db/knex' import { moduleLogger } from '@/observability/logging' import { createS3Bucket, isFileUploadsEnabled } from '@/modules/shared/helpers/envHelper' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { ensureStorageAccessFactory } from '@/modules/blobstorage/repositories/blobs' import { getMainObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { blobStorageRouterFactory } from '@/modules/blobstorage/rest/router' diff --git a/packages/server/modules/blobstorage/repositories/blobs.ts b/packages/server/modules/blobstorage/repositories/blobs.ts index 960025920..af6d374d3 100644 --- a/packages/server/modules/blobstorage/repositories/blobs.ts +++ b/packages/server/modules/blobstorage/repositories/blobs.ts @@ -1,5 +1,5 @@ -import { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' -import { +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' +import type { DeleteObject, EnsureStorageAccess, GetObjectAttributes, @@ -11,13 +11,13 @@ import { EnvironmentResourceError, NotFoundError } from '@/modules/shared/errors' +import type { ServiceOutputTypes } from '@aws-sdk/client-s3' import { CreateBucketCommand, DeleteObjectCommand, GetObjectCommand, HeadBucketCommand, - S3ServiceException, - ServiceOutputTypes + S3ServiceException } from '@aws-sdk/client-s3' import { Upload } from '@aws-sdk/lib-storage' import type { Command } from '@aws-sdk/smithy-client' diff --git a/packages/server/modules/blobstorage/repositories/index.ts b/packages/server/modules/blobstorage/repositories/index.ts index a87d31520..394896a03 100644 --- a/packages/server/modules/blobstorage/repositories/index.ts +++ b/packages/server/modules/blobstorage/repositories/index.ts @@ -1,4 +1,4 @@ -import { +import type { DeleteBlob, ExpirePendingUploads, GetBlob, @@ -8,7 +8,7 @@ import { UpdateBlob, UpsertBlob } from '@/modules/blobstorage/domain/operations' -import { +import type { BlobStorageItem, BlobStorageItemInput } from '@/modules/blobstorage/domain/types' @@ -19,9 +19,9 @@ import { NotFoundError, ResourceMismatch } from '@/modules/shared/errors' -import { MaybeNullOrUndefined, Nullable } from '@speckle/shared' +import type { MaybeNullOrUndefined, Nullable } from '@speckle/shared' import { BlobUploadStatus } from '@speckle/shared/blobs' -import { Knex } from 'knex' +import type { Knex } from 'knex' export const BlobStorage = buildTableHelper('blob_storage', [ 'id', diff --git a/packages/server/modules/blobstorage/rest/busboy.ts b/packages/server/modules/blobstorage/rest/busboy.ts index e9ec5dc8e..a1faa18bb 100644 --- a/packages/server/modules/blobstorage/rest/busboy.ts +++ b/packages/server/modules/blobstorage/rest/busboy.ts @@ -1,7 +1,7 @@ import { BadRequestError } from '@/modules/shared/errors' import { ensureError } from '@speckle/shared' import Busboy from 'busboy' -import { Request } from 'express' +import type { Request } from 'express' import { getFileSizeLimit } from '@/modules/blobstorage/services/management' export const createBusboy = (req: Request) => { diff --git a/packages/server/modules/blobstorage/tasks/index.ts b/packages/server/modules/blobstorage/tasks/index.ts index c628fa341..93487a694 100644 --- a/packages/server/modules/blobstorage/tasks/index.ts +++ b/packages/server/modules/blobstorage/tasks/index.ts @@ -1,9 +1,9 @@ import { db } from '@/db/knex' -import { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' +import type { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' import { getRegisteredDbClients } from '@/modules/multiregion/utils/dbSelector' import { getFileUploadUrlExpiryMinutes } from '@/modules/shared/helpers/envHelper' import { TIME } from '@speckle/shared' -import { ExpirePendingUploads } from '@/modules/blobstorage/domain/operations' +import type { ExpirePendingUploads } from '@/modules/blobstorage/domain/operations' import { expirePendingUploadsFactory } from '@/modules/blobstorage/repositories' export const scheduleBlobPendingUploadExpiry = async ({ diff --git a/packages/server/modules/blobstorage/tests/e2e/blobstorage.graph.spec.ts b/packages/server/modules/blobstorage/tests/e2e/blobstorage.graph.spec.ts index 18bb10ff1..c7a48950b 100644 --- a/packages/server/modules/blobstorage/tests/e2e/blobstorage.graph.spec.ts +++ b/packages/server/modules/blobstorage/tests/e2e/blobstorage.graph.spec.ts @@ -4,11 +4,8 @@ import gql from 'graphql-tag' import { createBlobs } from '@/modules/blobstorage/tests/helpers' import { expect } from 'chai' import { Users, Streams } from '@/modules/core/dbSchema' -import { - createAuthedTestContext, - executeOperation, - ServerAndContext -} from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext, executeOperation } from '@/test/graphqlHelper' import { getStreamFactory, createStreamFactory, diff --git a/packages/server/modules/blobstorage/tests/e2e/blobstorage.rest.spec.ts b/packages/server/modules/blobstorage/tests/e2e/blobstorage.rest.spec.ts index c821b87ef..64cdb4171 100644 --- a/packages/server/modules/blobstorage/tests/e2e/blobstorage.rest.spec.ts +++ b/packages/server/modules/blobstorage/tests/e2e/blobstorage.rest.spec.ts @@ -34,11 +34,12 @@ import { storeTokenResourceAccessDefinitionsFactory } from '@/modules/core/repositories/tokens' import { getServerInfoFactory } from '@/modules/core/repositories/server' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { waitForRegionUser } from '@/test/speckle-helpers/regions' import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { faker } from '@faker-js/faker' -import { BasicTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' import cryptoRandomString from 'crypto-random-string' import type { BlobStorageItem } from '@/modules/blobstorage/domain/types' import { getEventBus } from '@/modules/shared/services/eventBus' diff --git a/packages/server/modules/blobstorage/tests/integration/blobstorage.integration.spec.ts b/packages/server/modules/blobstorage/tests/integration/blobstorage.integration.spec.ts index 68c390417..9a1c3213b 100644 --- a/packages/server/modules/blobstorage/tests/integration/blobstorage.integration.spec.ts +++ b/packages/server/modules/blobstorage/tests/integration/blobstorage.integration.spec.ts @@ -19,21 +19,21 @@ import { } from '@/modules/blobstorage/repositories' import { db } from '@/db/knex' import { cursorFromRows, decodeCursor } from '@/modules/blobstorage/helpers/db' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import cryptoRandomString from 'crypto-random-string' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { storeFileStreamFactory } from '@/modules/blobstorage/repositories/blobs' import { getMainObjectStorage, getPublicMainObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { expect } from 'chai' -import { UploadFileStream } from '@/modules/blobstorage/domain/operations' -import { BlobStorageItem } from '@/modules/blobstorage/domain/types' -import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' +import type { UploadFileStream } from '@/modules/blobstorage/domain/operations' +import type { BlobStorageItem } from '@/modules/blobstorage/domain/types' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { waitForRegionUser } from '@/test/speckle-helpers/regions' import { getProjectObjectStorage } from '@/modules/multiregion/utils/blobStorageSelector' import { BlobUploadStatus } from '@speckle/shared/blobs' diff --git a/packages/server/modules/blobstorage/tests/integration/presigned.integration.spec.ts b/packages/server/modules/blobstorage/tests/integration/presigned.integration.spec.ts index 7856d5d8b..b1fecb964 100644 --- a/packages/server/modules/blobstorage/tests/integration/presigned.integration.spec.ts +++ b/packages/server/modules/blobstorage/tests/integration/presigned.integration.spec.ts @@ -4,10 +4,10 @@ import { } from '@/modules/blobstorage/services/presigned' import { getProjectObjectStorage } from '@/modules/multiregion/utils/blobStorageSelector' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { getBlobMetadataFromStorage, - getSignedUrlFactory, - ObjectStorage + getSignedUrlFactory } from '@/modules/blobstorage/clients/objectStorage' import { getBlobMetadataFactory, @@ -21,7 +21,7 @@ import { BlobUploadStatus } from '@speckle/shared/blobs' import { createProject } from '@/test/projectHelper' import { createTestUser } from '@/test/authHelper' import { beforeEachContext } from '@/test/hooks' -import { Knex } from 'knex' +import type { Knex } from 'knex' import cryptoRandomString from 'crypto-random-string' import { expect } from 'chai' import { testLogger } from '@/observability/logging' @@ -32,7 +32,7 @@ import { StoredBlobAccessError } from '@/modules/blobstorage/errors' import { UserInputError } from '@/modules/core/errors/userinput' -import { +import type { GeneratePresignedUrl, GetBlobMetadata, RegisterCompletedUpload diff --git a/packages/server/modules/cli/commands/activities.ts b/packages/server/modules/cli/commands/activities.ts index d88fa714d..719ea449d 100644 --- a/packages/server/modules/cli/commands/activities.ts +++ b/packages/server/modules/cli/commands/activities.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'activities', diff --git a/packages/server/modules/cli/commands/activities/send.ts b/packages/server/modules/cli/commands/activities/send.ts index 3bca4371b..e25a64943 100644 --- a/packages/server/modules/cli/commands/activities/send.ts +++ b/packages/server/modules/cli/commands/activities/send.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { initializeQueue } from '@/modules/notifications/services/queue' import { publishNotification } from '@/modules/notifications/services/publication' import { cliLogger } from '@/observability/logging' diff --git a/packages/server/modules/cli/commands/bull.ts b/packages/server/modules/cli/commands/bull.ts index f34ba281e..9753bd342 100644 --- a/packages/server/modules/cli/commands/bull.ts +++ b/packages/server/modules/cli/commands/bull.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'bull', diff --git a/packages/server/modules/cli/commands/bull/monitor.ts b/packages/server/modules/cli/commands/bull/monitor.ts index c125e4e06..104b1add3 100644 --- a/packages/server/modules/cli/commands/bull/monitor.ts +++ b/packages/server/modules/cli/commands/bull/monitor.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import express from 'express' import { ExpressAdapter } from '@bull-board/express' import { createBullBoard } from '@bull-board/api' diff --git a/packages/server/modules/cli/commands/bull/test-consume.ts b/packages/server/modules/cli/commands/bull/test-consume.ts index ef5bcc46f..a22b0d911 100644 --- a/packages/server/modules/cli/commands/bull/test-consume.ts +++ b/packages/server/modules/cli/commands/bull/test-consume.ts @@ -3,7 +3,7 @@ import { NotificationType } from '@/modules/notifications/helpers/types' import { initializeConsumption } from '@/modules/notifications/index' import { EnvironmentResourceError } from '@/modules/shared/errors' import { get, noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'test-consume', diff --git a/packages/server/modules/cli/commands/bull/test-push.ts b/packages/server/modules/cli/commands/bull/test-push.ts index 6caca5625..1b04e164f 100644 --- a/packages/server/modules/cli/commands/bull/test-push.ts +++ b/packages/server/modules/cli/commands/bull/test-push.ts @@ -1,11 +1,9 @@ import { cliLogger } from '@/observability/logging' -import { - MentionedInCommentData, - NotificationType -} from '@/modules/notifications/helpers/types' +import type { MentionedInCommentData } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' import { publishNotification } from '@/modules/notifications/services/publication' import { initializeQueue } from '@/modules/notifications/services/queue' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'test-push [message] [error]', diff --git a/packages/server/modules/cli/commands/db.ts b/packages/server/modules/cli/commands/db.ts index e1855f5a4..7c9d2f546 100644 --- a/packages/server/modules/cli/commands/db.ts +++ b/packages/server/modules/cli/commands/db.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'db', diff --git a/packages/server/modules/cli/commands/db/migrate.ts b/packages/server/modules/cli/commands/db/migrate.ts index 5a3598135..7985567ef 100644 --- a/packages/server/modules/cli/commands/db/migrate.ts +++ b/packages/server/modules/cli/commands/db/migrate.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'migrate', diff --git a/packages/server/modules/cli/commands/db/migrate/create.ts b/packages/server/modules/cli/commands/db/migrate/create.ts index d790db3ed..9705c09c0 100644 --- a/packages/server/modules/cli/commands/db/migrate/create.ts +++ b/packages/server/modules/cli/commands/db/migrate/create.ts @@ -2,7 +2,7 @@ import knex from '@/db/knex' import { appRoot } from '@/bootstrap' import fs from 'fs/promises' import { cliLogger as logger } from '@/observability/logging' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { ensureError } from '@speckle/shared' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' diff --git a/packages/server/modules/cli/commands/db/migrate/down.ts b/packages/server/modules/cli/commands/db/migrate/down.ts index 3ccb19add..fde988381 100644 --- a/packages/server/modules/cli/commands/db/migrate/down.ts +++ b/packages/server/modules/cli/commands/db/migrate/down.ts @@ -1,6 +1,7 @@ import { cliLogger as logger } from '@/observability/logging' -import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers' -import { CommandModule } from 'yargs' +import type { CommonDbArgs } from '@/modules/cli/commands/db/helpers' +import { getTargettedDbClients } from '@/modules/cli/commands/db/helpers' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'down [times]', diff --git a/packages/server/modules/cli/commands/db/migrate/latest.ts b/packages/server/modules/cli/commands/db/migrate/latest.ts index d2be438f5..ebdb720f5 100644 --- a/packages/server/modules/cli/commands/db/migrate/latest.ts +++ b/packages/server/modules/cli/commands/db/migrate/latest.ts @@ -1,6 +1,7 @@ import { cliLogger as logger } from '@/observability/logging' -import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers' -import { CommandModule } from 'yargs' +import type { CommonDbArgs } from '@/modules/cli/commands/db/helpers' +import { getTargettedDbClients } from '@/modules/cli/commands/db/helpers' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'latest', diff --git a/packages/server/modules/cli/commands/db/migrate/rollback.ts b/packages/server/modules/cli/commands/db/migrate/rollback.ts index eefee8584..5b868e1b6 100644 --- a/packages/server/modules/cli/commands/db/migrate/rollback.ts +++ b/packages/server/modules/cli/commands/db/migrate/rollback.ts @@ -1,7 +1,8 @@ import { cliLogger as logger } from '@/observability/logging' -import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers' +import type { CommonDbArgs } from '@/modules/cli/commands/db/helpers' +import { getTargettedDbClients } from '@/modules/cli/commands/db/helpers' import { resetPubSubFactory } from '@/test/hooks' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'rollback', diff --git a/packages/server/modules/cli/commands/db/migrate/up.ts b/packages/server/modules/cli/commands/db/migrate/up.ts index 6fd159923..312a8d0c7 100644 --- a/packages/server/modules/cli/commands/db/migrate/up.ts +++ b/packages/server/modules/cli/commands/db/migrate/up.ts @@ -1,6 +1,7 @@ import { cliLogger as logger } from '@/observability/logging' -import { CommonDbArgs, getTargettedDbClients } from '@/modules/cli/commands/db/helpers' -import { CommandModule } from 'yargs' +import type { CommonDbArgs } from '@/modules/cli/commands/db/helpers' +import { getTargettedDbClients } from '@/modules/cli/commands/db/helpers' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'up', diff --git a/packages/server/modules/cli/commands/db/seed.ts b/packages/server/modules/cli/commands/db/seed.ts index 661857e40..06eb42a11 100644 --- a/packages/server/modules/cli/commands/db/seed.ts +++ b/packages/server/modules/cli/commands/db/seed.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'seed', diff --git a/packages/server/modules/cli/commands/db/seed/commits.ts b/packages/server/modules/cli/commands/db/seed/commits.ts index cd26b8bd9..f44406348 100644 --- a/packages/server/modules/cli/commands/db/seed/commits.ts +++ b/packages/server/modules/cli/commands/db/seed/commits.ts @@ -5,10 +5,11 @@ import { UserNotFoundError } from '@/modules/core/errors/user' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' import { ForbiddenError } from '@/modules/shared/errors' -import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommits } from '@/test/speckle-helpers/commitHelper' import dayjs from 'dayjs' import { times } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' const command: CommandModule< diff --git a/packages/server/modules/cli/commands/db/seed/users.ts b/packages/server/modules/cli/commands/db/seed/users.ts index 966887e26..1940a3b38 100644 --- a/packages/server/modules/cli/commands/db/seed/users.ts +++ b/packages/server/modules/cli/commands/db/seed/users.ts @@ -4,8 +4,8 @@ import { Roles } from '@/modules/core/helpers/mainConstants' import { faker } from '@faker-js/faker' import { range } from 'lodash-es' import { UniqueEnforcer } from 'enforce-unique' -import { CommandModule } from 'yargs' -import { UserRecord } from '@/modules/core/helpers/types' +import type { CommandModule } from 'yargs' +import type { UserRecord } from '@/modules/core/helpers/types' const RETRY_COUNT = 3 const UNIQUE_MAX_TIME = 500 diff --git a/packages/server/modules/cli/commands/download.ts b/packages/server/modules/cli/commands/download.ts index dc540d049..78dd59aa4 100644 --- a/packages/server/modules/cli/commands/download.ts +++ b/packages/server/modules/cli/commands/download.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'download', diff --git a/packages/server/modules/cli/commands/download/commit.ts b/packages/server/modules/cli/commands/download/commit.ts index 38b20a8d2..9a81feff6 100644 --- a/packages/server/modules/cli/commands/download/commit.ts +++ b/packages/server/modules/cli/commands/download/commit.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit' import { cliLogger as logger } from '@/observability/logging' import { diff --git a/packages/server/modules/cli/commands/download/project.ts b/packages/server/modules/cli/commands/download/project.ts index b89c1d9ef..1d2bec593 100644 --- a/packages/server/modules/cli/commands/download/project.ts +++ b/packages/server/modules/cli/commands/download/project.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { cliLogger as logger } from '@/observability/logging' import { downloadProjectFactory } from '@/modules/cross-server-sync/services/project' import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit' diff --git a/packages/server/modules/cli/commands/graphql.ts b/packages/server/modules/cli/commands/graphql.ts index 85924b5e6..15cf9d39d 100644 --- a/packages/server/modules/cli/commands/graphql.ts +++ b/packages/server/modules/cli/commands/graphql.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'graphql', diff --git a/packages/server/modules/cli/commands/graphql/introspect.ts b/packages/server/modules/cli/commands/graphql/introspect.ts index e12189e66..3bcfc6386 100644 --- a/packages/server/modules/cli/commands/graphql/introspect.ts +++ b/packages/server/modules/cli/commands/graphql/introspect.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { cliLogger as logger } from '@/observability/logging' import * as ModulesSetup from '@/modules/index' import { printSchema } from 'graphql/utilities' diff --git a/packages/server/modules/cli/commands/stream.ts b/packages/server/modules/cli/commands/stream.ts index 285c2ccc2..b74a3d85c 100644 --- a/packages/server/modules/cli/commands/stream.ts +++ b/packages/server/modules/cli/commands/stream.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'stream', diff --git a/packages/server/modules/cli/commands/stream/clone.ts b/packages/server/modules/cli/commands/stream/clone.ts index a5eefc0bf..f909ddce3 100644 --- a/packages/server/modules/cli/commands/stream/clone.ts +++ b/packages/server/modules/cli/commands/stream/clone.ts @@ -24,7 +24,7 @@ import { import { getUserFactory } from '@/modules/core/repositories/users' import { cloneStreamFactory } from '@/modules/core/services/streams/clone' import { getEventBus } from '@/modules/shared/services/eventBus' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule< unknown, diff --git a/packages/server/modules/cli/commands/test.ts b/packages/server/modules/cli/commands/test.ts index daa91e25c..61b7982d4 100644 --- a/packages/server/modules/cli/commands/test.ts +++ b/packages/server/modules/cli/commands/test.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'test', diff --git a/packages/server/modules/cli/commands/test/generate-key-pair.ts b/packages/server/modules/cli/commands/test/generate-key-pair.ts index e5ede4948..04d67a38f 100644 --- a/packages/server/modules/cli/commands/test/generate-key-pair.ts +++ b/packages/server/modules/cli/commands/test/generate-key-pair.ts @@ -1,6 +1,6 @@ import _sodium from 'libsodium-wrappers' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'generate-key-pair', diff --git a/packages/server/modules/cli/commands/test/test-meta.ts b/packages/server/modules/cli/commands/test/test-meta.ts index 7c3c7a13e..c015eb6b0 100644 --- a/packages/server/modules/cli/commands/test/test-meta.ts +++ b/packages/server/modules/cli/commands/test/test-meta.ts @@ -1,8 +1,8 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { cliLogger as logger } from '@/observability/logging' import { metaHelpers } from '@/modules/core/helpers/meta' import { Users } from '@/modules/core/dbSchema' -import { UserRecord, UsersMetaRecord } from '@/modules/core/helpers/types' +import type { UserRecord, UsersMetaRecord } from '@/modules/core/helpers/types' import { db } from '@/db/knex' const command: CommandModule = { diff --git a/packages/server/modules/cli/commands/workspaces.ts b/packages/server/modules/cli/commands/workspaces.ts index 168ce0939..20e3329a1 100644 --- a/packages/server/modules/cli/commands/workspaces.ts +++ b/packages/server/modules/cli/commands/workspaces.ts @@ -1,5 +1,5 @@ import { noop } from 'lodash-es' -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' const command: CommandModule = { command: 'workspaces', diff --git a/packages/server/modules/cli/commands/workspaces/set-plan.ts b/packages/server/modules/cli/commands/workspaces/set-plan.ts index c8849e6ac..d7c71d5a2 100644 --- a/packages/server/modules/cli/commands/workspaces/set-plan.ts +++ b/packages/server/modules/cli/commands/workspaces/set-plan.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs' +import type { CommandModule } from 'yargs' import { cliLogger as logger } from '@/observability/logging' import { getWorkspaceBySlugOrIdFactory, @@ -11,7 +11,8 @@ import { upsertWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing' import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' -import { WorkspacePlans, WorkspacePlanStatuses } from '@speckle/shared' +import type { WorkspacePlanStatuses } from '@speckle/shared' +import { WorkspacePlans } from '@speckle/shared' import { getEventBus } from '@/modules/shared/services/eventBus' import { updateWorkspacePlanFactory } from '@/modules/gatekeeper/services/workspacePlans' diff --git a/packages/server/modules/comments/domain/events.ts b/packages/server/modules/comments/domain/events.ts index 6e19679d8..9b62cd4ea 100644 --- a/packages/server/modules/comments/domain/events.ts +++ b/packages/server/modules/comments/domain/events.ts @@ -1,10 +1,10 @@ -import { +import type { CommentCreatedActivityInput, ReplyCreatedActivityInput } from '@/modules/activitystream/domain/types' -import { ViewerResourceItem } from '@/modules/comments/domain/types' -import { CommentRecord } from '@/modules/comments/helpers/types' -import { MutationCommentArchiveArgs } from '@/modules/core/graph/generated/graphql' +import type { ViewerResourceItem } from '@/modules/comments/domain/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' +import type { MutationCommentArchiveArgs } from '@/modules/core/graph/generated/graphql' export const commentEventsNamespace = 'comments' as const diff --git a/packages/server/modules/comments/domain/operations.ts b/packages/server/modules/comments/domain/operations.ts index 0f0af1cb5..48677a414 100644 --- a/packages/server/modules/comments/domain/operations.ts +++ b/packages/server/modules/comments/domain/operations.ts @@ -1,28 +1,31 @@ -import { +import type { ExtendedComment, ResourceIdentifier, ViewerResourceGroup, ViewerResourceItem } from '@/modules/comments/domain/types' -import { +import type { CommentLinkRecord, CommentRecord, CommentViewRecord } from '@/modules/comments/helpers/types' -import { BranchLatestCommit } from '@/modules/core/domain/commits/types' -import { +import type { BranchLatestCommit } from '@/modules/core/domain/commits/types' +import type { CreateCommentInput, CreateCommentReplyInput, EditCommentInput, LegacyCommentViewerData, ViewerUpdateTrackingTarget } from '@/modules/core/graph/generated/graphql' -import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' -import { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' -import { MarkNullableOptional, Optional } from '@/modules/shared/helpers/typeHelper' -import { MaybeNullOrUndefined, SpeckleViewer } from '@speckle/shared' -import { Knex } from 'knex' -import { Merge } from 'type-fest' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import type { + MarkNullableOptional, + Optional +} from '@/modules/shared/helpers/typeHelper' +import type { MaybeNullOrUndefined, SpeckleViewer } from '@speckle/shared' +import type { Knex } from 'knex' +import type { Merge } from 'type-fest' type SerializedViewerState = SpeckleViewer.ViewerState.SerializedViewerState diff --git a/packages/server/modules/comments/domain/types.ts b/packages/server/modules/comments/domain/types.ts index 832757723..4ef30f700 100644 --- a/packages/server/modules/comments/domain/types.ts +++ b/packages/server/modules/comments/domain/types.ts @@ -1,5 +1,5 @@ -import { CommentLinkRecord, CommentRecord } from '@/modules/comments/helpers/types' -import { Nullable } from '@speckle/shared' +import type { CommentLinkRecord, CommentRecord } from '@/modules/comments/helpers/types' +import type { Nullable } from '@speckle/shared' export type ResourceIdentifier = { resourceId: string diff --git a/packages/server/modules/comments/events/subscriptionListeners.ts b/packages/server/modules/comments/events/subscriptionListeners.ts index f6368aa20..2ebdf9012 100644 --- a/packages/server/modules/comments/events/subscriptionListeners.ts +++ b/packages/server/modules/comments/events/subscriptionListeners.ts @@ -1,12 +1,12 @@ import { CommentEvents } from '@/modules/comments/domain/events' -import { GetViewerResourcesForComment } from '@/modules/comments/domain/operations' +import type { GetViewerResourcesForComment } from '@/modules/comments/domain/operations' import { ProjectCommentsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' -import { DependenciesOf } from '@/modules/shared/helpers/factory' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { PublishSubscription } from '@/modules/shared/utils/subscriptions' import { CommentSubscriptions, - ProjectSubscriptions, - PublishSubscription + ProjectSubscriptions } from '@/modules/shared/utils/subscriptions' const reportCommentCreatedFactory = diff --git a/packages/server/modules/comments/graph/dataloaders/index.ts b/packages/server/modules/comments/graph/dataloaders/index.ts index f3b4323e2..a12399282 100644 --- a/packages/server/modules/comments/graph/dataloaders/index.ts +++ b/packages/server/modules/comments/graph/dataloaders/index.ts @@ -1,7 +1,7 @@ import { defineRequestDataloaders } from '@/modules/shared/helpers/graphqlHelper' import { keyBy } from 'lodash-es' -import { Nullable } from '@/modules/shared/helpers/typeHelper' -import { ResourceIdentifier } from '@/modules/core/graph/generated/graphql' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { ResourceIdentifier } from '@/modules/core/graph/generated/graphql' import { getCommentParentsFactory, getCommentReplyAuthorIdsFactory, @@ -11,7 +11,7 @@ import { getCommentsViewedAtFactory } from '@/modules/comments/repositories/comments' -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' declare module '@/modules/core/loaders' { interface ModularizedDataLoaders extends ReturnType {} diff --git a/packages/server/modules/comments/graph/resolvers/comments.ts b/packages/server/modules/comments/graph/resolvers/comments.ts index 7a5880f03..c55d2c19f 100644 --- a/packages/server/modules/comments/graph/resolvers/comments.ts +++ b/packages/server/modules/comments/graph/resolvers/comments.ts @@ -33,10 +33,8 @@ import { validateInputAttachmentsFactory } from '@/modules/comments/services/commentTextService' import { has } from 'lodash-es' -import { - documentToBasicString, - SmartTextEditorValueSchema -} from '@/modules/core/services/richTextEditorService' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import { documentToBasicString } from '@/modules/core/services/richTextEditorService' import { getPaginatedBranchCommentsFactory, getPaginatedCommitCommentsFactory, @@ -70,12 +68,13 @@ import { convertStateToLegacyData, convertLegacyDataToStateFactory } from '@/modules/comments/services/data' -import { Resolvers, ResourceType } from '@/modules/core/graph/generated/graphql' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { ResourceType } from '@/modules/core/graph/generated/graphql' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { CommentRecord } from '@/modules/comments/helpers/types' import { db, mainDb } from '@/db/knex' import { getBlobsFactory } from '@/modules/blobstorage/repositories' -import { ResourceIdentifier } from '@/modules/comments/domain/types' +import type { ResourceIdentifier } from '@/modules/comments/domain/types' import { getAllBranchCommitsFactory, getCommitsAndTheirBranchIdsFactory, @@ -88,7 +87,7 @@ import { import { getStreamObjectsFactory } from '@/modules/core/repositories/objects' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { getEventBus } from '@/modules/shared/services/eventBus' import { StreamNotFoundError } from '@/modules/core/errors/stream' import { throwIfAuthNotOk } from '@/modules/shared/helpers/errorHelper' diff --git a/packages/server/modules/comments/graph/resolvers/permissions.ts b/packages/server/modules/comments/graph/resolvers/permissions.ts index 9ca1c1cb0..7184a5063 100644 --- a/packages/server/modules/comments/graph/resolvers/permissions.ts +++ b/packages/server/modules/comments/graph/resolvers/permissions.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { Authz } from '@speckle/shared' export default { diff --git a/packages/server/modules/comments/helpers/graphTypes.ts b/packages/server/modules/comments/helpers/graphTypes.ts index f6bf1bc0a..796edd8d5 100644 --- a/packages/server/modules/comments/helpers/graphTypes.ts +++ b/packages/server/modules/comments/helpers/graphTypes.ts @@ -1,4 +1,4 @@ -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' /** * The types of objects we return in resolvers often don't have the exact type as the object in the schema. diff --git a/packages/server/modules/comments/helpers/types.ts b/packages/server/modules/comments/helpers/types.ts index 8677fb78c..f9d3992db 100644 --- a/packages/server/modules/comments/helpers/types.ts +++ b/packages/server/modules/comments/helpers/types.ts @@ -1,6 +1,6 @@ -import { DataStruct, LegacyData } from '@/modules/comments/services/data' -import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { DataStruct, LegacyData } from '@/modules/comments/services/data' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' export type CommentLinkResourceType = 'stream' | 'commit' | 'object' | 'comment' diff --git a/packages/server/modules/comments/index.ts b/packages/server/modules/comments/index.ts index edc672c27..7e7575a50 100644 --- a/packages/server/modules/comments/index.ts +++ b/packages/server/modules/comments/index.ts @@ -12,7 +12,7 @@ import { getViewerResourcesFromLegacyIdentifiersFactory } from '@/modules/core/services/commit/viewerResources' import { publishNotification } from '@/modules/notifications/services/publication' -import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' import { publish } from '@/modules/shared/utils/subscriptions' diff --git a/packages/server/modules/comments/repositories/comments.ts b/packages/server/modules/comments/repositories/comments.ts index bd8c7e5b9..4a1c1f509 100644 --- a/packages/server/modules/comments/repositories/comments.ts +++ b/packages/server/modules/comments/repositories/comments.ts @@ -1,4 +1,4 @@ -import { +import type { CommentLinkRecord, CommentRecord, CommentLinkResourceType, @@ -15,20 +15,18 @@ import { Objects, StreamCommits } from '@/modules/core/dbSchema' -import { - ResourceIdentifier, - ResourceType -} from '@/modules/core/graph/generated/graphql' -import { Optional } from '@/modules/shared/helpers/typeHelper' +import type { ResourceIdentifier } from '@/modules/core/graph/generated/graphql' +import { ResourceType } from '@/modules/core/graph/generated/graphql' +import type { Optional } from '@/modules/shared/helpers/typeHelper' import { clamp, keyBy, reduce } from 'lodash-es' import crs from 'crypto-random-string' import { executeBatchedSelect } from '@/modules/shared/helpers/dbHelper' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { decodeCursor, encodeCursor } from '@/modules/shared/helpers/dbHelper' import { isNullOrUndefined, SpeckleViewer } from '@speckle/shared' -import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' -import { Merge } from 'type-fest' -import { +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import type { Merge } from 'type-fest' +import type { CheckStreamResourceAccess, DeleteComment, GetBatchedStreamComments, @@ -56,14 +54,14 @@ import { ResolvePaginatedProjectCommentsLatestModelResources, UpdateComment } from '@/modules/comments/domain/operations' -import { +import type { BranchRecord, CommitRecord, ObjectRecord, StreamCommitRecord } from '@/modules/core/helpers/types' -import { ExtendedComment } from '@/modules/comments/domain/types' -import { BranchLatestCommit } from '@/modules/core/domain/commits/types' +import type { ExtendedComment } from '@/modules/comments/domain/types' +import type { BranchLatestCommit } from '@/modules/core/domain/commits/types' import { getBranchLatestCommitsFactory } from '@/modules/core/repositories/branches' import { CommitNotFoundError } from '@/modules/core/errors/commit' import { ResourceMismatch } from '@/modules/shared/errors' diff --git a/packages/server/modules/comments/services/commentTextService.ts b/packages/server/modules/comments/services/commentTextService.ts index 09fb23153..43ea92693 100644 --- a/packages/server/modules/comments/services/commentTextService.ts +++ b/packages/server/modules/comments/services/commentTextService.ts @@ -1,19 +1,19 @@ import { RichTextParseError } from '@/modules/shared/errors' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' import { isTextEditorValueSchema, isTextEditorDoc, convertBasicStringToDocument, isSerializedTextEditorValueSchema, - SmartTextEditorValueSchema, isDocEmpty, documentToBasicString } from '@/modules/core/services/richTextEditorService' import { isString, uniq } from 'lodash-es' import { InvalidAttachmentsError } from '@/modules/comments/errors' -import { JSONContent } from '@tiptap/core' -import { ValidateInputAttachments } from '@/modules/comments/domain/operations' -import { GetBlobs } from '@/modules/blobstorage/domain/operations' -import { Nullable } from '@speckle/shared' +import type { JSONContent } from '@tiptap/core' +import type { ValidateInputAttachments } from '@/modules/comments/domain/operations' +import type { GetBlobs } from '@/modules/blobstorage/domain/operations' +import type { Nullable } from '@speckle/shared' const COMMENT_SCHEMA_VERSION = '1.0.0' const COMMENT_SCHEMA_TYPE = 'stream_comment' diff --git a/packages/server/modules/comments/services/data.ts b/packages/server/modules/comments/services/data.ts index e831c9698..4786ff61d 100644 --- a/packages/server/modules/comments/services/data.ts +++ b/packages/server/modules/comments/services/data.ts @@ -1,10 +1,11 @@ -import { +import type { ConvertLegacyDataToState, GetViewerResourcesForComments } from '@/modules/comments/domain/operations' -import { LegacyCommentViewerData } from '@/modules/core/graph/generated/graphql' +import type { LegacyCommentViewerData } from '@/modules/core/graph/generated/graphql' import { viewerResourcesToString } from '@/modules/core/services/commit/viewerResources' -import { Nullable, SpeckleViewer } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' +import { SpeckleViewer } from '@speckle/shared' import { has, get, intersection, isObjectLike } from 'lodash-es' type SerializedViewerState = SpeckleViewer.ViewerState.SerializedViewerState diff --git a/packages/server/modules/comments/services/index.ts b/packages/server/modules/comments/services/index.ts index db8845b10..1b605cefd 100644 --- a/packages/server/modules/comments/services/index.ts +++ b/packages/server/modules/comments/services/index.ts @@ -2,14 +2,14 @@ import crs from 'crypto-random-string' import { ForbiddenError, ResourceMismatch } from '@/modules/shared/errors' import { buildCommentTextFromInput } from '@/modules/comments/services/commentTextService' import { isNonNullable, Roles } from '@speckle/shared' -import { +import type { ResourceIdentifier, CommentCreateInput, CommentEditInput } from '@/modules/core/graph/generated/graphql' -import { CommentLinkRecord, CommentRecord } from '@/modules/comments/helpers/types' -import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' -import { +import type { CommentLinkRecord, CommentRecord } from '@/modules/comments/helpers/types' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import type { CheckStreamResourceAccess, CheckStreamResourcesAccess, DeleteComment, @@ -23,11 +23,11 @@ import { UpdateComment, ValidateInputAttachments } from '@/modules/comments/domain/operations' -import { ResourceType } from '@/modules/comments/domain/types' -import { GetStream } from '@/modules/core/domain/streams/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { ResourceType } from '@/modules/comments/domain/types' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { CommentEvents } from '@/modules/comments/domain/events' -import { JSONContent } from '@tiptap/core' +import type { JSONContent } from '@tiptap/core' import { UserInputError } from '@/modules/core/errors/userinput' import { CommentNotFoundError } from '@/modules/comments/errors' diff --git a/packages/server/modules/comments/services/management.ts b/packages/server/modules/comments/services/management.ts index 10f56cff1..0bd88b7cd 100644 --- a/packages/server/modules/comments/services/management.ts +++ b/packages/server/modules/comments/services/management.ts @@ -1,11 +1,11 @@ import { ensureError, SpeckleViewer } from '@speckle/shared' -import { +import type { CreateCommentReplyInput, EditCommentInput } from '@/modules/core/graph/generated/graphql' import { CommentCreateError, CommentUpdateError } from '@/modules/comments/errors' import { buildCommentTextFromInput } from '@/modules/comments/services/commentTextService' -import { +import type { CommentLinkRecord, CommentLinkResourceType, CommentRecord @@ -14,7 +14,7 @@ import { formatSerializedViewerState, inputToDataStruct } from '@/modules/comments/services/data' -import { +import type { ArchiveCommentAndNotify, CreateCommentReplyAndNotify, CreateCommentThreadAndNotify, @@ -30,8 +30,8 @@ import { UpdateComment, ValidateInputAttachments } from '@/modules/comments/domain/operations' -import { GetStream } from '@/modules/core/domain/streams/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { CommentEvents } from '@/modules/comments/domain/events' export const createCommentThreadAndNotifyFactory = diff --git a/packages/server/modules/comments/services/notifications.ts b/packages/server/modules/comments/services/notifications.ts index 4a2636ffc..6499cae90 100644 --- a/packages/server/modules/comments/services/notifications.ts +++ b/packages/server/modules/comments/services/notifications.ts @@ -1,17 +1,15 @@ -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' import { ensureCommentSchema } from '@/modules/comments/services/commentTextService' import type { JSONContent } from '@tiptap/core' import { iterateContentNodes } from '@/modules/core/services/richTextEditorService' import { difference, flatten } from 'lodash-es' -import { - NotificationPublisher, - NotificationType -} from '@/modules/notifications/helpers/types' -import { +import type { NotificationPublisher } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' +import type { AddStreamCommentMentionActivity, SaveStreamActivity } from '@/modules/activitystream/domain/operations' -import { EventBus } from '@/modules/shared/services/eventBus' +import type { EventBus } from '@/modules/shared/services/eventBus' import { CommentEvents } from '@/modules/comments/domain/events' import { StreamActionTypes, diff --git a/packages/server/modules/comments/services/retrieval.ts b/packages/server/modules/comments/services/retrieval.ts index d589af51c..f9c8c5957 100644 --- a/packages/server/modules/comments/services/retrieval.ts +++ b/packages/server/modules/comments/services/retrieval.ts @@ -1,6 +1,6 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { isUndefined } from 'lodash-es' -import { +import type { GetPaginatedBranchCommentsFactory, GetPaginatedBranchCommentsPage, GetPaginatedBranchCommentsTotalCount, @@ -15,7 +15,7 @@ import { PaginatedProjectCommentsParams, ResolvePaginatedProjectCommentsLatestModelResources } from '@/modules/comments/domain/operations' -import { BranchLatestCommit } from '@/modules/core/domain/commits/types' +import type { BranchLatestCommit } from '@/modules/core/domain/commits/types' export const getPaginatedCommitCommentsFactory = (deps: { diff --git a/packages/server/modules/comments/tests/comments.graph.spec.ts b/packages/server/modules/comments/tests/comments.graph.spec.ts index ea1066a8c..255654087 100644 --- a/packages/server/modules/comments/tests/comments.graph.spec.ts +++ b/packages/server/modules/comments/tests/comments.graph.spec.ts @@ -6,12 +6,11 @@ import { beforeEachContext } from '@/test/hooks' import { Roles } from '@/modules/core/helpers/mainConstants' import gql from 'graphql-tag' import { convertBasicStringToDocument } from '@/modules/core/services/richTextEditorService' +import type { ServerAndContext, ExecuteOperationResponse } from '@/test/graphqlHelper' import { createTestContext, createAuthedTestContext, - executeOperation, - ServerAndContext, - ExecuteOperationResponse + executeOperation } from '@/test/graphqlHelper' import { streamResourceCheckFactory, @@ -83,7 +82,7 @@ import { getViewerResourcesFromLegacyIdentifiersFactory, getViewerResourcesForCommentsFactory } from '@/modules/core/services/commit/viewerResources' -import { SetNonNullable } from 'type-fest' +import type { SetNonNullable } from 'type-fest' import { createProject } from '@/test/projectHelper' const getServerInfo = getServerInfoFactory({ db }) diff --git a/packages/server/modules/comments/tests/comments.spec.ts b/packages/server/modules/comments/tests/comments.spec.ts index 156e89ff4..001d8b341 100644 --- a/packages/server/modules/comments/tests/comments.spec.ts +++ b/packages/server/modules/comments/tests/comments.spec.ts @@ -11,10 +11,8 @@ import { editCommentFactory, archiveCommentFactory } from '@/modules/comments/services/index' -import { - convertBasicStringToDocument, - SmartTextEditorValueSchema -} from '@/modules/core/services/richTextEditorService' +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import { convertBasicStringToDocument } from '@/modules/core/services/richTextEditorService' import { ensureCommentSchema, buildCommentTextFromInput, @@ -24,16 +22,18 @@ import { get, range } from 'lodash-es' import { buildApolloServer } from '@/app' import { AllScopes } from '@/modules/core/helpers/mainConstants' import { createAuthTokenForUser } from '@/test/authHelper' -import { uploadBlob, UploadedBlob } from '@/test/blobHelper' +import type { UploadedBlob } from '@/test/blobHelper' +import { uploadBlob } from '@/test/blobHelper' import { Comments } from '@/modules/core/dbSchema' import * as CommentsGraphQLClient from '@/test/graphql/comments' +import type { NotificationsStateManager } from '@/test/notificationsHelper' import { buildNotificationsStateTracker, - NotificationsStateManager, purgeNotifications } from '@/test/notificationsHelper' import { NotificationType } from '@/modules/notifications/helpers/types' -import { createAuthedTestContext, ServerAndContext } from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext } from '@/test/graphqlHelper' import { checkStreamResourceAccessFactory, markCommentViewedFactory, @@ -121,12 +121,13 @@ import { getServerInfoFactory } from '@/modules/core/repositories/server' import { createObjectFactory } from '@/modules/core/services/objects/management' import type express from 'express' import { ResourceType } from '@/modules/comments/domain/types' -import { +import type { CommentCreateInput, LegacyCommentViewerData, ReplyCreateInput } from '@/modules/core/graph/generated/graphql' -import { MaybeNullOrUndefined, TIME_MS } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { TIME_MS } from '@speckle/shared' import { CommentEvents } from '@/modules/comments/domain/events' import { getViewerResourcesForCommentFactory, @@ -142,9 +143,10 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' import { buildTestProject } from '@/modules/core/tests/helpers/creation' -import { GetCommentsQueryVariables } from '@/modules/core/graph/generated/graphql' +import type { GetCommentsQueryVariables } from '@/modules/core/graph/generated/graphql' const getServerInfo = getServerInfoFactory({ db }) const getUser = getUserFactory({ db }) diff --git a/packages/server/modules/comments/tests/projectComments.spec.ts b/packages/server/modules/comments/tests/projectComments.spec.ts index 4da4a734c..77b1640a9 100644 --- a/packages/server/modules/comments/tests/projectComments.spec.ts +++ b/packages/server/modules/comments/tests/projectComments.spec.ts @@ -1,27 +1,27 @@ import { CommentEvents } from '@/modules/comments/domain/events' import { commentTextToRawString } from '@/modules/comments/services/commentTextService' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { CreateCommentInput, CreateCommentReplyInput, - CreateProjectCommentDocument, - CreateProjectCommentReplyDocument, - EditCommentInput, - EditProjectCommentDocument + EditCommentInput } from '@/modules/core/graph/generated/graphql' import { - ExecuteOperationOptions, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' + CreateProjectCommentDocument, + CreateProjectCommentReplyDocument, + EditProjectCommentDocument +} from '@/modules/core/graph/generated/graphql' +import type { ExecuteOperationOptions, TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { - BasicTestBranch, - createTestBranches -} from '@/test/speckle-helpers/branchHelper' -import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranches } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommits } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { SpeckleViewer, TIME_MS } from '@speckle/shared' import { RichTextEditor } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/core/configs/cors.ts b/packages/server/modules/core/configs/cors.ts index f0e92f30a..895588441 100644 --- a/packages/server/modules/core/configs/cors.ts +++ b/packages/server/modules/core/configs/cors.ts @@ -1,5 +1,6 @@ -import cors, { CorsOptions } from 'cors' -import { RequestHandler } from 'express' +import type { CorsOptions } from 'cors' +import cors from 'cors' +import type { RequestHandler } from 'express' /** * Main CORS config to use everywhere diff --git a/packages/server/modules/core/dbSchema.ts b/packages/server/modules/core/dbSchema.ts index 152bdc209..f8c660939 100644 --- a/packages/server/modules/core/dbSchema.ts +++ b/packages/server/modules/core/dbSchema.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import knex from '@/db/knex' -import { BaseMetaRecord } from '@/modules/core/helpers/meta' -import { Knex } from 'knex' +import type { BaseMetaRecord } from '@/modules/core/helpers/meta' +import type { Knex } from 'knex' import { reduce } from 'lodash-es' type BaseInnerSchemaConfig = { diff --git a/packages/server/modules/core/domain/branches/events.ts b/packages/server/modules/core/domain/branches/events.ts index a1880d32e..dee8ad003 100644 --- a/packages/server/modules/core/domain/branches/events.ts +++ b/packages/server/modules/core/domain/branches/events.ts @@ -1,5 +1,5 @@ -import { Model } from '@/modules/core/domain/branches/types' -import { +import type { Model } from '@/modules/core/domain/branches/types' +import type { BranchDeleteInput, BranchUpdateInput, DeleteModelInput, diff --git a/packages/server/modules/core/domain/branches/operations.ts b/packages/server/modules/core/domain/branches/operations.ts index caeb013c8..b31483946 100644 --- a/packages/server/modules/core/domain/branches/operations.ts +++ b/packages/server/modules/core/domain/branches/operations.ts @@ -1,6 +1,6 @@ -import { Branch, ModelTreeItem } from '@/modules/core/domain/branches/types' -import { BranchLatestCommit } from '@/modules/core/domain/commits/types' -import { +import type { Branch, ModelTreeItem } from '@/modules/core/domain/branches/types' +import type { BranchLatestCommit } from '@/modules/core/domain/commits/types' +import type { BranchCreateInput, BranchDeleteInput, BranchUpdateInput, @@ -12,12 +12,12 @@ import { StreamBranchesArgs, UpdateModelInput } from '@/modules/core/graph/generated/graphql' -import { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' -import { EmailVerification } from '@/modules/emails/domain/types' -import { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' -import { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' -import { Knex } from 'knex' -import { Merge } from 'type-fest' +import type { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { EmailVerification } from '@/modules/emails/domain/types' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import type { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' +import type { Knex } from 'knex' +import type { Merge } from 'type-fest' export type GenerateBranchId = () => string diff --git a/packages/server/modules/core/domain/branches/types.ts b/packages/server/modules/core/domain/branches/types.ts index 1587757e8..19c4b2943 100644 --- a/packages/server/modules/core/domain/branches/types.ts +++ b/packages/server/modules/core/domain/branches/types.ts @@ -1,4 +1,4 @@ -import { BranchRecord } from '@/modules/core/helpers/types' +import type { BranchRecord } from '@/modules/core/helpers/types' export type Model = BranchRecord export type Branch = Model diff --git a/packages/server/modules/core/domain/commits/events.ts b/packages/server/modules/core/domain/commits/events.ts index 696b57bb7..de3f31e1b 100644 --- a/packages/server/modules/core/domain/commits/events.ts +++ b/packages/server/modules/core/domain/commits/events.ts @@ -1,10 +1,10 @@ -import { Version } from '@/modules/core/domain/commits/types' -import { +import type { Version } from '@/modules/core/domain/commits/types' +import type { CommitCreateInput, CommitUpdateInput, UpdateVersionInput } from '@/modules/core/graph/generated/graphql' -import { MaybeNullOrUndefined } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' export const versionEventsNamespace = 'versions' as const diff --git a/packages/server/modules/core/domain/commits/operations.ts b/packages/server/modules/core/domain/commits/operations.ts index 93704e44b..ace1407c4 100644 --- a/packages/server/modules/core/domain/commits/operations.ts +++ b/packages/server/modules/core/domain/commits/operations.ts @@ -1,5 +1,5 @@ -import { Branch } from '@/modules/core/domain/branches/types' -import { +import type { Branch } from '@/modules/core/domain/branches/types' +import type { CommitWithStreamBranchMetadata, Commit, CommitBranch, @@ -8,7 +8,7 @@ import { LegacyStreamCommit, CommitWithStreamBranchId } from '@/modules/core/domain/commits/types' -import { +import type { CommitsDeleteInput, CommitsMoveInput, CommitUpdateInput, @@ -18,15 +18,18 @@ import { StreamCommitsArgs, UpdateVersionInput } from '@/modules/core/graph/generated/graphql' -import { BranchCommitRecord, StreamCommitRecord } from '@/modules/core/helpers/types' -import { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' -import { +import type { + BranchCommitRecord, + StreamCommitRecord +} from '@/modules/core/helpers/types' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import type { MaybeNullOrUndefined, Nullable, NullableKeysToOptional, Optional } from '@speckle/shared' -import { Knex } from 'knex' +import type { Knex } from 'knex' export type GetCommits = ( commitIds: string[], diff --git a/packages/server/modules/core/domain/commits/types.ts b/packages/server/modules/core/domain/commits/types.ts index 7f1f31b59..d37f817b2 100644 --- a/packages/server/modules/core/domain/commits/types.ts +++ b/packages/server/modules/core/domain/commits/types.ts @@ -1,5 +1,5 @@ -import { Branch } from '@/modules/core/domain/branches/types' -import { +import type { Branch } from '@/modules/core/domain/branches/types' +import type { BranchRecord, CommitRecord, StreamCommitRecord, diff --git a/packages/server/modules/core/domain/objects/operations.ts b/packages/server/modules/core/domain/objects/operations.ts index 9927256d8..949fdc1b8 100644 --- a/packages/server/modules/core/domain/objects/operations.ts +++ b/packages/server/modules/core/domain/objects/operations.ts @@ -1,12 +1,12 @@ import type { Logger } from '@/observability/logging' -import { +import type { InsertableSpeckleObject, RawSpeckleObject, SpeckleObject } from '@/modules/core/domain/objects/types' -import { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' -import { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' -import { Knex } from 'knex' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import type { MaybeNullOrUndefined, Nullable, Optional } from '@speckle/shared' +import type { Knex } from 'knex' import type stream from 'node:stream' export type GetStreamObjects = ( diff --git a/packages/server/modules/core/domain/objects/types.ts b/packages/server/modules/core/domain/objects/types.ts index d06c75538..282935259 100644 --- a/packages/server/modules/core/domain/objects/types.ts +++ b/packages/server/modules/core/domain/objects/types.ts @@ -1,6 +1,6 @@ -import { ObjectRecord } from '@/modules/core/helpers/types' -import { Nullable, NullableKeysToOptional } from '@speckle/shared' -import { OverrideProperties, SetOptional } from 'type-fest' +import type { ObjectRecord } from '@/modules/core/helpers/types' +import type { Nullable, NullableKeysToOptional } from '@speckle/shared' +import type { OverrideProperties, SetOptional } from 'type-fest' export type SpeckleObject = ObjectRecord diff --git a/packages/server/modules/core/domain/projects/events.ts b/packages/server/modules/core/domain/projects/events.ts index 64432806c..d5b000614 100644 --- a/packages/server/modules/core/domain/projects/events.ts +++ b/packages/server/modules/core/domain/projects/events.ts @@ -1,12 +1,12 @@ -import { Project } from '@/modules/core/domain/streams/types' -import { +import type { Project } from '@/modules/core/domain/streams/types' +import type { ProjectCreateInput, ProjectUpdateInput, StreamCreateInput, StreamUpdateInput } from '@/modules/core/graph/generated/graphql' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { Nullable, StreamRoles } from '@speckle/shared' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { Nullable, StreamRoles } from '@speckle/shared' export const projectEventsNamespace = 'projects' as const diff --git a/packages/server/modules/core/domain/projects/operations.ts b/packages/server/modules/core/domain/projects/operations.ts index 04bef00cb..87aae1145 100644 --- a/packages/server/modules/core/domain/projects/operations.ts +++ b/packages/server/modules/core/domain/projects/operations.ts @@ -1,6 +1,9 @@ -import { Project, StreamWithOptionalRole } from '@/modules/core/domain/streams/types' -import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' -import { MaybeNullOrUndefined, StreamRoles } from '@speckle/shared' +import type { + Project, + StreamWithOptionalRole +} from '@/modules/core/domain/streams/types' +import type { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' +import type { MaybeNullOrUndefined, StreamRoles } from '@speckle/shared' export type GetProject = (args: { projectId: string }) => Promise diff --git a/packages/server/modules/core/domain/projects/types.ts b/packages/server/modules/core/domain/projects/types.ts index e14942cb6..37e805a61 100644 --- a/packages/server/modules/core/domain/projects/types.ts +++ b/packages/server/modules/core/domain/projects/types.ts @@ -1,5 +1,5 @@ -import { LimitedUserRecord, UserWithRole } from '@/modules/core/helpers/types' -import { StreamRoles } from '@speckle/shared' +import type { LimitedUserRecord, UserWithRole } from '@/modules/core/helpers/types' +import type { StreamRoles } from '@speckle/shared' export type ProjectTeamMember = UserWithRole & { streamRole: StreamRoles diff --git a/packages/server/modules/core/domain/server/operations.ts b/packages/server/modules/core/domain/server/operations.ts index 43f68b31c..ce6e1818f 100644 --- a/packages/server/modules/core/domain/server/operations.ts +++ b/packages/server/modules/core/domain/server/operations.ts @@ -1,5 +1,5 @@ -import { Scope, ServerInfo, UserRole } from '@/modules/core/domain/server/types' -import { ServerConfigRecord } from '@/modules/core/helpers/types' +import type { Scope, ServerInfo, UserRole } from '@/modules/core/domain/server/types' +import type { ServerConfigRecord } from '@/modules/core/helpers/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 index ed86f0425..681b6c9fb 100644 --- a/packages/server/modules/core/domain/server/types.ts +++ b/packages/server/modules/core/domain/server/types.ts @@ -1,4 +1,4 @@ -import { ScopeRecord } from '@/modules/auth/helpers/types' +import type { ScopeRecord } from '@/modules/auth/helpers/types' export { ServerInfo } from '@/modules/core/helpers/types' export { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' diff --git a/packages/server/modules/core/domain/streams/operations.ts b/packages/server/modules/core/domain/streams/operations.ts index 125b9a3f6..b25b62d8b 100644 --- a/packages/server/modules/core/domain/streams/operations.ts +++ b/packages/server/modules/core/domain/streams/operations.ts @@ -1,4 +1,4 @@ -import { +import type { StreamWithCommitId, StreamWithOptionalRole, LimitedUserWithStreamRole, @@ -6,8 +6,8 @@ import { Project, StreamFavoriteMetadata } from '@/modules/core/domain/streams/types' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { DiscoverableStreamsSortingInput, ProjectUpdateInput, ProjectUpdateRoleInput, @@ -17,14 +17,19 @@ import { StreamUpdateInput, StreamUpdatePermissionInput } from '@/modules/core/graph/generated/graphql' -import { ContextResourceAccessRules } from '@/modules/core/helpers/token' -import { MaybeNullOrUndefined, Nullable, Optional, StreamRoles } from '@speckle/shared' -import { Knex } from 'knex' +import type { ContextResourceAccessRules } from '@/modules/core/helpers/token' +import type { + MaybeNullOrUndefined, + Nullable, + Optional, + StreamRoles +} from '@speckle/shared' +import type { Knex } from 'knex' import type express from 'express' -import { ProjectCreateArgs } from '@/modules/core/domain/projects/operations' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { ProjectCreateArgs } from '@/modules/core/domain/projects/operations' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' import type { Logger } from 'pino' -import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { ProjectRecordVisibility } from '@/modules/core/helpers/types' export type LegacyGetStreams = (params: { cursor?: string | Date | null | undefined diff --git a/packages/server/modules/core/domain/streams/types.ts b/packages/server/modules/core/domain/streams/types.ts index 1aaf7b86d..f9acd77c3 100644 --- a/packages/server/modules/core/domain/streams/types.ts +++ b/packages/server/modules/core/domain/streams/types.ts @@ -1,10 +1,10 @@ -import { +import type { LimitedUserRecord, StreamFavoriteRecord, StreamRecord, UserWithRole } from '@/modules/core/helpers/types' -import { StreamRoles } from '@speckle/shared' +import type { StreamRoles } from '@speckle/shared' export type Stream = StreamRecord export type Project = Stream diff --git a/packages/server/modules/core/domain/tokens/operations.ts b/packages/server/modules/core/domain/tokens/operations.ts index 5553b5a0d..1b348eda8 100644 --- a/packages/server/modules/core/domain/tokens/operations.ts +++ b/packages/server/modules/core/domain/tokens/operations.ts @@ -1,4 +1,4 @@ -import { +import type { ApiToken, EmbedApiToken, EmbedApiTokenWithMetadata, @@ -8,9 +8,9 @@ import { TokenScope, UserServerAppToken } from '@/modules/core/domain/tokens/types' -import { TokenValidationResult } from '@/modules/core/helpers/types' -import { NullableKeysToOptional, Optional, ServerScope } from '@speckle/shared' -import { SetOptional } from 'type-fest' +import type { TokenValidationResult } from '@/modules/core/helpers/types' +import type { NullableKeysToOptional, Optional, ServerScope } from '@speckle/shared' +import type { SetOptional } from 'type-fest' export type StoreApiToken = ( token: SetOptional< diff --git a/packages/server/modules/core/domain/tokens/types.ts b/packages/server/modules/core/domain/tokens/types.ts index cf3ac45ca..b36056b13 100644 --- a/packages/server/modules/core/domain/tokens/types.ts +++ b/packages/server/modules/core/domain/tokens/types.ts @@ -1,11 +1,11 @@ -import { +import type { EmbedApiTokenRecord, PersonalApiTokenRecord, TokenScopeRecord, UserServerAppTokenRecord } from '@/modules/auth/helpers/types' -import { ApiTokenRecord } from '@/modules/auth/repositories' -import { TokenResourceAccessRecord } from '@/modules/core/helpers/types' +import type { ApiTokenRecord } from '@/modules/auth/repositories' +import type { TokenResourceAccessRecord } from '@/modules/core/helpers/types' export const TokenResourceIdentifierType = { Project: 'project', diff --git a/packages/server/modules/core/domain/userEmails/operations.ts b/packages/server/modules/core/domain/userEmails/operations.ts index d57da9117..3ab1d5064 100644 --- a/packages/server/modules/core/domain/userEmails/operations.ts +++ b/packages/server/modules/core/domain/userEmails/operations.ts @@ -1,6 +1,6 @@ -import { UserEmail } from '@/modules/core/domain/userEmails/types' -import { Optional } from '@speckle/shared' -import { Knex } from 'knex' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { Optional } from '@speckle/shared' +import type { Knex } from 'knex' /** * Validate and insert new user email diff --git a/packages/server/modules/core/domain/users/events.ts b/packages/server/modules/core/domain/users/events.ts index 88129786a..d006f370b 100644 --- a/packages/server/modules/core/domain/users/events.ts +++ b/packages/server/modules/core/domain/users/events.ts @@ -1,6 +1,6 @@ -import { User, UserSignUpContext } from '@/modules/core/domain/users/types' -import { UserUpdateInput } from '@/modules/core/graph/generated/graphql' -import { Optional } from '@speckle/shared' +import type { User, UserSignUpContext } from '@/modules/core/domain/users/types' +import type { UserUpdateInput } from '@/modules/core/graph/generated/graphql' +import type { Optional } from '@speckle/shared' export const userEventsNamespace = 'users' as const diff --git a/packages/server/modules/core/domain/users/operations.ts b/packages/server/modules/core/domain/users/operations.ts index 65a76f4e9..e46630ccb 100644 --- a/packages/server/modules/core/domain/users/operations.ts +++ b/packages/server/modules/core/domain/users/operations.ts @@ -1,14 +1,14 @@ -import { +import type { LimitedUser, User, UserOnboardingChoices, UserSignUpContext, UserWithOptionalRole } from '@/modules/core/domain/users/types' -import { UserUpdateInput } from '@/modules/core/graph/generated/graphql' -import { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes' -import { ServerAclRecord, UserWithRole } from '@/modules/core/helpers/types' -import { +import type { UserUpdateInput } from '@/modules/core/graph/generated/graphql' +import type { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes' +import type { ServerAclRecord, UserWithRole } from '@/modules/core/helpers/types' +import type { MaybeNullOrUndefined, Nullable, NullableKeysToOptional, diff --git a/packages/server/modules/core/domain/users/types.ts b/packages/server/modules/core/domain/users/types.ts index 4068e73e1..a8f1164fa 100644 --- a/packages/server/modules/core/domain/users/types.ts +++ b/packages/server/modules/core/domain/users/types.ts @@ -1,5 +1,5 @@ -import { LimitedUserRecord, UserRecord } from '@/modules/core/helpers/userHelper' -import { ServerRoles } from '@speckle/shared' +import type { LimitedUserRecord, UserRecord } from '@/modules/core/helpers/userHelper' +import type { ServerRoles } from '@speckle/shared' import type express from 'express' import type http from 'http' diff --git a/packages/server/modules/core/errors/ratelimit.ts b/packages/server/modules/core/errors/ratelimit.ts index 9fbbc8010..f1fd668e3 100644 --- a/packages/server/modules/core/errors/ratelimit.ts +++ b/packages/server/modules/core/errors/ratelimit.ts @@ -1,6 +1,6 @@ -import { RateLimitBreached } from '@/modules/core/utils/ratelimiter' +import type { RateLimitBreached } from '@/modules/core/utils/ratelimiter' import { BaseError } from '@/modules/shared/errors' -import { Options } from 'verror' +import type { Options } from 'verror' export class RateLimitError extends BaseError { static defaultMessage = diff --git a/packages/server/modules/core/errors/userinput.ts b/packages/server/modules/core/errors/userinput.ts index c3bede281..1f24e6aa0 100644 --- a/packages/server/modules/core/errors/userinput.ts +++ b/packages/server/modules/core/errors/userinput.ts @@ -1,5 +1,6 @@ -import { BaseError, Info } from '@/modules/shared/errors' -import { Options } from 'verror' +import type { Info } from '@/modules/shared/errors' +import { BaseError } from '@/modules/shared/errors' +import type { Options } from 'verror' export class UserInputError extends BaseError { static defaultMessage = 'Invalid user input.' diff --git a/packages/server/modules/core/events/subscriptionListeners.ts b/packages/server/modules/core/events/subscriptionListeners.ts index c44d84b3a..cb6f924b8 100644 --- a/packages/server/modules/core/events/subscriptionListeners.ts +++ b/packages/server/modules/core/events/subscriptionListeners.ts @@ -1,9 +1,9 @@ import { ModelEvents } from '@/modules/core/domain/branches/events' import { VersionEvents } from '@/modules/core/domain/commits/events' import { ProjectEvents } from '@/modules/core/domain/projects/events' -import { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' +import type { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' +import type { CommitUpdateInput } from '@/modules/core/graph/generated/graphql' import { - CommitUpdateInput, ProjectModelsUpdatedMessageType, ProjectUpdatedMessageType, ProjectVersionsUpdatedMessageType, @@ -16,11 +16,11 @@ import { CommitPubsubEvents, StreamPubsubEvents } from '@/modules/shared' -import { DependenciesOf } from '@/modules/shared/helpers/factory' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { PublishSubscription } from '@/modules/shared/utils/subscriptions' import { ProjectSubscriptions, - PublishSubscription, UserSubscriptions, WorkspaceSubscriptions } from '@/modules/shared/utils/subscriptions' diff --git a/packages/server/modules/core/events/userTracking.ts b/packages/server/modules/core/events/userTracking.ts index 08b42c703..bfade96ff 100644 --- a/packages/server/modules/core/events/userTracking.ts +++ b/packages/server/modules/core/events/userTracking.ts @@ -7,10 +7,10 @@ import { getMailchimpOnboardingIds, getMailchimpStatus } from '@/modules/shared/helpers/envHelper' -import { EventBus, EventPayload } from '@/modules/shared/services/eventBus' +import type { EventBus, EventPayload } from '@/modules/shared/services/eventBus' import { getClient, MixpanelEvents } from '@/modules/shared/utils/mixpanel' -import { UpdateUserMixpanelProfile } from '@/modules/core/domain/users/operations' -import { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { UpdateUserMixpanelProfile } from '@/modules/core/domain/users/operations' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' const onUserCreatedFactory = (deps: { updateUserMixpanelProfileFactory: UpdateUserMixpanelProfile }) => diff --git a/packages/server/modules/core/graph/dataloaders/index.ts b/packages/server/modules/core/graph/dataloaders/index.ts index a480d9a9e..7af871df7 100644 --- a/packages/server/modules/core/graph/dataloaders/index.ts +++ b/packages/server/modules/core/graph/dataloaders/index.ts @@ -2,7 +2,7 @@ import { defineRequestDataloaders, simpleTupleCacheKey } from '@/modules/shared/helpers/graphqlHelper' -import DataLoader from 'dataloader' +import type DataLoader from 'dataloader' import { getStreamsFactory, getCommitStreamsFactory, @@ -16,15 +16,15 @@ import { getStreamsCollaboratorCountsFactory } from '@/modules/core/repositories/streams' import { keyBy } from 'lodash-es' -import { +import type { BranchRecord, CommitRecord, StreamFavoriteRecord, StreamRecord, UsersMetaRecord } from '@/modules/core/helpers/types' -import { Nullable } from '@/modules/shared/helpers/typeHelper' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' import { getCommitBranchesFactory, getCommitsFactory, @@ -33,7 +33,7 @@ import { getUserAuthoredCommitCountsFactory, getUserStreamCommitCountsFactory } from '@/modules/core/repositories/commits' -import { Scope } from '@/modules/core/graph/generated/graphql' +import type { Scope } from '@/modules/core/graph/generated/graphql' import { getBranchCommentCountsFactory, getCommitCommentCountsFactory, @@ -49,8 +49,8 @@ import { import { metaHelpers } from '@/modules/core/helpers/meta' import { Users } from '@/modules/core/dbSchema' import { getStreamPendingModelsFactory } from '@/modules/fileuploads/repositories/fileUploads' -import { FileUploadRecord } from '@/modules/fileuploads/helpers/types' -import { +import type { FileUploadRecord } from '@/modules/fileuploads/helpers/types' +import type { AutomationRevisionFunctionRecord, AutomationRecord, AutomationRevisionRecord, @@ -69,7 +69,7 @@ import { getFunctionFactory, getFunctionReleasesFactory } from '@/modules/automate/clients/executionEngine' -import { +import type { FunctionReleaseSchemaType, FunctionSchemaType } from '@/modules/automate/helpers/executionEngine' @@ -79,21 +79,19 @@ import { } from '@/modules/automate/errors/executionEngine' import { queryInvitesFactory } from '@/modules/serverinvites/repositories/serverInvites' import { getAppScopesFactory } from '@/modules/auth/repositories' -import { +import type { LimitedUserWithStreamRole, StreamWithCommitId } from '@/modules/core/domain/streams/types' -import { - getUsersFactory, - UserWithOptionalRole -} from '@/modules/core/repositories/users' -import { +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import { getUsersFactory } from '@/modules/core/repositories/users' +import type { CommitWithStreamBranchId, CommitWithStreamBranchMetadata } from '@/modules/core/domain/commits/types' import { logger } from '@/observability/logging' import { getLastVersionsByProjectIdFactory } from '@/modules/core/repositories/versions' -import { StreamRoles } from '@speckle/shared' +import type { StreamRoles } from '@speckle/shared' declare module '@/modules/core/loaders' { interface ModularizedDataLoaders extends ReturnType {} diff --git a/packages/server/modules/core/graph/directives/hasRole.ts b/packages/server/modules/core/graph/directives/hasRole.ts index 3d5790c74..4f3338512 100644 --- a/packages/server/modules/core/graph/directives/hasRole.ts +++ b/packages/server/modules/core/graph/directives/hasRole.ts @@ -9,7 +9,7 @@ import { throwForNotHavingServerRoleFactory, validateServerRoleBuilderFactory } from '@/modules/shared/authz' -import { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' +import type { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' import { getRolesFactory } from '@/modules/shared/repositories/roles' import { db } from '@/db/knex' import { authorizeResolver } from '@/modules/shared' diff --git a/packages/server/modules/core/graph/directives/hasScope.ts b/packages/server/modules/core/graph/directives/hasScope.ts index e2b4dcc53..0d00e3626 100644 --- a/packages/server/modules/core/graph/directives/hasScope.ts +++ b/packages/server/modules/core/graph/directives/hasScope.ts @@ -1,6 +1,6 @@ import { defaultFieldResolver } from 'graphql' import { mapSchema, MapperKind, getDirective } from '@graphql-tools/utils' -import { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' +import type { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' import { validateScopesFactory } from '@/modules/shared/services/auth' const validateScopes = validateScopesFactory() diff --git a/packages/server/modules/core/graph/directives/isOwner.ts b/packages/server/modules/core/graph/directives/isOwner.ts index 564493f5e..b02cd4db4 100644 --- a/packages/server/modules/core/graph/directives/isOwner.ts +++ b/packages/server/modules/core/graph/directives/isOwner.ts @@ -1,4 +1,4 @@ -import { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' +import type { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' import { ForbiddenError } from '@/modules/shared/errors' import { getDirective } from '@graphql-tools/utils' import { mapSchema } from '@graphql-tools/utils' diff --git a/packages/server/modules/core/graph/helpers/directiveHelper.ts b/packages/server/modules/core/graph/helpers/directiveHelper.ts index eb87775c8..8b0edd7a6 100644 --- a/packages/server/modules/core/graph/helpers/directiveHelper.ts +++ b/packages/server/modules/core/graph/helpers/directiveHelper.ts @@ -1,4 +1,4 @@ -import { GraphQLSchema } from 'graphql' +import type { GraphQLSchema } from 'graphql' export type SchemaTransformer = (schema: GraphQLSchema) => GraphQLSchema diff --git a/packages/server/modules/core/graph/mocks/core.ts b/packages/server/modules/core/graph/mocks/core.ts index 8f817f84f..361314528 100644 --- a/packages/server/modules/core/graph/mocks/core.ts +++ b/packages/server/modules/core/graph/mocks/core.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' import { faker } from '@faker-js/faker' // TODO: Some of these might make better sense in the base config, adjust as needed diff --git a/packages/server/modules/core/graph/plugins/logging.ts b/packages/server/modules/core/graph/plugins/logging.ts index 938fe8e96..740a8f468 100644 --- a/packages/server/modules/core/graph/plugins/logging.ts +++ b/packages/server/modules/core/graph/plugins/logging.ts @@ -2,9 +2,9 @@ import { type Registry, Counter } from 'prom-client' import { graphqlLogger } from '@/observability/logging' import { redactSensitiveVariables } from '@/observability/utils/redact' -import { FieldNode, SelectionNode } from 'graphql' -import { ApolloServerPlugin } from '@apollo/server' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { FieldNode, SelectionNode } from 'graphql' +import type { ApolloServerPlugin } from '@apollo/server' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' import { shouldLogAsInfoLevel } from '@/observability/utils/logLevels' import { getRequestContext } from '@/observability/utils/requestContext' diff --git a/packages/server/modules/core/graph/plugins/statusCode.ts b/packages/server/modules/core/graph/plugins/statusCode.ts index c66294517..2cc1969f4 100644 --- a/packages/server/modules/core/graph/plugins/statusCode.ts +++ b/packages/server/modules/core/graph/plugins/statusCode.ts @@ -1,9 +1,9 @@ import { RateLimitError } from '@/modules/core/errors/ratelimit' import { BaseError } from '@/modules/shared/errors' -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' import type { ApolloServerPlugin } from '@apollo/server' import type { GraphQLError } from 'graphql' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' const getErrorCode = (e: GraphQLError): Nullable => { const extensionsCode = e.extensions?.code as string diff --git a/packages/server/modules/core/graph/resolvers/admin.ts b/packages/server/modules/core/graph/resolvers/admin.ts index 364339889..7c5151dd3 100644 --- a/packages/server/modules/core/graph/resolvers/admin.ts +++ b/packages/server/modules/core/graph/resolvers/admin.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { mapServerRoleToValue } from '@/modules/core/helpers/graphTypes' import { toProjectIdWhitelist } from '@/modules/core/helpers/token' import { legacyGetStreamsFactory } from '@/modules/core/repositories/streams' diff --git a/packages/server/modules/core/graph/resolvers/apitoken.ts b/packages/server/modules/core/graph/resolvers/apitoken.ts index 3e612a8af..23c7bce60 100644 --- a/packages/server/modules/core/graph/resolvers/apitoken.ts +++ b/packages/server/modules/core/graph/resolvers/apitoken.ts @@ -9,7 +9,7 @@ import { getUserPersonalAccessTokensFactory, revokeUserTokenByIdFactory } from '@/modules/core/repositories/tokens' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens' import { withOperationLogging } from '@/observability/domain/businessLogging' diff --git a/packages/server/modules/core/graph/resolvers/appTokens.ts b/packages/server/modules/core/graph/resolvers/appTokens.ts index d11bc29b8..4d0e7c613 100644 --- a/packages/server/modules/core/graph/resolvers/appTokens.ts +++ b/packages/server/modules/core/graph/resolvers/appTokens.ts @@ -1,6 +1,6 @@ import { db } from '@/db/knex' import { getTokenAppInfoFactory } from '@/modules/auth/repositories/apps' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { canCreateAppToken, isValidScope } from '@/modules/core/helpers/token' import { storeApiTokenFactory, diff --git a/packages/server/modules/core/graph/resolvers/base.ts b/packages/server/modules/core/graph/resolvers/base.ts index 645fa7da6..72b7e534b 100644 --- a/packages/server/modules/core/graph/resolvers/base.ts +++ b/packages/server/modules/core/graph/resolvers/base.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { filteredSubscribe, TestSubscriptions diff --git a/packages/server/modules/core/graph/resolvers/branches.ts b/packages/server/modules/core/graph/resolvers/branches.ts index 2c7b9be2e..27c65c0e1 100644 --- a/packages/server/modules/core/graph/resolvers/branches.ts +++ b/packages/server/modules/core/graph/resolvers/branches.ts @@ -19,10 +19,8 @@ import { markBranchStreamUpdatedFactory } from '@/modules/core/repositories/streams' import { legacyGetUserFactory } from '@/modules/core/repositories/users' -import { - Resolvers, - TokenResourceIdentifierType -} from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { getPaginatedStreamBranchesFactory } from '@/modules/core/services/branch/retrieval' import { filteredSubscribe } from '@/modules/shared/utils/subscriptions' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' diff --git a/packages/server/modules/core/graph/resolvers/commits.ts b/packages/server/modules/core/graph/resolvers/commits.ts index 91874a778..61343dbcd 100644 --- a/packages/server/modules/core/graph/resolvers/commits.ts +++ b/packages/server/modules/core/graph/resolvers/commits.ts @@ -4,7 +4,7 @@ import { filteredSubscribe } from '@/modules/shared/utils/subscriptions' import { authorizeResolver } from '@/modules/shared' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { getPaginatedBranchCommitsFactory, @@ -66,20 +66,21 @@ import { } from '@/modules/core/repositories/branches' import { getObjectFactory } from '@/modules/core/repositories/objects' import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' -import { Resolvers } from '@/modules/core/graph/generated/graphql' -import { CommitGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { CommitGraphQLReturn } from '@/modules/core/helpers/graphTypes' import { getProjectDbClient, getRegisteredDbClients } from '@/modules/multiregion/utils/dbSelector' -import { LegacyUserCommit } from '@/modules/core/domain/commits/types' +import type { LegacyUserCommit } from '@/modules/core/domain/commits/types' import coreModule from '@/modules/core' import { getEventBus } from '@/modules/shared/services/eventBus' import { isRateLimiterEnabled } from '@/modules/shared/helpers/envHelper' import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { throwIfAuthNotOk } from '@/modules/shared/helpers/errorHelper' import { withOperationLogging } from '@/observability/domain/businessLogging' -import { isNonNullable, MaybeNullOrUndefined, Roles } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { isNonNullable, Roles } from '@speckle/shared' import { getProjectLimitDateFactory } from '@/modules/gatekeeperCore/utils/limits' const getStreams = getStreamsFactory({ db }) diff --git a/packages/server/modules/core/graph/resolvers/common.ts b/packages/server/modules/core/graph/resolvers/common.ts index 0450f1c00..3f95f4ff0 100644 --- a/packages/server/modules/core/graph/resolvers/common.ts +++ b/packages/server/modules/core/graph/resolvers/common.ts @@ -1,6 +1,6 @@ import { mainDb } from '@/db/knex' import { getBlobsFactory } from '@/modules/blobstorage/repositories' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { NotImplementedError } from '@/modules/shared/errors' import { isNonNullable } from '@speckle/shared' diff --git a/packages/server/modules/core/graph/resolvers/embedTokens.ts b/packages/server/modules/core/graph/resolvers/embedTokens.ts index a65afce73..12dd9b034 100644 --- a/packages/server/modules/core/graph/resolvers/embedTokens.ts +++ b/packages/server/modules/core/graph/resolvers/embedTokens.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getApiTokenByIdFactory, storeApiTokenFactory, diff --git a/packages/server/modules/core/graph/resolvers/models.ts b/packages/server/modules/core/graph/resolvers/models.ts index 06154f5ee..bfb870ae2 100644 --- a/packages/server/modules/core/graph/resolvers/models.ts +++ b/packages/server/modules/core/graph/resolvers/models.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { createBranchAndNotifyFactory, deleteBranchAndNotifyFactory, diff --git a/packages/server/modules/core/graph/resolvers/objects.ts b/packages/server/modules/core/graph/resolvers/objects.ts index d3c69186d..4171f56a0 100644 --- a/packages/server/modules/core/graph/resolvers/objects.ts +++ b/packages/server/modules/core/graph/resolvers/objects.ts @@ -1,6 +1,6 @@ import { authorizeResolver } from '@/modules/shared' import { isNonNullable, Roles } from '@speckle/shared' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getObjectChildrenFactory, getObjectChildrenQueryFactory, diff --git a/packages/server/modules/core/graph/resolvers/permissions.ts b/packages/server/modules/core/graph/resolvers/permissions.ts index 2b3c1a52c..2e9f087cd 100644 --- a/packages/server/modules/core/graph/resolvers/permissions.ts +++ b/packages/server/modules/core/graph/resolvers/permissions.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { Authz } from '@speckle/shared' export default { diff --git a/packages/server/modules/core/graph/resolvers/projects.ts b/packages/server/modules/core/graph/resolvers/projects.ts index cccdccb05..32d47e3dd 100644 --- a/packages/server/modules/core/graph/resolvers/projects.ts +++ b/packages/server/modules/core/graph/resolvers/projects.ts @@ -5,11 +5,10 @@ import { insertCommentLinksFactory, insertCommentsFactory } from '@/modules/comments/repositories/comments' -import { - Resolvers, - TokenResourceIdentifierType -} from '@/modules/core/graph/generated/graphql' -import { Roles, Scopes, StreamRoles } from '@/modules/core/helpers/mainConstants' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' +import type { StreamRoles } from '@/modules/core/helpers/mainConstants' +import { Roles, Scopes } from '@/modules/core/helpers/mainConstants' import { isResourceAllowed, throwIfNewResourceNotAllowed, diff --git a/packages/server/modules/core/graph/resolvers/server.ts b/packages/server/modules/core/graph/resolvers/server.ts index ea223dfc6..116d07e25 100644 --- a/packages/server/modules/core/graph/resolvers/server.ts +++ b/packages/server/modules/core/graph/resolvers/server.ts @@ -12,7 +12,7 @@ import { getCachedServerInfoFactory } from '@/modules/core/repositories/server' import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { withOperationLogging } from '@/observability/domain/businessLogging' const getServerInfo = getCachedServerInfoFactory({ db }) diff --git a/packages/server/modules/core/graph/resolvers/streams.ts b/packages/server/modules/core/graph/resolvers/streams.ts index f7e2bc41f..3b9a185b8 100644 --- a/packages/server/modules/core/graph/resolvers/streams.ts +++ b/packages/server/modules/core/graph/resolvers/streams.ts @@ -34,7 +34,8 @@ import { updateStreamAndNotifyFactory, updateStreamRoleAndNotifyFactory } from '@/modules/core/services/streams/management' -import { Nullable, Roles, Scopes } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' +import { Roles, Scopes } from '@speckle/shared' import { StreamNotFoundError } from '@/modules/core/errors/stream' import { throwForNotHavingServerRole } from '@/modules/shared/authz' @@ -44,10 +45,8 @@ import { throwIfResourceAccessNotAllowed, throwIfNewResourceNotAllowed } from '@/modules/core/helpers/token' -import { - Resolvers, - TokenResourceIdentifierType -} from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { deleteAllResourceInvitesFactory, deleteInvitesByTargetFactory, diff --git a/packages/server/modules/core/graph/resolvers/userEmails.ts b/packages/server/modules/core/graph/resolvers/userEmails.ts index 0172016ba..6ee6c044a 100644 --- a/packages/server/modules/core/graph/resolvers/userEmails.ts +++ b/packages/server/modules/core/graph/resolvers/userEmails.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { createUserEmailFactory, deleteUserEmailFactory, diff --git a/packages/server/modules/core/graph/resolvers/users.ts b/packages/server/modules/core/graph/resolvers/users.ts index fa1da37fe..73963db92 100644 --- a/packages/server/modules/core/graph/resolvers/users.ts +++ b/packages/server/modules/core/graph/resolvers/users.ts @@ -38,7 +38,7 @@ import { } from '@/modules/core/repositories/streams' import { dbLogger } from '@/observability/logging' import { getAdminUsersListCollectionFactory } from '@/modules/core/services/users/legacyAdminUsersList' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getEventBus } from '@/modules/shared/services/eventBus' import { diff --git a/packages/server/modules/core/graph/resolvers/versions.ts b/packages/server/modules/core/graph/resolvers/versions.ts index 5bd6388d2..bc3976b3d 100644 --- a/packages/server/modules/core/graph/resolvers/versions.ts +++ b/packages/server/modules/core/graph/resolvers/versions.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { filteredSubscribe, ProjectSubscriptions diff --git a/packages/server/modules/core/graph/setup.ts b/packages/server/modules/core/graph/setup.ts index 389cbc35b..365a41b90 100644 --- a/packages/server/modules/core/graph/setup.ts +++ b/packages/server/modules/core/graph/setup.ts @@ -1,6 +1,6 @@ import { BadRequestError } from '@/modules/shared/errors' import { isGraphQLError } from '@/modules/shared/helpers/graphqlHelper' -import { ApolloServerOptions, BaseContext } from '@apollo/server' +import type { ApolloServerOptions, BaseContext } from '@apollo/server' import { ensureError } from '@speckle/shared' import { omit } from 'lodash-es' import VError from 'verror' diff --git a/packages/server/modules/core/helpers/branch.ts b/packages/server/modules/core/helpers/branch.ts index 76dd14e7f..fb24c3ef7 100644 --- a/packages/server/modules/core/helpers/branch.ts +++ b/packages/server/modules/core/helpers/branch.ts @@ -1,4 +1,4 @@ -import { +import type { BranchDeleteInput, BranchUpdateInput, DeleteModelInput, diff --git a/packages/server/modules/core/helpers/graphTypes.ts b/packages/server/modules/core/helpers/graphTypes.ts index 7e2121030..c9d4ccc85 100644 --- a/packages/server/modules/core/helpers/graphTypes.ts +++ b/packages/server/modules/core/helpers/graphTypes.ts @@ -1,17 +1,17 @@ -import { +import type { CommitWithStreamBranchId, LegacyStreamCommit, LegacyUserCommit } from '@/modules/core/domain/commits/types' -import { EmbedApiTokenWithMetadata } from '@/modules/core/domain/tokens/types' -import { +import type { EmbedApiTokenWithMetadata } from '@/modules/core/domain/tokens/types' +import type { LimitedUser, - StreamRole, - ServerRole, ModelsTreeItem } from '@/modules/core/graph/generated/graphql' -import { Roles, ServerRoles, StreamRoles } from '@/modules/core/helpers/mainConstants' -import { +import { StreamRole, ServerRole } from '@/modules/core/graph/generated/graphql' +import type { ServerRoles, StreamRoles } from '@/modules/core/helpers/mainConstants' +import { Roles } from '@/modules/core/helpers/mainConstants' +import type { BranchRecord, CommitRecord, LimitedUserRecord, @@ -20,7 +20,7 @@ import { StreamRecord, UserRecord } from '@/modules/core/helpers/types' -import { MaybeNullOrUndefined } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' /** * The types of objects we return in resolvers often don't have the exact type as the object in the schema. diff --git a/packages/server/modules/core/helpers/meta.ts b/packages/server/modules/core/helpers/meta.ts index 28c0e4b97..bd64f34d4 100644 --- a/packages/server/modules/core/helpers/meta.ts +++ b/packages/server/modules/core/helpers/meta.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Nullable } from '@speckle/shared' -import { SchemaConfig, MetaSchemaConfig } from '@/modules/core/dbSchema' +import type { Nullable } from '@speckle/shared' +import type { SchemaConfig, MetaSchemaConfig } from '@/modules/core/dbSchema' import { camelCase, isString } from 'lodash-es' -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * All meta records must follow this interface diff --git a/packages/server/modules/core/helpers/project.ts b/packages/server/modules/core/helpers/project.ts index dd1d64ad2..015492d63 100644 --- a/packages/server/modules/core/helpers/project.ts +++ b/packages/server/modules/core/helpers/project.ts @@ -1,8 +1,6 @@ -import { ProjectCreateArgs } from '@/modules/core/domain/projects/operations' -import { - ProjectVisibility, - StreamCreateInput -} from '@/modules/core/graph/generated/graphql' +import type { ProjectCreateArgs } from '@/modules/core/domain/projects/operations' +import type { StreamCreateInput } from '@/modules/core/graph/generated/graphql' +import { ProjectVisibility } from '@/modules/core/graph/generated/graphql' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { throwUncoveredError } from '@speckle/shared' import { has, get } from 'lodash-es' diff --git a/packages/server/modules/core/helpers/routeHelper.ts b/packages/server/modules/core/helpers/routeHelper.ts index b51fc5ca6..c6096a25c 100644 --- a/packages/server/modules/core/helpers/routeHelper.ts +++ b/packages/server/modules/core/helpers/routeHelper.ts @@ -1,6 +1,6 @@ import { InvalidArgumentError } from '@/modules/shared/errors' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { MaybeNullOrUndefined } from '@/modules/shared/helpers/typeHelper' +import type { MaybeNullOrUndefined } from '@/modules/shared/helpers/typeHelper' /** * Collection of functions for resolving relative routes from the backend, so that they aren't duplicated diff --git a/packages/server/modules/core/helpers/scanTable.ts b/packages/server/modules/core/helpers/scanTable.ts index e6526d99e..55eb9208b 100644 --- a/packages/server/modules/core/helpers/scanTable.ts +++ b/packages/server/modules/core/helpers/scanTable.ts @@ -1,5 +1,5 @@ import { LogicError } from '@/modules/shared/errors' -import { Knex } from 'knex' +import type { Knex } from 'knex' export const scanTableFactory = ({ db diff --git a/packages/server/modules/core/helpers/token.ts b/packages/server/modules/core/helpers/token.ts index eec493b98..c932a3d48 100644 --- a/packages/server/modules/core/helpers/token.ts +++ b/packages/server/modules/core/helpers/token.ts @@ -1,19 +1,18 @@ -import { +import type { TokenResourceIdentifier, TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { TokenCreateError } from '@/modules/core/errors/user' -import { TokenResourceAccessRecord } from '@/modules/core/helpers/types' -import { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' +import type { TokenResourceAccessRecord } from '@/modules/core/helpers/types' +import type { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' import { ForbiddenError } from '@/modules/shared/errors' -import { - AllScopes, +import type { MaybeNullOrUndefined, Nullable, Optional, - Scopes, ServerScope } from '@speckle/shared' +import { AllScopes, Scopes } from '@speckle/shared' import { differenceBy } from 'lodash-es' export enum RoleResourceTargets { diff --git a/packages/server/modules/core/helpers/types.ts b/packages/server/modules/core/helpers/types.ts index 9438093fe..48cdb1916 100644 --- a/packages/server/modules/core/helpers/types.ts +++ b/packages/server/modules/core/helpers/types.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' -import { BaseMetaRecord } from '@/modules/core/helpers/meta' -import { Nullable } from '@/modules/shared/helpers/typeHelper' -import { ServerRoles } from '@speckle/shared' +import type { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' +import type { BaseMetaRecord } from '@/modules/core/helpers/meta' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { ServerRoles } from '@speckle/shared' export type UserRecord = { id: string diff --git a/packages/server/modules/core/helpers/userHelper.ts b/packages/server/modules/core/helpers/userHelper.ts index 911a452dc..164b46219 100644 --- a/packages/server/modules/core/helpers/userHelper.ts +++ b/packages/server/modules/core/helpers/userHelper.ts @@ -1,4 +1,4 @@ -import { LimitedUserRecord, UserRecord } from '@/modules/core/helpers/types' +import type { LimitedUserRecord, UserRecord } from '@/modules/core/helpers/types' import { pick } from 'lodash-es' /** diff --git a/packages/server/modules/core/index.ts b/packages/server/modules/core/index.ts index 253d2f6bd..5b4e7dc50 100644 --- a/packages/server/modules/core/index.ts +++ b/packages/server/modules/core/index.ts @@ -4,7 +4,7 @@ import { shutdownResultListener } from '@/modules/core/utils/dbNotificationListener' import * as mp from '@/modules/shared/utils/mixpanel' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import staticRest from '@/modules/core/rest/static' import uploadRest from '@/modules/core/rest/upload' @@ -18,7 +18,7 @@ import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scop import db from '@/db/knex' import { registerOrUpdateRole } from '@/modules/shared/repositories/roles' import { isTestEnv } from '@/modules/shared/helpers/envHelper' -import { HooksConfig, Hook, ExecuteHooks } from '@/modules/core/hooks' +import type { HooksConfig, Hook, ExecuteHooks } from '@/modules/core/hooks' import { reportSubscriptionEventsFactory } from '@/modules/core/events/subscriptionListeners' import { getEventBus } from '@/modules/shared/services/eventBus' import { publish } from '@/modules/shared/utils/subscriptions' diff --git a/packages/server/modules/core/loaders.ts b/packages/server/modules/core/loaders.ts index 592ffe710..f73d56170 100644 --- a/packages/server/modules/core/loaders.ts +++ b/packages/server/modules/core/loaders.ts @@ -1,9 +1,10 @@ import DataLoader from 'dataloader' -import { AuthContext } from '@/modules/shared/authz' +import type { AuthContext } from '@/modules/shared/authz' import { graphDataloadersBuilders } from '@/modules/index' -import { ModularizedDataLoadersConstraint } from '@/modules/shared/helpers/graphqlHelper' -import { Knex } from 'knex' -import { isNonNullable, Optional } from '@speckle/shared' +import type { ModularizedDataLoadersConstraint } from '@/modules/shared/helpers/graphqlHelper' +import type { Knex } from 'knex' +import type { Optional } from '@speckle/shared' +import { isNonNullable } from '@speckle/shared' import { flatten, noop, isFunction } from 'lodash-es' import { db } from '@/db/knex' diff --git a/packages/server/modules/core/migrations/20220803104832_ts_test.ts b/packages/server/modules/core/migrations/20220803104832_ts_test.ts index b4d254565..eb263a430 100644 --- a/packages/server/modules/core/migrations/20220803104832_ts_test.ts +++ b/packages/server/modules/core/migrations/20220803104832_ts_test.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * This is a fake migration, only used to test TS support diff --git a/packages/server/modules/core/migrations/20220819091523_add_stream_discoverable_field.ts b/packages/server/modules/core/migrations/20220819091523_add_stream_discoverable_field.ts index 5102c77be..7994927b0 100644 --- a/packages/server/modules/core/migrations/20220819091523_add_stream_discoverable_field.ts +++ b/packages/server/modules/core/migrations/20220819091523_add_stream_discoverable_field.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'streams' const COL_NAME = 'isDiscoverable' diff --git a/packages/server/modules/core/migrations/20220823100915_migrate_streams_to_lower_precision_timestamps.ts b/packages/server/modules/core/migrations/20220823100915_migrate_streams_to_lower_precision_timestamps.ts index bf928d532..9ac25fca1 100644 --- a/packages/server/modules/core/migrations/20220823100915_migrate_streams_to_lower_precision_timestamps.ts +++ b/packages/server/modules/core/migrations/20220823100915_migrate_streams_to_lower_precision_timestamps.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * MIGRATING STREAMS TIMESTAMP FIELDS TO A LOWER PRECISION, CAUSE JS CANT HANDLE diff --git a/packages/server/modules/core/migrations/20220921084935_fix_branch_nullability.ts b/packages/server/modules/core/migrations/20220921084935_fix_branch_nullability.ts index 10a1db929..732a27413 100644 --- a/packages/server/modules/core/migrations/20220921084935_fix_branch_nullability.ts +++ b/packages/server/modules/core/migrations/20220921084935_fix_branch_nullability.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'branches' diff --git a/packages/server/modules/core/migrations/20220929141717_scheduled_tasks.ts b/packages/server/modules/core/migrations/20220929141717_scheduled_tasks.ts index cb666e909..1f4fc3bd6 100644 --- a/packages/server/modules/core/migrations/20220929141717_scheduled_tasks.ts +++ b/packages/server/modules/core/migrations/20220929141717_scheduled_tasks.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'scheduled_tasks' diff --git a/packages/server/modules/core/migrations/20221122133014_add_user_onboarding_data.ts b/packages/server/modules/core/migrations/20221122133014_add_user_onboarding_data.ts index 6b6812857..8874fd8e1 100644 --- a/packages/server/modules/core/migrations/20221122133014_add_user_onboarding_data.ts +++ b/packages/server/modules/core/migrations/20221122133014_add_user_onboarding_data.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'users' const COL_NAME = 'isOnboardingFinished' diff --git a/packages/server/modules/core/migrations/20221213124322_migrate_more_table_precisions.ts b/packages/server/modules/core/migrations/20221213124322_migrate_more_table_precisions.ts index 771bfe566..6d26cf3ca 100644 --- a/packages/server/modules/core/migrations/20221213124322_migrate_more_table_precisions.ts +++ b/packages/server/modules/core/migrations/20221213124322_migrate_more_table_precisions.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * MIGRATING TIMESTAMP FIELDS TO A LOWER PRECISION, CAUSE JS CANT HANDLE diff --git a/packages/server/modules/core/migrations/20230316091225_create_users_meta_table.ts b/packages/server/modules/core/migrations/20230316091225_create_users_meta_table.ts index c2732d231..91ecb6a72 100644 --- a/packages/server/modules/core/migrations/20230316091225_create_users_meta_table.ts +++ b/packages/server/modules/core/migrations/20230316091225_create_users_meta_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const tableName = 'users_meta' diff --git a/packages/server/modules/core/migrations/20230316132827_remove_user_is_onboarding_complete_col.ts b/packages/server/modules/core/migrations/20230316132827_remove_user_is_onboarding_complete_col.ts index 1eca5b283..7663fa05f 100644 --- a/packages/server/modules/core/migrations/20230316132827_remove_user_is_onboarding_complete_col.ts +++ b/packages/server/modules/core/migrations/20230316132827_remove_user_is_onboarding_complete_col.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'users' const COL_NAME = 'isOnboardingFinished' diff --git a/packages/server/modules/core/migrations/20230330082209_stricter_file_uploads_schema.ts b/packages/server/modules/core/migrations/20230330082209_stricter_file_uploads_schema.ts index e0e41d427..6c4ec9ca4 100644 --- a/packages/server/modules/core/migrations/20230330082209_stricter_file_uploads_schema.ts +++ b/packages/server/modules/core/migrations/20230330082209_stricter_file_uploads_schema.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'file_uploads' diff --git a/packages/server/modules/core/migrations/20230713094611_create_streams_meta_table.ts b/packages/server/modules/core/migrations/20230713094611_create_streams_meta_table.ts index cb81a65c2..567b13b4d 100644 --- a/packages/server/modules/core/migrations/20230713094611_create_streams_meta_table.ts +++ b/packages/server/modules/core/migrations/20230713094611_create_streams_meta_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const tableName = 'streams_meta' diff --git a/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts b/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts index 1ba1e7eda..b39609955 100644 --- a/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts +++ b/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_config' const COL_NAME = 'guestModeEnabled' diff --git a/packages/server/modules/core/migrations/20240109101048_create_token_resource_access_table.ts b/packages/server/modules/core/migrations/20240109101048_create_token_resource_access_table.ts index 65801251a..2043f053e 100644 --- a/packages/server/modules/core/migrations/20240109101048_create_token_resource_access_table.ts +++ b/packages/server/modules/core/migrations/20240109101048_create_token_resource_access_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'token_resource_access' const TOKENS_TABLE_NAME = 'api_tokens' diff --git a/packages/server/modules/core/migrations/20240703084247_user-emails.ts b/packages/server/modules/core/migrations/20240703084247_user-emails.ts index 8330cbee9..665363bb9 100644 --- a/packages/server/modules/core/migrations/20240703084247_user-emails.ts +++ b/packages/server/modules/core/migrations/20240703084247_user-emails.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('user_emails', (table) => { diff --git a/packages/server/modules/core/migrations/20240710154658_user_emails_backfill.ts b/packages/server/modules/core/migrations/20240710154658_user_emails_backfill.ts index 03c5b7e4c..4297eb9f4 100644 --- a/packages/server/modules/core/migrations/20240710154658_user_emails_backfill.ts +++ b/packages/server/modules/core/migrations/20240710154658_user_emails_backfill.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' import crs from 'crypto-random-string' import { scanTableFactory } from '@/modules/core/helpers/scanTable' import { coreLogger } from '@/modules/core/logger' diff --git a/packages/server/modules/core/migrations/20241101055531_project_region.ts b/packages/server/modules/core/migrations/20241101055531_project_region.ts index d38d68bef..efdf1631d 100644 --- a/packages/server/modules/core/migrations/20241101055531_project_region.ts +++ b/packages/server/modules/core/migrations/20241101055531_project_region.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('streams', (table) => { diff --git a/packages/server/modules/core/migrations/20241102055157_project_region_nofk.ts b/packages/server/modules/core/migrations/20241102055157_project_region_nofk.ts index 72f61da69..8e84be301 100644 --- a/packages/server/modules/core/migrations/20241102055157_project_region_nofk.ts +++ b/packages/server/modules/core/migrations/20241102055157_project_region_nofk.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('streams', (table) => { diff --git a/packages/server/modules/core/migrations/20250127172429_drop_closures.ts b/packages/server/modules/core/migrations/20250127172429_drop_closures.ts index 87cc97dc4..ffedc130a 100644 --- a/packages/server/modules/core/migrations/20250127172429_drop_closures.ts +++ b/packages/server/modules/core/migrations/20250127172429_drop_closures.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.dropTableIfExists('object_children_closure') diff --git a/packages/server/modules/core/migrations/20250506114120_add_streams_visibility_col.ts b/packages/server/modules/core/migrations/20250506114120_add_streams_visibility_col.ts index 91e68a310..418ca6983 100644 --- a/packages/server/modules/core/migrations/20250506114120_add_streams_visibility_col.ts +++ b/packages/server/modules/core/migrations/20250506114120_add_streams_visibility_col.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const tableName = 'streams' const isPublicCol = 'isPublic' diff --git a/packages/server/modules/core/migrations/20250514125149_remove_streams_ispublic_isdiscoverable.ts b/packages/server/modules/core/migrations/20250514125149_remove_streams_ispublic_isdiscoverable.ts index e6bc63b8d..2aacdc951 100644 --- a/packages/server/modules/core/migrations/20250514125149_remove_streams_ispublic_isdiscoverable.ts +++ b/packages/server/modules/core/migrations/20250514125149_remove_streams_ispublic_isdiscoverable.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const tableName = 'streams' const isPublicCol = 'isPublic' diff --git a/packages/server/modules/core/migrations/20250630073647_add_embed_tokens.ts b/packages/server/modules/core/migrations/20250630073647_add_embed_tokens.ts index 07db597c3..8c6882d7d 100644 --- a/packages/server/modules/core/migrations/20250630073647_add_embed_tokens.ts +++ b/packages/server/modules/core/migrations/20250630073647_add_embed_tokens.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('embed_api_tokens', (table) => { diff --git a/packages/server/modules/core/migrations/20250701164407_object_preview_attempts.ts b/packages/server/modules/core/migrations/20250701164407_object_preview_attempts.ts index 063f5f443..26d85e2a4 100644 --- a/packages/server/modules/core/migrations/20250701164407_object_preview_attempts.ts +++ b/packages/server/modules/core/migrations/20250701164407_object_preview_attempts.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const tableName = 'object_preview' const attemptsCol = 'attempts' diff --git a/packages/server/modules/core/migrations/20250722150843_lowercaseify_all_user_emails.ts b/packages/server/modules/core/migrations/20250722150843_lowercaseify_all_user_emails.ts index 7c3ea3549..ecabb90ce 100644 --- a/packages/server/modules/core/migrations/20250722150843_lowercaseify_all_user_emails.ts +++ b/packages/server/modules/core/migrations/20250722150843_lowercaseify_all_user_emails.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const usersTable = 'users' const userEmailsTable = 'user_emails' diff --git a/packages/server/modules/core/repositories/branches.ts b/packages/server/modules/core/repositories/branches.ts index 565c66b1f..e3ec0b67d 100644 --- a/packages/server/modules/core/repositories/branches.ts +++ b/packages/server/modules/core/repositories/branches.ts @@ -1,25 +1,23 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { BranchCommits, Branches, Commits, knex } from '@/modules/core/dbSchema' import { BranchNameError } from '@/modules/core/errors/branch' -import { +import type { ProjectModelsArgs, ProjectModelsTreeArgs } from '@/modules/core/graph/generated/graphql' -import { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' -import { +import type { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { BranchCommitRecord, BranchRecord, CommitRecord } from '@/modules/core/helpers/types' -import { - BatchedSelectOptions, - executeBatchedSelect -} from '@/modules/shared/helpers/dbHelper' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import { executeBatchedSelect } from '@/modules/shared/helpers/dbHelper' import crs from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { clamp, isUndefined, last, trim } from 'lodash-es' import { getMaximumProjectModelsPerPage } from '@/modules/shared/helpers/envHelper' -import { +import type { DeleteBranchById, GenerateBranchId, GetBatchedStreamBranches, @@ -48,8 +46,8 @@ import { StoreBranch, UpdateBranch } from '@/modules/core/domain/branches/operations' -import { BranchLatestCommit } from '@/modules/core/domain/commits/types' -import { ModelTreeItem } from '@/modules/core/domain/branches/types' +import type { BranchLatestCommit } from '@/modules/core/domain/commits/types' +import type { ModelTreeItem } from '@/modules/core/domain/branches/types' const tables = { branches: (db: Knex) => db(Branches.name), diff --git a/packages/server/modules/core/repositories/commits.ts b/packages/server/modules/core/repositories/commits.ts index d09056ad4..1a0363f03 100644 --- a/packages/server/modules/core/repositories/commits.ts +++ b/packages/server/modules/core/repositories/commits.ts @@ -7,29 +7,27 @@ import { StreamCommits, Streams } from '@/modules/core/dbSchema' -import { +import type { BranchCommitRecord, BranchRecord, CommitRecord, - ProjectRecordVisibility, StreamAclRecord, StreamCommitRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { clamp, uniq, uniqBy, reduce, keyBy, mapValues } from 'lodash-es' import crs from 'crypto-random-string' -import { - BatchedSelectOptions, - executeBatchedSelect -} from '@/modules/shared/helpers/dbHelper' -import { Knex } from 'knex' -import { MaybeNullOrUndefined, Optional } from '@speckle/shared' -import { +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import { executeBatchedSelect } from '@/modules/shared/helpers/dbHelper' +import type { Knex } from 'knex' +import type { MaybeNullOrUndefined, Optional } from '@speckle/shared' +import type { CommitWithStreamBranchId, CommitWithStreamBranchMetadata, LegacyStreamCommit, LegacyUserCommit } from '@/modules/core/domain/commits/types' -import { +import type { StoreCommit, DeleteCommit, DeleteCommits, diff --git a/packages/server/modules/core/repositories/embedTokens.ts b/packages/server/modules/core/repositories/embedTokens.ts index 1ae6cb50d..322b64e6d 100644 --- a/packages/server/modules/core/repositories/embedTokens.ts +++ b/packages/server/modules/core/repositories/embedTokens.ts @@ -1,7 +1,7 @@ -import { EmbedApiTokenRecord } from '@/modules/auth/helpers/types' -import { ApiTokenRecord } from '@/modules/auth/repositories' +import type { EmbedApiTokenRecord } from '@/modules/auth/helpers/types' +import type { ApiTokenRecord } from '@/modules/auth/repositories' import { ApiTokens, EmbedApiTokens } from '@/modules/core/dbSchema' -import { +import type { CountProjectEmbedTokens, ListProjectEmbedTokens, RevokeEmbedTokenById, @@ -9,7 +9,7 @@ import { StoreEmbedApiToken } from '@/modules/core/domain/tokens/operations' import { UserInputError } from '@/modules/core/errors/userinput' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { clamp } from 'lodash-es' const tables = { diff --git a/packages/server/modules/core/repositories/models.ts b/packages/server/modules/core/repositories/models.ts index 6628af785..4db5d163c 100644 --- a/packages/server/modules/core/repositories/models.ts +++ b/packages/server/modules/core/repositories/models.ts @@ -1,6 +1,6 @@ -import { StoreModel } from '@/modules/core/domain/projects/operations' +import type { StoreModel } from '@/modules/core/domain/projects/operations' import { createBranchFactory } from '@/modules/core/repositories/branches' -import { Knex } from 'knex' +import type { Knex } from 'knex' export const storeModelFactory = ({ db }: { db: Knex }): StoreModel => diff --git a/packages/server/modules/core/repositories/objects.ts b/packages/server/modules/core/repositories/objects.ts index 468d6fd7f..de2068c23 100644 --- a/packages/server/modules/core/repositories/objects.ts +++ b/packages/server/modules/core/repositories/objects.ts @@ -1,12 +1,10 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { knex, Objects } from '@/modules/core/dbSchema' -import { ObjectRecord } from '@/modules/core/helpers/types' -import { - BatchedSelectOptions, - executeBatchedSelect -} from '@/modules/shared/helpers/dbHelper' -import { Knex } from 'knex' -import { +import type { ObjectRecord } from '@/modules/core/helpers/types' +import type { BatchedSelectOptions } from '@/modules/shared/helpers/dbHelper' +import { executeBatchedSelect } from '@/modules/shared/helpers/dbHelper' +import type { Knex } from 'knex' +import type { GetBatchedStreamObjects, GetFormattedObject, GetObject, @@ -21,8 +19,8 @@ import { StoreObjectsIfNotFound, StoreSingleObjectIfNotFound } from '@/modules/core/domain/objects/operations' -import { SpeckleObject } from '@/modules/core/domain/objects/types' -import { SetOptional } from 'type-fest' +import type { SpeckleObject } from '@/modules/core/domain/objects/types' +import type { SetOptional } from 'type-fest' import { get, set, toNumber } from 'lodash-es' import { UserInputError } from '@/modules/core/errors/userinput' diff --git a/packages/server/modules/core/repositories/projects.ts b/packages/server/modules/core/repositories/projects.ts index 11638414d..59c562367 100644 --- a/packages/server/modules/core/repositories/projects.ts +++ b/packages/server/modules/core/repositories/projects.ts @@ -1,5 +1,5 @@ import { StreamAcl, Streams } from '@/modules/core/dbSchema' -import { +import type { DeleteProject, GetProject, GetUserProjectRoles, @@ -7,9 +7,9 @@ import { StoreProjectRole, StoreProjectRoles } from '@/modules/core/domain/projects/operations' -import { Project } from '@/modules/core/domain/streams/types' -import { StreamAclRecord } from '@/modules/core/helpers/types' -import { Knex } from 'knex' +import type { Project } from '@/modules/core/domain/streams/types' +import type { StreamAclRecord } from '@/modules/core/helpers/types' +import type { Knex } from 'knex' const tables = { projects: (db: Knex) => db(Streams.name), diff --git a/packages/server/modules/core/repositories/scheduledTasks.ts b/packages/server/modules/core/repositories/scheduledTasks.ts index 56fe64cdf..247f680d7 100644 --- a/packages/server/modules/core/repositories/scheduledTasks.ts +++ b/packages/server/modules/core/repositories/scheduledTasks.ts @@ -1,10 +1,10 @@ import { ScheduledTasks } from '@/modules/core/dbSchema' -import { +import type { AcquireTaskLock, ReleaseTaskLock } from '@/modules/core/domain/scheduledTasks/operations' -import { ScheduledTask } from '@/modules/core/domain/scheduledTasks/types' -import { Knex } from 'knex' +import type { ScheduledTask } from '@/modules/core/domain/scheduledTasks/types' +import type { Knex } from 'knex' const tables = { scheduledTasks: (db: Knex) => db(ScheduledTasks.name) diff --git a/packages/server/modules/core/repositories/server.ts b/packages/server/modules/core/repositories/server.ts index 3f15d4208..91b300b4b 100644 --- a/packages/server/modules/core/repositories/server.ts +++ b/packages/server/modules/core/repositories/server.ts @@ -1,14 +1,14 @@ -import { ScopeRecord } from '@/modules/auth/helpers/types' +import type { ScopeRecord } from '@/modules/auth/helpers/types' import { buildTableHelper, Scopes, UserRoles } from '@/modules/core/dbSchema' -import { +import type { GetPublicRoles, GetPublicScopes, GetServerInfo, UpdateServerInfo } from '@/modules/core/domain/server/operations' -import { ServerInfo } from '@/modules/core/domain/server/types' -import { ServerConfigRecord } from '@/modules/core/helpers/types' -import { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' +import type { ServerInfo } from '@/modules/core/domain/server/types' +import type { ServerConfigRecord } from '@/modules/core/helpers/types' +import type { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' import { getFileSizeLimitMB, getMaximumObjectSizeMB, @@ -23,7 +23,7 @@ import { wrapFactoryWithCache } from '@/modules/shared/utils/caching' import { TIME_MS } from '@speckle/shared' -import { Knex } from 'knex' +import type { Knex } from 'knex' const ServerConfig = buildTableHelper('server_config', [ 'id', diff --git a/packages/server/modules/core/repositories/streams.ts b/packages/server/modules/core/repositories/streams.ts index 4886abfc8..da5a37927 100644 --- a/packages/server/modules/core/repositories/streams.ts +++ b/packages/server/modules/core/repositories/streams.ts @@ -25,22 +25,25 @@ import { ServerAcl } from '@/modules/core/dbSchema' import { InvalidArgumentError, LogicError } from '@/modules/shared/errors' -import { Roles, StreamRoles } from '@/modules/core/helpers/mainConstants' -import { - ProjectRecordVisibility, +import type { StreamRoles } from '@/modules/core/helpers/mainConstants' +import { Roles } from '@/modules/core/helpers/mainConstants' +import type { StreamAclRecord, StreamCommitRecord, StreamFavoriteRecord, StreamRecord, UserWithRole } from '@/modules/core/helpers/types' -import { - DiscoverableStreamsSortType, +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { ProjectUpdateInput, - SortDirection, StreamUpdateInput } from '@/modules/core/graph/generated/graphql' -import { Nullable, Optional } from '@/modules/shared/helpers/typeHelper' +import { + DiscoverableStreamsSortType, + SortDirection +} from '@/modules/core/graph/generated/graphql' +import type { Nullable, Optional } from '@/modules/shared/helpers/typeHelper' import { decodeCompositeCursor, decodeCursor, @@ -49,7 +52,7 @@ import { } from '@/modules/shared/helpers/dbHelper' import dayjs from 'dayjs' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { isProjectCreateInput, mapGqlToDbProjectVisibility @@ -61,16 +64,16 @@ import { } from '@/modules/core/errors/stream' import { metaHelpers } from '@/modules/core/helpers/meta' import { removePrivateFields } from '@/modules/core/helpers/userHelper' -import { +import type { DeleteProjectRole, UpdateProject, UpsertProjectRole } from '@/modules/core/domain/projects/operations' -import { +import type { StreamWithCommitId, StreamWithOptionalRole } from '@/modules/core/domain/streams/types' -import { +import type { StoreStream, GetCommitStream, GetCommitStreams, diff --git a/packages/server/modules/core/repositories/tokens.ts b/packages/server/modules/core/repositories/tokens.ts index a643d9d9c..9b8da08a1 100644 --- a/packages/server/modules/core/repositories/tokens.ts +++ b/packages/server/modules/core/repositories/tokens.ts @@ -1,10 +1,10 @@ -import { +import type { EmbedApiTokenRecord, PersonalApiTokenRecord, TokenScopeRecord, UserServerAppTokenRecord } from '@/modules/auth/helpers/types' -import { ApiTokenRecord } from '@/modules/auth/repositories' +import type { ApiTokenRecord } from '@/modules/auth/repositories' import { ApiTokens, EmbedApiTokens, @@ -13,7 +13,7 @@ import { TokenScopes, UserServerAppTokens } from '@/modules/core/dbSchema' -import { +import type { GetApiTokenById, GetTokenResourceAccessDefinitionsById, GetTokenScopesById, @@ -28,9 +28,9 @@ import { UpdateApiToken } from '@/modules/core/domain/tokens/operations' import { UserInputError } from '@/modules/core/errors/userinput' -import { TokenResourceAccessRecord } from '@/modules/core/helpers/types' -import { ServerScope } from '@speckle/shared' -import { Knex } from 'knex' +import type { TokenResourceAccessRecord } from '@/modules/core/helpers/types' +import type { ServerScope } from '@speckle/shared' +import type { Knex } from 'knex' import { TokenRevokationError } from '@/modules/core/errors/tokens' const tables = { diff --git a/packages/server/modules/core/repositories/userEmails.ts b/packages/server/modules/core/repositories/userEmails.ts index 1e3a80b4c..13de1a53b 100644 --- a/packages/server/modules/core/repositories/userEmails.ts +++ b/packages/server/modules/core/repositories/userEmails.ts @@ -1,6 +1,6 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' import crs from 'crypto-random-string' -import { +import type { CountEmailsByUserId, CreateUserEmail, DeleteUserEmail, @@ -11,7 +11,7 @@ import { SetPrimaryUserEmail, UpdateUserEmail } from '@/modules/core/domain/userEmails/operations' -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { UserEmails } from '@/modules/core/dbSchema' import { UserEmailDeleteError, diff --git a/packages/server/modules/core/repositories/users.ts b/packages/server/modules/core/repositories/users.ts index 9c963cfc8..ae0533917 100644 --- a/packages/server/modules/core/repositories/users.ts +++ b/packages/server/modules/core/repositories/users.ts @@ -6,24 +6,25 @@ import { Users, knex } from '@/modules/core/dbSchema' -import { - ProjectRecordVisibility, +import type { ServerAclRecord, StreamAclRecord, StreamRecord, UserRecord, UserWithRole } from '@/modules/core/helpers/types' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' import { clamp, isArray, omit } from 'lodash-es' import { metaHelpers } from '@/modules/core/helpers/meta' import { UserValidationError } from '@/modules/core/errors/user' -import { Knex } from 'knex' -import { Roles, ServerRoles } from '@speckle/shared' +import type { Knex } from 'knex' +import type { ServerRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { updateUserEmailFactory } from '@/modules/core/repositories/userEmails' import { markUserEmailAsVerifiedFactory } from '@/modules/core/services/users/emailVerification' -import { UserWithOptionalRole } from '@/modules/core/domain/users/types' -import { +import type { UserWithOptionalRole } from '@/modules/core/domain/users/types' +import type { BulkLookupUsers, CountAdminUsers, CountUsers, diff --git a/packages/server/modules/core/repositories/versions.ts b/packages/server/modules/core/repositories/versions.ts index f0109665a..f9389f271 100644 --- a/packages/server/modules/core/repositories/versions.ts +++ b/packages/server/modules/core/repositories/versions.ts @@ -1,6 +1,6 @@ import { BranchCommits, knex, Branches, Commits } from '@/modules/core/dbSchema' -import { Version } from '@/modules/core/domain/commits/types' -import { Knex } from 'knex' +import type { Version } from '@/modules/core/domain/commits/types' +import type { Knex } from 'knex' import { groupBy } from 'lodash-es' export const getLastVersionsByProjectIdFactory = diff --git a/packages/server/modules/core/rest/defaultErrorHandler.ts b/packages/server/modules/core/rest/defaultErrorHandler.ts index a6f9345b4..ffb71b342 100644 --- a/packages/server/modules/core/rest/defaultErrorHandler.ts +++ b/packages/server/modules/core/rest/defaultErrorHandler.ts @@ -1,8 +1,9 @@ import { BaseError } from '@/modules/shared/errors' import { isDevEnv } from '@/modules/shared/helpers/envHelper' import { getCause } from '@/modules/shared/helpers/errorHelper' -import { Optional, ensureError } from '@speckle/shared' -import { ErrorRequestHandler } from 'express' +import type { Optional } from '@speckle/shared' +import { ensureError } from '@speckle/shared' +import type { ErrorRequestHandler } from 'express' import { get, isNumber } from 'lodash-es' import VError from 'verror' import { logger as defaultLogger } from '@/observability/logging' diff --git a/packages/server/modules/core/rest/speckleObjectsStream.ts b/packages/server/modules/core/rest/speckleObjectsStream.ts index db5a2d7d4..2b17bccec 100644 --- a/packages/server/modules/core/rest/speckleObjectsStream.ts +++ b/packages/server/modules/core/rest/speckleObjectsStream.ts @@ -1,5 +1,6 @@ import { ensureError } from '@speckle/shared' -import { Transform, TransformCallback } from 'stream' +import type { TransformCallback } from 'stream' +import { Transform } from 'stream' /** * A stream that converts database objects stream to "{id}\t{data_json}\n" stream or a json stream of obj.data fields diff --git a/packages/server/modules/core/rest/upload.ts b/packages/server/modules/core/rest/upload.ts index 893affca3..2b858d6df 100644 --- a/packages/server/modules/core/rest/upload.ts +++ b/packages/server/modules/core/rest/upload.ts @@ -5,13 +5,13 @@ import { maximumObjectUploadFileSizeMb } from '@/modules/shared/helpers/envHelpe import { ObjectHandlingError } from '@/modules/core/errors/object' import { estimateStringMegabyteSize } from '@/modules/core/utils/chunking' import { toMegabytesWith1DecimalPlace } from '@/modules/core/utils/formatting' -import { Router } from 'express' +import type { Router } from 'express' import { createObjectsBatchedAndNoClosuresFactory } from '@/modules/core/services/objects/management' import { storeObjectsIfNotFoundFactory } from '@/modules/core/repositories/objects' import { validatePermissionsWriteStreamFactory } from '@/modules/core/services/streams/auth' import { authorizeResolver, validateScopes } from '@/modules/shared' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' -import { ExecuteHooks } from '@/modules/core/hooks' +import type { ExecuteHooks } from '@/modules/core/hooks' import { logWithErr } from '@/observability/utils/logLevels' const MAX_FILE_SIZE = maximumObjectUploadFileSizeMb() * 1024 * 1024 diff --git a/packages/server/modules/core/roles.ts b/packages/server/modules/core/roles.ts index 90549d88e..4a6553e4c 100644 --- a/packages/server/modules/core/roles.ts +++ b/packages/server/modules/core/roles.ts @@ -1,4 +1,4 @@ -import { +import type { UserServerRole, UserStreamRole } from '@/modules/shared/domain/rolesAndScopes/types' diff --git a/packages/server/modules/core/services/admin.ts b/packages/server/modules/core/services/admin.ts index 2aec05ce5..160f5c011 100644 --- a/packages/server/modules/core/services/admin.ts +++ b/packages/server/modules/core/services/admin.ts @@ -1,21 +1,21 @@ -import { +import type { AdminGetProjectList, LegacyGetStreams } from '@/modules/core/domain/streams/operations' -import { +import type { AdminGetInviteList, AdminUserList, CountUsers, ListPaginatedUsersPage } from '@/modules/core/domain/users/operations' -import { ProjectRecordVisibility } from '@/modules/core/helpers/types' -import { +import type { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { CountServerInvites, QueryServerInvites } from '@/modules/serverinvites/domain/operations' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' import { BaseError } from '@/modules/shared/errors/base' -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' class CursorParsingError extends BaseError { static defaultMessage = 'Invalid cursor provided' diff --git a/packages/server/modules/core/services/branch/management.ts b/packages/server/modules/core/services/branch/management.ts index 3e6270af7..1f25bd05b 100644 --- a/packages/server/modules/core/services/branch/management.ts +++ b/packages/server/modules/core/services/branch/management.ts @@ -4,7 +4,7 @@ import { BranchDeleteError, BranchUpdateError } from '@/modules/core/errors/branch' -import { +import type { BranchCreateInput, BranchDeleteInput, BranchUpdateInput, @@ -12,10 +12,10 @@ import { DeleteModelInput, UpdateModelInput } from '@/modules/core/graph/generated/graphql' -import { BranchRecord } from '@/modules/core/helpers/types' +import type { BranchRecord } from '@/modules/core/helpers/types' import { has } from 'lodash-es' import { isBranchDeleteInput, isBranchUpdateInput } from '@/modules/core/helpers/branch' -import { +import type { CreateBranchAndNotify, DeleteBranchAndNotify, DeleteBranchById, @@ -25,11 +25,11 @@ import { UpdateBranch, UpdateBranchAndNotify } from '@/modules/core/domain/branches/operations' -import { +import type { GetStream, MarkBranchStreamUpdated } from '@/modules/core/domain/streams/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { ModelEvents } from '@/modules/core/domain/branches/events' const isBranchCreateInput = ( diff --git a/packages/server/modules/core/services/branch/retrieval.ts b/packages/server/modules/core/services/branch/retrieval.ts index bdde16174..38b18b051 100644 --- a/packages/server/modules/core/services/branch/retrieval.ts +++ b/packages/server/modules/core/services/branch/retrieval.ts @@ -1,15 +1,15 @@ -import { +import type { ModelsTreeItemCollection, ProjectModelsArgs, ProjectModelsTreeArgs, StreamBranchesArgs } from '@/modules/core/graph/generated/graphql' import { last, sum } from 'lodash-es' -import { Merge } from 'type-fest' -import { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { Merge } from 'type-fest' +import type { ModelsTreeItemGraphQLReturn } from '@/modules/core/helpers/graphTypes' import { getMaximumProjectModelsPerPage } from '@/modules/shared/helpers/envHelper' import { BadRequestError } from '@/modules/shared/errors' -import { +import type { GetModelTreeItems, GetModelTreeItemsFiltered, GetModelTreeItemsFilteredTotalCount, diff --git a/packages/server/modules/core/services/commit/batchCommitActions.ts b/packages/server/modules/core/services/commit/batchCommitActions.ts index f7da39bc2..0c1857aa3 100644 --- a/packages/server/modules/core/services/commit/batchCommitActions.ts +++ b/packages/server/modules/core/services/commit/batchCommitActions.ts @@ -1,21 +1,21 @@ -import { +import type { GetStreamBranchByName, StoreBranch } from '@/modules/core/domain/branches/operations' import { VersionEvents } from '@/modules/core/domain/commits/events' -import { +import type { DeleteCommits, GetCommits, MoveCommitsToBranch, ValidateAndBatchDeleteCommits, ValidateAndBatchMoveCommits } from '@/modules/core/domain/commits/operations' -import { GetStreams } from '@/modules/core/domain/streams/operations' +import type { GetStreams } from '@/modules/core/domain/streams/operations' import { CommitInvalidAccessError, CommitBatchUpdateError } from '@/modules/core/errors/commit' -import { +import type { CommitsDeleteInput, CommitsMoveInput, DeleteVersionsInput, @@ -23,7 +23,7 @@ import { } from '@/modules/core/graph/generated/graphql' import { Roles } from '@/modules/core/helpers/mainConstants' import { ensureError } from '@/modules/shared/helpers/errorHelper' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { difference, groupBy, has, keyBy } from 'lodash-es' type OldBatchInput = CommitsMoveInput | CommitsDeleteInput diff --git a/packages/server/modules/core/services/commit/management.ts b/packages/server/modules/core/services/commit/management.ts index 5d75ed6b6..a84f4c5cf 100644 --- a/packages/server/modules/core/services/commit/management.ts +++ b/packages/server/modules/core/services/commit/management.ts @@ -1,10 +1,10 @@ -import { +import type { GetBranchById, GetStreamBranchByName, MarkCommitBranchUpdated } from '@/modules/core/domain/branches/operations' import { VersionEvents } from '@/modules/core/domain/commits/events' -import { +import type { CreateCommitByBranchId, CreateCommitByBranchName, DeleteCommit, @@ -18,8 +18,8 @@ import { UpdateCommit, UpdateCommitAndNotify } from '@/modules/core/domain/commits/operations' -import { GetObject } from '@/modules/core/domain/objects/operations' -import { +import type { GetObject } from '@/modules/core/domain/objects/operations' +import type { GetCommitStream, GetStream, MarkCommitStreamUpdated @@ -31,14 +31,14 @@ import { CommitReceiveError, CommitUpdateError } from '@/modules/core/errors/commit' -import { +import type { CommitReceivedInput, CommitUpdateInput, MarkReceivedVersionInput, UpdateVersionInput } from '@/modules/core/graph/generated/graphql' -import { BranchRecord, CommitRecord } from '@/modules/core/helpers/types' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { BranchRecord, CommitRecord } from '@/modules/core/helpers/types' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { ensureError, Roles } from '@speckle/shared' import { has } from 'lodash-es' import { BranchNotFoundError } from '@/modules/core/errors/branch' diff --git a/packages/server/modules/core/services/commit/retrieval.ts b/packages/server/modules/core/services/commit/retrieval.ts index 8e3e56f09..50726c740 100644 --- a/packages/server/modules/core/services/commit/retrieval.ts +++ b/packages/server/modules/core/services/commit/retrieval.ts @@ -1,10 +1,10 @@ -import { Nullable, Optional } from '@speckle/shared' -import { +import type { Nullable, Optional } from '@speckle/shared' +import type { ModelVersionsFilter, StreamCommitsArgs } from '@/modules/core/graph/generated/graphql' import { BadRequestError } from '@/modules/shared/errors' -import { +import type { GetBranchCommitsTotalCount, GetBranchCommitsTotalCountByName, GetPaginatedBranchCommits, @@ -17,7 +17,7 @@ import { LegacyGetPaginatedStreamCommitsPage, PaginatedBranchCommitsParams } from '@/modules/core/domain/commits/operations' -import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' +import type { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' import { BranchNotFoundError } from '@/modules/core/errors/branch' import { getAllRegisteredDbClients } from '@/modules/multiregion/utils/dbSelector' import { getTotalVersionCountFactory } from '@/modules/core/repositories/commits' diff --git a/packages/server/modules/core/services/commit/viewerResources.ts b/packages/server/modules/core/services/commit/viewerResources.ts index d32ab679c..6f3f039da 100644 --- a/packages/server/modules/core/services/commit/viewerResources.ts +++ b/packages/server/modules/core/services/commit/viewerResources.ts @@ -1,4 +1,4 @@ -import { +import type { GetCommentsResources, GetViewerResourceGroups, GetViewerResourceItemsUngrouped, @@ -6,26 +6,27 @@ import { GetViewerResourcesForComments, GetViewerResourcesFromLegacyIdentifiers } from '@/modules/comments/domain/operations' -import { +import type { GetBranchLatestCommits, GetStreamBranchesByName } from '@/modules/core/domain/branches/operations' -import { +import type { GetAllBranchCommits, GetCommitsAndTheirBranchIds, GetSpecificBranchCommits } from '@/modules/core/domain/commits/operations' -import { GetStreamObjects } from '@/modules/core/domain/objects/operations' -import { +import type { GetStreamObjects } from '@/modules/core/domain/objects/operations' +import type { ResourceIdentifier, ResourceIdentifierInput, - ResourceType, ViewerResourceGroup, ViewerResourceItem, ViewerUpdateTrackingTarget } from '@/modules/core/graph/generated/graphql' -import { CommitRecord } from '@/modules/core/helpers/types' -import { Optional, SpeckleViewer } from '@speckle/shared' +import { ResourceType } from '@/modules/core/graph/generated/graphql' +import type { CommitRecord } from '@/modules/core/helpers/types' +import type { Optional } from '@speckle/shared' +import { SpeckleViewer } from '@speckle/shared' import { flatten, keyBy, reduce, uniq, uniqWith } from 'lodash-es' function isResourceItemEqual(a: ViewerResourceItem, b: ViewerResourceItem) { diff --git a/packages/server/modules/core/services/objects/management.ts b/packages/server/modules/core/services/objects/management.ts index fe665ba02..ea4292641 100644 --- a/packages/server/modules/core/services/objects/management.ts +++ b/packages/server/modules/core/services/objects/management.ts @@ -1,5 +1,5 @@ import crypto from 'crypto' -import { +import type { InsertableSpeckleObject, RawSpeckleObject } from '@/modules/core/domain/objects/types' @@ -10,7 +10,7 @@ import { } from '@/modules/core/utils/chunking' import { ObjectHandlingError } from '@/modules/core/errors/object' import { servicesLogger } from '@/observability/logging' -import { +import type { CreateObject, CreateObjects, CreateObjectsBatchedAndNoClosures, diff --git a/packages/server/modules/core/services/projects.ts b/packages/server/modules/core/services/projects.ts index 0ddebf855..4405424ff 100644 --- a/packages/server/modules/core/services/projects.ts +++ b/packages/server/modules/core/services/projects.ts @@ -1,6 +1,6 @@ import { ProjectEvents } from '@/modules/core/domain/projects/events' import { generateProjectName } from '@/modules/core/domain/projects/logic' -import { +import type { CreateProject, DeleteProject, GetProject, @@ -10,7 +10,10 @@ import { StoreProjectRole, WaitForRegionProject } from '@/modules/core/domain/projects/operations' -import { Project, StreamWithOptionalRole } from '@/modules/core/domain/streams/types' +import type { + Project, + StreamWithOptionalRole +} from '@/modules/core/domain/streams/types' import { ProjectQueryError, RegionalProjectCreationError @@ -19,11 +22,11 @@ import { StreamNotFoundError } from '@/modules/core/errors/stream' import { ProjectVisibility } from '@/modules/core/graph/generated/graphql' import { mapGqlToDbProjectVisibility } from '@/modules/core/helpers/project' import { isTestEnv } from '@/modules/shared/helpers/envHelper' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { retry } from '@lifeomic/attempt' import { Roles, TIME_MS } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' -import { GetExplicitProjects } from '@/modules/core/domain/streams/operations' +import type { GetExplicitProjects } from '@/modules/core/domain/streams/operations' export const createNewProjectFactory = ({ diff --git a/packages/server/modules/core/services/richTextEditorService.ts b/packages/server/modules/core/services/richTextEditorService.ts index 6f47d0eaa..836e4356d 100644 --- a/packages/server/modules/core/services/richTextEditorService.ts +++ b/packages/server/modules/core/services/richTextEditorService.ts @@ -1,6 +1,7 @@ -import { JSONContent } from '@tiptap/core' +import type { JSONContent } from '@tiptap/core' import { isString, isObjectLike, get, has } from 'lodash-es' -import { MaybeNullOrUndefined, RichTextEditor } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { RichTextEditor } from '@speckle/shared' const { isDocEmpty, documentToBasicString, convertBasicStringToDocument } = RichTextEditor diff --git a/packages/server/modules/core/services/server/tracking.ts b/packages/server/modules/core/services/server/tracking.ts index a5a32b02b..d55387b5d 100644 --- a/packages/server/modules/core/services/server/tracking.ts +++ b/packages/server/modules/core/services/server/tracking.ts @@ -1,15 +1,15 @@ -import { GetTotalModelCount } from '@/modules/core/domain/branches/operations' -import { GetTotalVersionCount } from '@/modules/core/domain/commits/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetTotalModelCount } from '@/modules/core/domain/branches/operations' +import type { GetTotalVersionCount } from '@/modules/core/domain/commits/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { getServerOrigin } from '@/modules/shared/helpers/envHelper' -import { getMixpanelClient } from '@/modules/shared/utils/mixpanel' -import { +import type { getMixpanelClient } from '@/modules/shared/utils/mixpanel' +import type { getTotalStreamCountFactory, getTotalUserCountFactory } from '@/modules/stats/repositories' -import { GetTotalWorkspaceCountFactory } from '@/modules/workspacesCore/domain/operations' +import type { GetTotalWorkspaceCountFactory } from '@/modules/workspacesCore/domain/operations' import { resolveMixpanelServerId } from '@speckle/shared' -import { Logger } from 'pino' +import type { Logger } from 'pino' export const updateServerMixpanelProfileFactory = (deps: { diff --git a/packages/server/modules/core/services/streams/access.ts b/packages/server/modules/core/services/streams/access.ts index 3ba243df6..206c81609 100644 --- a/packages/server/modules/core/services/streams/access.ts +++ b/packages/server/modules/core/services/streams/access.ts @@ -1,5 +1,5 @@ import { ProjectEvents } from '@/modules/core/domain/projects/events' -import { +import type { AddOrUpdateStreamCollaborator, GetStream, GetStreamRoles, @@ -10,17 +10,18 @@ import { SetStreamCollaborator, ValidateStreamAccess } from '@/modules/core/domain/streams/operations' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { StreamAccessUpdateError, StreamInvalidAccessError } from '@/modules/core/errors/stream' -import { StreamRecord } from '@/modules/core/helpers/types' -import { AuthorizeResolver } from '@/modules/shared/domain/operations' +import type { StreamRecord } from '@/modules/core/helpers/types' +import type { AuthorizeResolver } from '@/modules/shared/domain/operations' import { BadRequestError, ForbiddenError, LogicError } from '@/modules/shared/errors' -import { DependenciesOf } from '@/modules/shared/helpers/factory' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { ensureError, Roles, StreamRoles } from '@speckle/shared' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { StreamRoles } from '@speckle/shared' +import { ensureError, Roles } from '@speckle/shared' /** * Check if user is a stream collaborator diff --git a/packages/server/modules/core/services/streams/auth.ts b/packages/server/modules/core/services/streams/auth.ts index d111fbb35..267946307 100644 --- a/packages/server/modules/core/services/streams/auth.ts +++ b/packages/server/modules/core/services/streams/auth.ts @@ -1,11 +1,14 @@ -import { +import type { GetStream, ValidatePermissionsReadStream, ValidatePermissionsWriteStream } from '@/modules/core/domain/streams/operations' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { throwForNotHavingServerRole } from '@/modules/shared/authz' -import { AuthorizeResolver, ValidateScopes } from '@/modules/shared/domain/operations' +import type { + AuthorizeResolver, + ValidateScopes +} from '@/modules/shared/domain/operations' import { DatabaseError } from '@/modules/shared/errors' import { Roles, Scopes } from '@speckle/shared' diff --git a/packages/server/modules/core/services/streams/clone.ts b/packages/server/modules/core/services/streams/clone.ts index 2c2c37185..8015907ea 100644 --- a/packages/server/modules/core/services/streams/clone.ts +++ b/packages/server/modules/core/services/streams/clone.ts @@ -1,47 +1,47 @@ import { StreamCloneError } from '@/modules/core/errors/stream' -import { +import type { BranchCommitRecord, StreamCommitRecord, UserRecord } from '@/modules/core/helpers/types' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' -import { UserWithOptionalRole } from '@/modules/core/repositories/users' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' import { generateCommitId } from '@/modules/core/repositories/commits' import { chunk } from 'lodash-es' import { generateBranchId } from '@/modules/core/repositories/branches' import { generateCommentId } from '@/modules/comments/repositories/comments' import dayjs from 'dayjs' -import { Knex } from 'knex' -import { +import type { Knex } from 'knex' +import type { GetBatchedStreamComments, GetCommentLinks, InsertCommentLinks, InsertCommentPayload, InsertComments } from '@/modules/comments/domain/operations' -import { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' -import { +import type { SmartTextEditorValueSchema } from '@/modules/core/services/richTextEditorService' +import type { CloneStream, GetStream, StoreStream } from '@/modules/core/domain/streams/operations' -import { +import type { GetBatchedStreamObjects, StoreObjects } from '@/modules/core/domain/objects/operations' -import { +import type { GetBatchedBranchCommits, GetBatchedStreamCommits, InsertBranchCommits, InsertCommits, InsertStreamCommits } from '@/modules/core/domain/commits/operations' -import { +import type { GetBatchedStreamBranches, InsertBranches } from '@/modules/core/domain/branches/operations' -import { GetUser } from '@/modules/core/domain/users/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { ProjectEvents } from '@/modules/core/domain/projects/events' import { mapDbToGqlProjectVisibility } from '@/modules/core/helpers/project' diff --git a/packages/server/modules/core/services/streams/discoverableStreams.ts b/packages/server/modules/core/services/streams/discoverableStreams.ts index d7c37d191..218041f44 100644 --- a/packages/server/modules/core/services/streams/discoverableStreams.ts +++ b/packages/server/modules/core/services/streams/discoverableStreams.ts @@ -1,18 +1,20 @@ -import { +import type { CountDiscoverableStreams, GetDiscoverableStreams, GetDiscoverableStreamsPage, GetDiscoverableStreamsParams } from '@/modules/core/domain/streams/operations' -import { +import type { DiscoverableStreamsSortingInput, + QueryDiscoverableStreamsArgs +} from '@/modules/core/graph/generated/graphql' +import { DiscoverableStreamsSortType, - QueryDiscoverableStreamsArgs, SortDirection } from '@/modules/core/graph/generated/graphql' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { encodeDiscoverableStreamsCursor } from '@/modules/core/repositories/streams' -import { Nullable, Optional } from '@/modules/shared/helpers/typeHelper' +import type { Nullable, Optional } from '@/modules/shared/helpers/typeHelper' import { clamp } from 'lodash-es' type StreamCollection = { diff --git a/packages/server/modules/core/services/streams/favorite.ts b/packages/server/modules/core/services/streams/favorite.ts index c271da191..8fed4cea8 100644 --- a/packages/server/modules/core/services/streams/favorite.ts +++ b/packages/server/modules/core/services/streams/favorite.ts @@ -1,4 +1,4 @@ -import { +import type { CanUserFavoriteStream, FavoriteStream, GetFavoritedStreamsCount, diff --git a/packages/server/modules/core/services/streams/management.ts b/packages/server/modules/core/services/streams/management.ts index 3bcb2fd2b..2e61bacb6 100644 --- a/packages/server/modules/core/services/streams/management.ts +++ b/packages/server/modules/core/services/streams/management.ts @@ -1,11 +1,12 @@ -import { MaybeNullOrUndefined, Roles, wait } from '@speckle/shared' -import { +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { Roles, wait } from '@speckle/shared' +import type { ProjectUpdateInput, ProjectUpdateRoleInput, StreamRevokePermissionInput, StreamUpdateInput } from '@/modules/core/graph/generated/graphql' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { StreamInvalidAccessError, StreamNotFoundError, @@ -14,13 +15,11 @@ import { import { isProjectCreateInput } from '@/modules/core/helpers/project' import { has } from 'lodash-es' import { isNewResourceAllowed } from '@/modules/core/helpers/token' -import { - TokenResourceIdentifier, - TokenResourceIdentifierType -} from '@/modules/core/domain/tokens/types' -import { inviteUsersToProjectFactory } from '@/modules/serverinvites/services/projectInviteManagement' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' +import type { inviteUsersToProjectFactory } from '@/modules/serverinvites/services/projectInviteManagement' import { ProjectInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { +import type { AddOrUpdateStreamCollaborator, CreateStream, DeleteStream, @@ -36,9 +35,9 @@ import { UpdateStreamRecord, UpdateStreamRole } from '@/modules/core/domain/streams/operations' -import { StoreBranch } from '@/modules/core/domain/branches/operations' -import { DeleteAllResourceInvites } from '@/modules/serverinvites/domain/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { StoreBranch } from '@/modules/core/domain/branches/operations' +import type { DeleteAllResourceInvites } from '@/modules/serverinvites/domain/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { ProjectEvents } from '@/modules/core/domain/projects/events' export const createStreamReturnRecordFactory = diff --git a/packages/server/modules/core/services/streams/onboarding.ts b/packages/server/modules/core/services/streams/onboarding.ts index 01e558ee0..3013f89e8 100644 --- a/packages/server/modules/core/services/streams/onboarding.ts +++ b/packages/server/modules/core/services/streams/onboarding.ts @@ -1,18 +1,18 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { StreamCloneError, StreamInvalidAccessError } from '@/modules/core/errors/stream' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { isNewResourceAllowed } from '@/modules/core/helpers/token' import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' -import { +import type { CloneStream, CreateOnboardingStream, CreateStream, UpdateStreamRecord } from '@/modules/core/domain/streams/operations' -import { GetOnboardingBaseProject } from '@/modules/cross-server-sync/domain/operations' +import type { GetOnboardingBaseProject } from '@/modules/cross-server-sync/domain/operations' import type { GetUser } from '@/modules/core/domain/users/operations' export const createOnboardingStreamFactory = diff --git a/packages/server/modules/core/services/taskScheduler.ts b/packages/server/modules/core/services/taskScheduler.ts index 27e7417d3..a220bcb6f 100644 --- a/packages/server/modules/core/services/taskScheduler.ts +++ b/packages/server/modules/core/services/taskScheduler.ts @@ -2,7 +2,7 @@ import cron from 'node-cron' import crs from 'crypto-random-string' import { InvalidArgumentError } from '@/modules/shared/errors' import { type Logger, taskSchedulerLogger as logger } from '@/observability/logging' -import { +import type { AcquireTaskLock, ReleaseTaskLock, ScheduleExecution diff --git a/packages/server/modules/core/services/tokens.ts b/packages/server/modules/core/services/tokens.ts index a43dec0ed..c38bc2743 100644 --- a/packages/server/modules/core/services/tokens.ts +++ b/packages/server/modules/core/services/tokens.ts @@ -1,11 +1,12 @@ import bcrypt from 'bcrypt' import crs from 'crypto-random-string' -import { +import type { TokenResourceAccessRecord, TokenValidationResult } from '@/modules/core/helpers/types' -import { Optional, Scopes, ServerScope } from '@speckle/shared' -import { +import type { Optional, ServerScope } from '@speckle/shared' +import { Scopes } from '@speckle/shared' +import type { CountProjectEmbedTokens, CreateAndStoreAppToken, CreateAndStoreEmbedToken, @@ -26,14 +27,12 @@ import { UpdateApiToken, ValidateToken } from '@/modules/core/domain/tokens/operations' -import { GetTokenAppInfo } from '@/modules/auth/domain/operations' -import { GetUserRole } from '@/modules/core/domain/users/operations' +import type { GetTokenAppInfo } from '@/modules/auth/domain/operations' +import type { GetUserRole } from '@/modules/core/domain/users/operations' import { TokenCreateError } from '@/modules/core/errors/user' import cryptoRandomString from 'crypto-random-string' -import { - EmbedApiToken, - TokenResourceIdentifierType -} from '@/modules/core/domain/tokens/types' +import type { EmbedApiToken } from '@/modules/core/domain/tokens/types' +import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { createGetParamFromResources, parseUrlParameters diff --git a/packages/server/modules/core/services/userEmails.ts b/packages/server/modules/core/services/userEmails.ts index 46a2b30d5..fefb013c6 100644 --- a/packages/server/modules/core/services/userEmails.ts +++ b/packages/server/modules/core/services/userEmails.ts @@ -1,12 +1,12 @@ -import { +import type { CreateUserEmail, FindEmail, ValidateAndCreateUserEmail } from '@/modules/core/domain/userEmails/operations' -import { ensureNoPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' +import type { ensureNoPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' import { UserEmailAlreadyExistsError } from '@/modules/core/errors/userEmails' -import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' -import { RequestNewEmailVerification } from '@/modules/emails/domain/operations' +import type { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' +import type { RequestNewEmailVerification } from '@/modules/emails/domain/operations' export const validateAndCreateUserEmailFactory = (deps: { diff --git a/packages/server/modules/core/services/users/emailVerification.ts b/packages/server/modules/core/services/users/emailVerification.ts index ba016cefe..cb3f63bcc 100644 --- a/packages/server/modules/core/services/users/emailVerification.ts +++ b/packages/server/modules/core/services/users/emailVerification.ts @@ -1,8 +1,8 @@ -import { +import type { MarkUserEmailAsVerified, UpdateUserEmail } from '@/modules/core/domain/userEmails/operations' -import { +import type { DeleteVerifications, GetPendingVerificationByEmail } from '@/modules/emails/domain/operations' diff --git a/packages/server/modules/core/services/users/legacyAdminUsersList.ts b/packages/server/modules/core/services/users/legacyAdminUsersList.ts index f46cfa0c9..607c48d69 100644 --- a/packages/server/modules/core/services/users/legacyAdminUsersList.ts +++ b/packages/server/modules/core/services/users/legacyAdminUsersList.ts @@ -1,16 +1,16 @@ -import { +import type { LegacyAdminUsersListItem, LegacyAdminUsersPaginationParams, LegacyGetAdminUsersListCollection, LegacyGetPaginatedUsers, LegacyGetPaginatedUsersCount } from '@/modules/core/domain/users/operations' -import { UserRecord } from '@/modules/core/helpers/userHelper' -import { +import type { UserRecord } from '@/modules/core/helpers/userHelper' +import type { CountServerInvites, FindServerInvites } from '@/modules/serverinvites/domain/operations' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' import { resolveTarget } from '@/modules/serverinvites/helpers/core' import { clamp } from 'lodash-es' diff --git a/packages/server/modules/core/services/users/management.ts b/packages/server/modules/core/services/users/management.ts index 46404ea22..40687f4e5 100644 --- a/packages/server/modules/core/services/users/management.ts +++ b/packages/server/modules/core/services/users/management.ts @@ -1,4 +1,4 @@ -import { +import type { ChangeUserPassword, ChangeUserRole, CountAdminUsers, @@ -26,39 +26,34 @@ import { PasswordTooShortError, UserInputError } from '@/modules/core/errors/userinput' -import { UserUpdateInput } from '@/modules/core/graph/generated/graphql' +import type { UserUpdateInput } from '@/modules/core/graph/generated/graphql' import type { UserRecord } from '@/modules/core/helpers/userHelper' import { sanitizeImageUrl } from '@/modules/shared/helpers/sanitization' -import { - blockedDomains, - isNullOrUndefined, - NullableKeysToOptional, - Roles, - ServerRoles -} from '@speckle/shared' +import type { NullableKeysToOptional, ServerRoles } from '@speckle/shared' +import { blockedDomains, isNullOrUndefined, Roles } from '@speckle/shared' import { pick } from 'lodash-es' import bcrypt from 'bcrypt' import crs from 'crypto-random-string' -import { +import type { FindEmail, FindPrimaryEmailForUser, ValidateAndCreateUserEmail } from '@/modules/core/domain/userEmails/operations' -import { +import type { DeleteStreamRecord, GetUserDeletableStreams } from '@/modules/core/domain/streams/operations' import type { Logger } from '@/observability/logging' -import { DeleteAllUserInvites } from '@/modules/serverinvites/domain/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { DeleteAllUserInvites } from '@/modules/serverinvites/domain/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { UserEvents } from '@/modules/core/domain/users/events' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { GetUserWorkspaceSeatsFactory } from '@/modules/workspacesCore/domain/operations' +import type { GetUserWorkspaceSeatsFactory } from '@/modules/workspacesCore/domain/operations' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' import { ProjectEvents } from '@/modules/core/domain/projects/events' -import { QueryAllProjects } from '@/modules/core/domain/projects/operations' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { QueryAllProjects } from '@/modules/core/domain/projects/operations' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' const { FF_NO_PERSONAL_EMAILS_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/core/services/users/tracking.ts b/packages/server/modules/core/services/users/tracking.ts index bec13cd2d..b002aa6d0 100644 --- a/packages/server/modules/core/services/users/tracking.ts +++ b/packages/server/modules/core/services/users/tracking.ts @@ -1,19 +1,19 @@ -import { updateMailchimpMemberTags } from '@/modules/auth/services/mailchimp' -import { GetUserAuthoredCommitCounts } from '@/modules/core/domain/commits/operations' -import { GetImplicitUserProjectsCountFactory } from '@/modules/core/domain/streams/operations' -import { +import type { updateMailchimpMemberTags } from '@/modules/auth/services/mailchimp' +import type { GetUserAuthoredCommitCounts } from '@/modules/core/domain/commits/operations' +import type { GetImplicitUserProjectsCountFactory } from '@/modules/core/domain/streams/operations' +import type { GetUser, SetUserOnboardingChoices, UpdateUserMixpanelProfile } from '@/modules/core/domain/users/operations' -import { +import type { getMailchimpOnboardingIds, getMailchimpStatus } from '@/modules/shared/helpers/envHelper' -import { getMixpanelClient } from '@/modules/shared/utils/mixpanel' -import { GetUserWorkspaceCountFactory } from '@/modules/workspacesCore/domain/operations' +import type { getMixpanelClient } from '@/modules/shared/utils/mixpanel' +import type { GetUserWorkspaceCountFactory } from '@/modules/workspacesCore/domain/operations' import { resolveDistinctId } from '@speckle/shared' -import { Logger } from 'pino' +import type { Logger } from 'pino' export const updateUserMixpanelProfileFactory = (deps: { diff --git a/packages/server/modules/core/tests/apitokens.spec.ts b/packages/server/modules/core/tests/apitokens.spec.ts index 8db166de9..599e198ef 100644 --- a/packages/server/modules/core/tests/apitokens.spec.ts +++ b/packages/server/modules/core/tests/apitokens.spec.ts @@ -1,5 +1,6 @@ import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { AdminProjectListDocument, AppTokenCreateDocument, @@ -10,13 +11,11 @@ import { RevokeTokenDocument, TokenAppInfoDocument } from '@/modules/core/graph/generated/graphql' -import { - TestApolloServer, - createTestContext, - testApolloServer -} from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { AllScopes, Roles, Scopes } from '@/modules/core/helpers/mainConstants' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/core/tests/batchCommits.spec.ts b/packages/server/modules/core/tests/batchCommits.spec.ts index 90de41156..1a1a51233 100644 --- a/packages/server/modules/core/tests/batchCommits.spec.ts +++ b/packages/server/modules/core/tests/batchCommits.spec.ts @@ -15,16 +15,16 @@ import { } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { deleteCommits, moveCommits } from '@/test/graphql/commits' -import { - createAuthedTestContext, - createTestContext, - ServerAndContext -} from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext, createTestContext } from '@/test/graphqlHelper' import { truncateTables } from '@/test/hooks' -import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommits } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { times } from 'lodash-es' diff --git a/packages/server/modules/core/tests/commitsGraphql.spec.ts b/packages/server/modules/core/tests/commitsGraphql.spec.ts index 28f3f0cdc..3b4c691e1 100644 --- a/packages/server/modules/core/tests/commitsGraphql.spec.ts +++ b/packages/server/modules/core/tests/commitsGraphql.spec.ts @@ -12,14 +12,17 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { readOtherUsersCommits, readOwnCommits } from '@/test/graphql/commits' -import { createAuthedTestContext, ServerAndContext } from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext } from '@/test/graphqlHelper' import { truncateTables } from '@/test/hooks' import { createTestCommit } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' const getUser = getUserFactory({ db }) diff --git a/packages/server/modules/core/tests/embedTokens.spec.ts b/packages/server/modules/core/tests/embedTokens.spec.ts index 96046c60d..604b9c305 100644 --- a/packages/server/modules/core/tests/embedTokens.spec.ts +++ b/packages/server/modules/core/tests/embedTokens.spec.ts @@ -4,23 +4,20 @@ import { createRandomEmail, createRandomPassword } from '@/modules/core/helpers/testHelpers' -import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { CreateEmbedTokenDocument, GetActiveUserDocument, GetProjectDocument, GetWorkspaceDocument } from '@/modules/core/graph/generated/graphql' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { Roles, Scopes } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/core/tests/favoriteStreams.spec.ts b/packages/server/modules/core/tests/favoriteStreams.spec.ts index d3597b69b..68ba4b1fd 100644 --- a/packages/server/modules/core/tests/favoriteStreams.spec.ts +++ b/packages/server/modules/core/tests/favoriteStreams.spec.ts @@ -6,11 +6,11 @@ import { StreamFavorites, Streams, Users } from '@/modules/core/dbSchema' import { truncateTables } from '@/test/hooks' import gql from 'graphql-tag' import { sleep } from '@/test/helpers' +import type { ServerAndContext } from '@/test/graphqlHelper' import { createAuthedTestContext, createTestContext, - executeOperation, - ServerAndContext + executeOperation } from '@/test/graphqlHelper' import { getStreamFactory, diff --git a/packages/server/modules/core/tests/generic.spec.ts b/packages/server/modules/core/tests/generic.spec.ts index 4f9574bbc..4128ade25 100644 --- a/packages/server/modules/core/tests/generic.spec.ts +++ b/packages/server/modules/core/tests/generic.spec.ts @@ -5,7 +5,8 @@ import { beforeEachContext } from '@/test/hooks' import { validateScopes, authorizeResolver } from '@/modules/shared' import { buildContext } from '@/modules/shared/middleware' -import { AvailableRoles, Roles, Scopes, ServerRoles } from '@speckle/shared' +import type { AvailableRoles, ServerRoles } from '@speckle/shared' +import { Roles, Scopes } from '@speckle/shared' import { throwForNotHavingServerRole } from '@/modules/shared/authz' import { ForbiddenError } from '@/modules/shared/errors' import { @@ -65,7 +66,7 @@ import { addOrUpdateStreamCollaboratorFactory, validateStreamAccessFactory } from '@/modules/core/services/streams/access' -import { Request } from 'express' +import type { Request } from 'express' const buildFinalizeProjectInvite = () => finalizeResourceInviteFactory({ diff --git a/packages/server/modules/core/tests/graph.spec.ts b/packages/server/modules/core/tests/graph.spec.ts index 4a2f17d65..d7a7dd90f 100644 --- a/packages/server/modules/core/tests/graph.spec.ts +++ b/packages/server/modules/core/tests/graph.spec.ts @@ -58,12 +58,13 @@ import { } from '@/modules/core/repositories/tokens' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getEventBus } from '@/modules/shared/services/eventBus' -import { Express } from 'express' -import { Server } from 'http' +import type { Express } from 'express' +import type { Server } from 'http' import { omit } from 'lodash-es' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' const { FF_PERSONAL_PROJECTS_LIMITS_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/core/tests/health.spec.ts b/packages/server/modules/core/tests/health.spec.ts index 19922a9a3..aec4b5f84 100644 --- a/packages/server/modules/core/tests/health.spec.ts +++ b/packages/server/modules/core/tests/health.spec.ts @@ -1,5 +1,5 @@ /* istanbul ignore file */ -import { ReadinessHandler } from '@/healthchecks/types' +import type { ReadinessHandler } from '@/healthchecks/types' import { beforeEachContext } from '@/test/hooks' import { expect } from 'chai' import request from 'supertest' diff --git a/packages/server/modules/core/tests/helpers/creation.ts b/packages/server/modules/core/tests/helpers/creation.ts index 0b38433ce..ab54c03d3 100644 --- a/packages/server/modules/core/tests/helpers/creation.ts +++ b/packages/server/modules/core/tests/helpers/creation.ts @@ -1,10 +1,10 @@ import cryptoRandomString from 'crypto-random-string' -import { Project } from '@/modules/core/domain/streams/types' +import type { Project } from '@/modules/core/domain/streams/types' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { assign } from 'lodash-es' -import { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' -import { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' -import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' export const buildTestProject = (overrides?: Partial): Project => assign( diff --git a/packages/server/modules/core/tests/integration/findUsers.spec.ts b/packages/server/modules/core/tests/integration/findUsers.spec.ts index 32c7900f8..3ad2a2305 100644 --- a/packages/server/modules/core/tests/integration/findUsers.spec.ts +++ b/packages/server/modules/core/tests/integration/findUsers.spec.ts @@ -33,8 +33,10 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { getServerInfoFactory } from '@/modules/core/repositories/server' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { getEventBus } from '@/modules/shared/services/eventBus' const getServerInfo = getServerInfoFactory({ db }) diff --git a/packages/server/modules/core/tests/integration/limits.graph.spec.ts b/packages/server/modules/core/tests/integration/limits.graph.spec.ts index c7817675d..19e9dde0d 100644 --- a/packages/server/modules/core/tests/integration/limits.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/limits.graph.spec.ts @@ -1,8 +1,14 @@ -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { expectToThrow, itEach } from '@/test/assertionHelper' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { + LimitedPersonalProjectCommentFragment, + LimitedPersonalProjectVersionFragment, + LimitedPersonalStreamCommitFragment +} from '@/modules/core/graph/generated/graphql' import { CreateProjectDocument, CreateProjectInviteDocument, @@ -11,16 +17,16 @@ import { GetLimitedPersonalProjectCommentsDocument, GetLimitedPersonalProjectVersionDocument, GetLimitedPersonalProjectVersionsDocument, - GetLimitedPersonalStreamCommitsDocument, - LimitedPersonalProjectCommentFragment, - LimitedPersonalProjectVersionFragment, - LimitedPersonalStreamCommitFragment + GetLimitedPersonalStreamCommitsDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { createTestComment } from '@/test/speckle-helpers/commentHelper' -import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommits } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import dayjs from 'dayjs' import { flatten } from 'lodash-es' diff --git a/packages/server/modules/core/tests/integration/objects.rest.spec.ts b/packages/server/modules/core/tests/integration/objects.rest.spec.ts index 9911183d3..f8378a64a 100644 --- a/packages/server/modules/core/tests/integration/objects.rest.spec.ts +++ b/packages/server/modules/core/tests/integration/objects.rest.spec.ts @@ -28,9 +28,10 @@ import { import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { beforeEachContext } from '@/test/hooks' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import request from 'supertest' -import { Express } from 'express' +import type { Express } from 'express' import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens' import { storeApiTokenFactory, diff --git a/packages/server/modules/core/tests/integration/objects.spec.ts b/packages/server/modules/core/tests/integration/objects.spec.ts index 42aa6f637..53bf9ae27 100644 --- a/packages/server/modules/core/tests/integration/objects.spec.ts +++ b/packages/server/modules/core/tests/integration/objects.spec.ts @@ -1,13 +1,13 @@ import { createRandomEmail } from '@/modules/core/helpers/testHelpers' import { getStreamObjectCountFactory } from '@/modules/core/repositories/objects' -import { BasicTestUser, createTestUser } from '@/test/authHelper' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' -import { - BasicTestCommit, - createTestCommit, - createTestObject -} from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommit, createTestObject } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import cryptoRandomString from 'crypto-random-string' import { db } from '@/db/knex' import { expect } from 'chai' diff --git a/packages/server/modules/core/tests/integration/objectsStream.rest.spec.ts b/packages/server/modules/core/tests/integration/objectsStream.rest.spec.ts index 8e653bdcc..01df0fed6 100644 --- a/packages/server/modules/core/tests/integration/objectsStream.rest.spec.ts +++ b/packages/server/modules/core/tests/integration/objectsStream.rest.spec.ts @@ -30,7 +30,8 @@ import { } from '@/modules/serverinvites/repositories/serverInvites' import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvites/services/processing' import { beforeEachContext, initializeTestServer } from '@/test/hooks' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens' import { storeApiTokenFactory, @@ -41,10 +42,11 @@ import { import { Scopes } from '@speckle/shared' import { getEventBus } from '@/modules/shared/services/eventBus' import { generateManyObjects } from '@/test/helpers' -import { RawSpeckleObject } from '@/modules/core/domain/objects/types' +import type { RawSpeckleObject } from '@/modules/core/domain/objects/types' import { storeObjectsIfNotFoundFactory } from '@/modules/core/repositories/objects' import { expect } from 'chai' -import { parse, Parser } from 'csv-parse' +import type { Parser } from 'csv-parse' +import { parse } from 'csv-parse' import { createReadStream } from 'fs' import { createObjectsBatchedAndNoClosuresFactory } from '@/modules/core/services/objects/management' diff --git a/packages/server/modules/core/tests/integration/projectRepositories.spec.ts b/packages/server/modules/core/tests/integration/projectRepositories.spec.ts index f6fc5d542..05aa51fea 100644 --- a/packages/server/modules/core/tests/integration/projectRepositories.spec.ts +++ b/packages/server/modules/core/tests/integration/projectRepositories.spec.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Project } from '@/modules/core/domain/streams/types' +import type { Project } from '@/modules/core/domain/streams/types' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { deleteProjectFactory, diff --git a/packages/server/modules/core/tests/integration/projects.graph.spec.ts b/packages/server/modules/core/tests/integration/projects.graph.spec.ts index b9187cca1..def9f10e9 100644 --- a/packages/server/modules/core/tests/integration/projects.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/projects.graph.spec.ts @@ -1,4 +1,5 @@ -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { CreateProjectDocument, ProjectVisibility @@ -6,7 +7,8 @@ import { import { Roles } from '@/modules/core/helpers/mainConstants' import { expect } from 'chai' import { beforeEachContext } from '@/test/hooks' -import { TestApolloServer, testApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' const { FF_PERSONAL_PROJECTS_LIMITS_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/core/tests/integration/repositories/project.spec.ts b/packages/server/modules/core/tests/integration/repositories/project.spec.ts index cd3841e53..a848e5251 100644 --- a/packages/server/modules/core/tests/integration/repositories/project.spec.ts +++ b/packages/server/modules/core/tests/integration/repositories/project.spec.ts @@ -1,7 +1,8 @@ -import { BasicTestUser, buildBasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { buildBasicTestUser, createTestUser } from '@/test/authHelper' import { buildBasicTestProject } from '@/modules/core/tests/helpers/creation' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' diff --git a/packages/server/modules/core/tests/integration/repositories/versions.spec.ts b/packages/server/modules/core/tests/integration/repositories/versions.spec.ts index ea2002749..8bb46f4ee 100644 --- a/packages/server/modules/core/tests/integration/repositories/versions.spec.ts +++ b/packages/server/modules/core/tests/integration/repositories/versions.spec.ts @@ -5,7 +5,8 @@ import { } from '@/modules/core/helpers/testHelpers' import { getLastVersionsByProjectIdFactory } from '@/modules/core/repositories/versions' import { createTestUser } from '@/test/authHelper' -import { BasicTestCommit, createTestCommit } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommit } from '@/test/speckle-helpers/commitHelper' import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' diff --git a/packages/server/modules/core/tests/integration/scanTable.spec.ts b/packages/server/modules/core/tests/integration/scanTable.spec.ts index 203f718c0..e0d9a8baf 100644 --- a/packages/server/modules/core/tests/integration/scanTable.spec.ts +++ b/packages/server/modules/core/tests/integration/scanTable.spec.ts @@ -1,6 +1,6 @@ import { scanTableFactory } from '@/modules/core/helpers/scanTable' import { db } from '@/db/knex' -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/types' import { Users } from '@/modules/core/dbSchema' import { expect } from 'chai' import crs from 'crypto-random-string' diff --git a/packages/server/modules/core/tests/integration/subs.graph.spec.ts b/packages/server/modules/core/tests/integration/subs.graph.spec.ts index a21eb501a..ee7121c6a 100644 --- a/packages/server/modules/core/tests/integration/subs.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/subs.graph.spec.ts @@ -49,12 +49,11 @@ import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { deleteAllResourceInvitesFactory } from '@/modules/serverinvites/repositories/serverInvites' import { authorizeResolver } from '@/modules/shared' import { getEventBus } from '@/modules/shared/services/eventBus' -import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { itEach } from '@/test/assertionHelper' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { OnBranchCreatedDocument, OnBranchDeletedDocument, @@ -74,26 +73,29 @@ import { ProjectVersionsUpdatedMessageType, UserProjectsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' -import { +import type { TestApolloSubscriptionClient, - testApolloSubscriptionServer, TestApolloSubscriptionServer } from '@/test/graphqlHelper' +import { testApolloSubscriptionServer } from '@/test/graphqlHelper' import { beforeEachContext, getMainTestRegionKey } from '@/test/hooks' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' import { - BasicTestBranch, createTestBranch, createTestBranches } from '@/test/speckle-helpers/branchHelper' -import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommits } from '@/test/speckle-helpers/commitHelper' import { TestError } from '@/test/speckle-helpers/error' import { isMultiRegionTestMode, waitForRegionUsers } from '@/test/speckle-helpers/regions' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { faker } from '@faker-js/faker' -import { Optional, Roles, Scopes, ServerScope, WorkspacePlans } from '@speckle/shared' +import type { Optional, ServerScope } from '@speckle/shared' +import { Roles, Scopes, WorkspacePlans } from '@speckle/shared' import { expect } from 'chai' const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver }) diff --git a/packages/server/modules/core/tests/integration/userEmails.spec.ts b/packages/server/modules/core/tests/integration/userEmails.spec.ts index 88ec95775..b57662bb3 100644 --- a/packages/server/modules/core/tests/integration/userEmails.spec.ts +++ b/packages/server/modules/core/tests/integration/userEmails.spec.ts @@ -28,8 +28,9 @@ import { updateUserEmailFactory } from '@/modules/core/repositories/userEmails' import { expectToThrow } from '@/test/assertionHelper' -import { MaybeNullOrUndefined } from '@speckle/shared' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { UserEmails, Users } from '@/modules/core/dbSchema' import { UserEmailPrimaryUnverifiedError } from '@/modules/core/errors/userEmails' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' diff --git a/packages/server/modules/core/tests/integration/userMeta.graph.spec.ts b/packages/server/modules/core/tests/integration/userMeta.graph.spec.ts index d97cbb84c..304fc41ef 100644 --- a/packages/server/modules/core/tests/integration/userMeta.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/userMeta.graph.spec.ts @@ -1,4 +1,5 @@ -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { GetLegacyProjectsExplainerCollapsedDocument, GetNewWorkspaceExplainerDismissedDocument, @@ -7,7 +8,8 @@ import { SetNewWorkspaceExplainerDismissedDocument, SetSpeckleConBannerDismissedDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { expect } from 'chai' diff --git a/packages/server/modules/core/tests/integration/users.graph.spec.ts b/packages/server/modules/core/tests/integration/users.graph.spec.ts index e94b6462f..9bf757927 100644 --- a/packages/server/modules/core/tests/integration/users.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/users.graph.spec.ts @@ -1,25 +1,21 @@ import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspaces, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' -import { - UsersRetrievalDocument, - UsersRetrievalInput -} from '@/modules/core/graph/generated/graphql' -import { - ExecuteOperationOptions, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' +import type { UsersRetrievalInput } from '@/modules/core/graph/generated/graphql' +import { UsersRetrievalDocument } from '@/modules/core/graph/generated/graphql' +import type { ExecuteOperationOptions, TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext, getMainTestRegionKeyIfMultiRegion } from '@/test/hooks' import { waitForRegionUsers } from '@/test/speckle-helpers/regions' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { addAllToStream, - BasicTestStream, createTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' diff --git a/packages/server/modules/core/tests/integration/versions.graph.spec.ts b/packages/server/modules/core/tests/integration/versions.graph.spec.ts index a912753e7..26292c6bb 100644 --- a/packages/server/modules/core/tests/integration/versions.graph.spec.ts +++ b/packages/server/modules/core/tests/integration/versions.graph.spec.ts @@ -39,18 +39,17 @@ import { import { createUserFactory } from '@/modules/core/services/users/management' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { WorkspaceReadOnlyError } from '@/modules/gatekeeper/errors/billing' -import { CreateVersionInput } from '@/modules/core/graph/generated/graphql' +import type { CreateVersionInput } from '@/modules/core/graph/generated/graphql' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { getEventBus } from '@/modules/shared/services/eventBus' import { buildBasicTestUser, createTestUser, login } from '@/test/authHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' -import { - BasicTestCommit, - createTestCommit, - createTestObject -} from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommit, createTestObject } from '@/test/speckle-helpers/commitHelper' import { BranchCommits, Commits, StreamCommits } from '@/modules/core/dbSchema' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' import dayjs from 'dayjs' import { buildBasicTestWorkspace, @@ -61,7 +60,7 @@ import { buildBasicTestProject, buildBasicTestVersion } from '@/modules/core/tests/helpers/creation' -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' const getServerInfo = getServerInfoFactory({ db }) const getUser = legacyGetUserFactory({ db }) diff --git a/packages/server/modules/core/tests/models.spec.ts b/packages/server/modules/core/tests/models.spec.ts index b7e18ea8b..241ef0a4f 100644 --- a/packages/server/modules/core/tests/models.spec.ts +++ b/packages/server/modules/core/tests/models.spec.ts @@ -1,16 +1,17 @@ +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { CreateModelInput } from '@/modules/core/graph/generated/graphql' import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { - CreateModelInput, CreateProjectModelDocument, FindProjectModelByNameDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { omit } from 'lodash-es' diff --git a/packages/server/modules/core/tests/objects.spec.ts b/packages/server/modules/core/tests/objects.spec.ts index e94d8b5c6..98f8aca4c 100644 --- a/packages/server/modules/core/tests/objects.spec.ts +++ b/packages/server/modules/core/tests/objects.spec.ts @@ -78,7 +78,7 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' -import { ObjectRecord } from '@/modules/core/helpers/types' +import type { ObjectRecord } from '@/modules/core/helpers/types' const sampleCommit = JSON.parse(`{ "Objects": [ diff --git a/packages/server/modules/core/tests/projects.spec.ts b/packages/server/modules/core/tests/projects.spec.ts index fae343c13..1314990f9 100644 --- a/packages/server/modules/core/tests/projects.spec.ts +++ b/packages/server/modules/core/tests/projects.spec.ts @@ -1,13 +1,16 @@ import { expect } from 'chai' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { beforeEachContext } from '@/test/hooks' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' +import type { ProjectCreateInput } from '@/modules/core/graph/generated/graphql' import { BatchDeleteProjectsDocument, CreateProjectDocument, GetProjectObjectDocument, - ProjectCreateInput, ProjectVisibility } from '@/modules/core/graph/generated/graphql' import { createTestObject } from '@/test/speckle-helpers/commitHelper' diff --git a/packages/server/modules/core/tests/ratelimiter.spec.ts b/packages/server/modules/core/tests/ratelimiter.spec.ts index c4b14a51b..3dfb2ca36 100644 --- a/packages/server/modules/core/tests/ratelimiter.spec.ts +++ b/packages/server/modules/core/tests/ratelimiter.spec.ts @@ -1,15 +1,17 @@ /* istanbul ignore file */ import { TIME } from '@speckle/shared' +import type { + RateLimitBreached, + RateLimits, + RateLimiterMapping, + RateLimitAction +} from '@/modules/core/utils/ratelimiter' import { getRateLimitResult, isRateLimitBreached, getActionForPath, - RateLimitBreached, - RateLimits, createConsumer, - RateLimiterMapping, allActions, - RateLimitAction, throwIfRateLimitedFactory } from '@/modules/core/utils/ratelimiter' import { expect } from 'chai' diff --git a/packages/server/modules/core/tests/streams.spec.ts b/packages/server/modules/core/tests/streams.spec.ts index 8e9d80222..977334b76 100644 --- a/packages/server/modules/core/tests/streams.spec.ts +++ b/packages/server/modules/core/tests/streams.spec.ts @@ -7,14 +7,15 @@ import { getUserStreams, leaveStream } from '@/test/graphql/streams' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' import { - StreamWithOptionalRole, createStreamFactory, deleteStreamFactory, getStreamFactory, @@ -28,19 +29,17 @@ import { } from '@/modules/core/repositories/streams' import { has, times } from 'lodash-es' import { Streams } from '@/modules/core/dbSchema' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' import { sleep } from '@/test/helpers' -import dayjs, { Dayjs } from 'dayjs' -import { +import type { Dayjs } from 'dayjs' +import dayjs from 'dayjs' +import type { GetLimitedUserStreamsQuery, GetUserStreamsQuery } from '@/modules/core/graph/generated/graphql' -import { Get } from 'type-fest' -import { - createAuthedTestContext, - createTestContext, - ServerAndContext -} from '@/test/graphqlHelper' +import type { Get } from 'type-fest' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext, createTestContext } from '@/test/graphqlHelper' import { buildApolloServer } from '@/app' import { createBranchFactory, diff --git a/packages/server/modules/core/tests/unit/projects.spec.ts b/packages/server/modules/core/tests/unit/projects.spec.ts index e52e92d02..fccf8a743 100644 --- a/packages/server/modules/core/tests/unit/projects.spec.ts +++ b/packages/server/modules/core/tests/unit/projects.spec.ts @@ -1,5 +1,5 @@ import { ProjectEvents } from '@/modules/core/domain/projects/events' -import { Project } from '@/modules/core/domain/streams/types' +import type { Project } from '@/modules/core/domain/streams/types' import { RegionalProjectCreationError } from '@/modules/core/errors/projects' import { StreamNotFoundError } from '@/modules/core/errors/stream' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' @@ -9,7 +9,8 @@ import { } from '@/modules/core/services/projects' import { isSpecificEventPayload } from '@/modules/shared/services/eventBus' import { expectToThrow } from '@/test/assertionHelper' -import { Roles, StreamRoles } from '@speckle/shared' +import type { StreamRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/core/tests/usersAdminList.spec.ts b/packages/server/modules/core/tests/usersAdminList.spec.ts index 68fac78f0..767b90570 100644 --- a/packages/server/modules/core/tests/usersAdminList.spec.ts +++ b/packages/server/modules/core/tests/usersAdminList.spec.ts @@ -6,9 +6,10 @@ import { getAdminUsersList } from '@/test/graphql/users' import { buildApolloServer } from '@/app' import { Roles } from '@/modules/core/helpers/mainConstants' import { expect } from 'chai' -import { Optional } from '@/modules/shared/helpers/typeHelper' +import type { Optional } from '@/modules/shared/helpers/typeHelper' import { wait } from '@speckle/shared' -import { createAuthedTestContext, ServerAndContext } from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext } from '@/test/graphqlHelper' import { createStreamFactory, getStreamFactory, diff --git a/packages/server/modules/core/tests/usersGraphql.spec.ts b/packages/server/modules/core/tests/usersGraphql.spec.ts index 2aa92193a..bb67ca623 100644 --- a/packages/server/modules/core/tests/usersGraphql.spec.ts +++ b/packages/server/modules/core/tests/usersGraphql.spec.ts @@ -1,5 +1,6 @@ import { Users } from '@/modules/core/dbSchema' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { getActiveUser, getOtherUser } from '@/test/graphql/users' import { beforeEachContext, truncateTables } from '@/test/hooks' import { expect } from 'chai' @@ -13,10 +14,10 @@ import { findEmailFactory } from '@/modules/core/repositories/userEmails' import { db } from '@/db/knex' +import type { ServerAndContext } from '@/test/graphqlHelper' import { createAuthedTestContext, createTestContext, - ServerAndContext, testApolloServer } from '@/test/graphqlHelper' import { GetActiveUserEmailsDocument } from '@/modules/core/graph/generated/graphql' diff --git a/packages/server/modules/core/tests/versions.spec.ts b/packages/server/modules/core/tests/versions.spec.ts index 052c3a788..dfface36b 100644 --- a/packages/server/modules/core/tests/versions.spec.ts +++ b/packages/server/modules/core/tests/versions.spec.ts @@ -1,20 +1,23 @@ import { StreamActionTypes } from '@/modules/activitystream/helpers/types' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { - CreateProjectVersionDocument, +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { CreateVersionInput, - MarkProjectVersionReceivedDocument, MarkReceivedVersionInput } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import { + CreateProjectVersionDocument, + MarkProjectVersionReceivedDocument +} from '@/modules/core/graph/generated/graphql' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { getStreamActivities } from '@/test/speckle-helpers/activityStreamHelper' -import { - BasicTestBranch, - createTestBranches -} from '@/test/speckle-helpers/branchHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranches } from '@/test/speckle-helpers/branchHelper' import { createTestObject } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { omit } from 'lodash-es' diff --git a/packages/server/modules/core/utils/chunking.ts b/packages/server/modules/core/utils/chunking.ts index 828fab2c0..84b289715 100644 --- a/packages/server/modules/core/utils/chunking.ts +++ b/packages/server/modules/core/utils/chunking.ts @@ -1,6 +1,6 @@ -import { InsertableSpeckleObject } from '@/modules/core/domain/objects/types' +import type { InsertableSpeckleObject } from '@/modules/core/domain/objects/types' import { BaseError } from '@/modules/shared/errors' -import { Options } from 'verror' +import type { Options } from 'verror' type InsertionObject = Pick diff --git a/packages/server/modules/core/utils/dbNotificationListener.ts b/packages/server/modules/core/utils/dbNotificationListener.ts index 57669de31..f7ac5397e 100644 --- a/packages/server/modules/core/utils/dbNotificationListener.ts +++ b/packages/server/modules/core/utils/dbNotificationListener.ts @@ -1,4 +1,5 @@ -import { MaybeAsync, Optional, md5, wait } from '@speckle/shared' +import type { MaybeAsync, Optional } from '@speckle/shared' +import { md5, wait } from '@speckle/shared' import { dbNotificationLogger } from '@/observability/logging' import pg from 'pg' import { createRedisClient } from '@/modules/shared/redis/redis' @@ -7,10 +8,10 @@ import { isProdEnv, postgresConnectionCreateTimeoutMillis } from '@/modules/shared/helpers/envHelper' -import Redis from 'ioredis' +import type Redis from 'ioredis' import { LogicError, MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { mainDb } from '@/db/knex' -import { PartialDeep } from 'type-fest' +import type { PartialDeep } from 'type-fest' import { merge } from 'lodash-es' import { getConnectionSettings, diff --git a/packages/server/modules/core/utils/ratelimiter.ts b/packages/server/modules/core/utils/ratelimiter.ts index d33eb5263..8a6575b23 100644 --- a/packages/server/modules/core/utils/ratelimiter.ts +++ b/packages/server/modules/core/utils/ratelimiter.ts @@ -1,12 +1,13 @@ import { getRedisUrl, getIntFromEnv } from '@/modules/shared/helpers/envHelper' +import type { RateLimiterAbstract } from 'rate-limiter-flexible' import { BurstyRateLimiter, - RateLimiterAbstract, RateLimiterMemory, RateLimiterRedis, RateLimiterRes } from 'rate-limiter-flexible' -import { Nullable, TIME } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' +import { TIME } from '@speckle/shared' import { rateLimiterLogger } from '@/observability/logging' import { createRedisClient } from '@/modules/shared/redis/redis' import { RateLimitError } from '@/modules/core/errors/ratelimit' diff --git a/packages/server/modules/cross-server-sync/domain/operations.ts b/packages/server/modules/cross-server-sync/domain/operations.ts index 06a98c8d3..23807c435 100644 --- a/packages/server/modules/cross-server-sync/domain/operations.ts +++ b/packages/server/modules/cross-server-sync/domain/operations.ts @@ -1,5 +1,5 @@ import { type Logger } from '@/observability/logging' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' export type DownloadCommit = ( argv: { diff --git a/packages/server/modules/cross-server-sync/index.ts b/packages/server/modules/cross-server-sync/index.ts index 39072be49..2c6423217 100644 --- a/packages/server/modules/cross-server-sync/index.ts +++ b/packages/server/modules/cross-server-sync/index.ts @@ -67,7 +67,7 @@ import { import { downloadCommitFactory } from '@/modules/cross-server-sync/services/commit' import { ensureOnboardingProjectFactory } from '@/modules/cross-server-sync/services/onboardingProject' import { downloadProjectFactory } from '@/modules/cross-server-sync/services/project' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' const crossServerSyncModule: SpeckleModule = { diff --git a/packages/server/modules/cross-server-sync/services/commit.ts b/packages/server/modules/cross-server-sync/services/commit.ts index 33a624045..d4b1252e4 100644 --- a/packages/server/modules/cross-server-sync/services/commit.ts +++ b/packages/server/modules/cross-server-sync/services/commit.ts @@ -1,5 +1,6 @@ import fetch from 'cross-fetch' -import { ApolloClient, NormalizedCacheObject, gql } from '@apollo/client/core' +import type { ApolloClient, NormalizedCacheObject } from '@apollo/client/core' +import { gql } from '@apollo/client/core' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' import { Roles, TIME_MS, timeoutAt } from '@speckle/shared' import ObjectLoader from '@speckle/objectloader' @@ -12,7 +13,7 @@ import { assertValidGraphQLResult } from '@/modules/cross-server-sync/utils/graphqlClient' import { CrossServerCommitSyncError } from '@/modules/cross-server-sync/errors' -import { +import type { CrossSyncBranchMetadataQuery, CrossSyncCommitBranchMetadataQuery, CrossSyncCommitDownloadMetadataQuery, @@ -20,19 +21,19 @@ import { CrossSyncProjectViewerResourcesQuery, CreateCommentInput } from '@/modules/core/graph/generated/graphql' -import { DownloadCommit } from '@/modules/cross-server-sync/domain/operations' -import { +import type { DownloadCommit } from '@/modules/cross-server-sync/domain/operations' +import type { CreateCommentReplyAndNotify, CreateCommentThreadAndNotify } from '@/modules/comments/domain/operations' -import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' -import { CreateCommitByBranchId } from '@/modules/core/domain/commits/operations' -import { CreateObject, GetObject } from '@/modules/core/domain/objects/operations' -import { +import type { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' +import type { CreateCommitByBranchId } from '@/modules/core/domain/commits/operations' +import type { CreateObject, GetObject } from '@/modules/core/domain/objects/operations' +import type { GetStream, GetStreamCollaborators } from '@/modules/core/domain/streams/operations' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' type LocalResources = Awaited>> type LocalResourcesWithCommit = LocalResources & { newCommitId: string } diff --git a/packages/server/modules/cross-server-sync/services/onboardingProject.ts b/packages/server/modules/cross-server-sync/services/onboardingProject.ts index eb2414262..4d045c857 100644 --- a/packages/server/modules/cross-server-sync/services/onboardingProject.ts +++ b/packages/server/modules/cross-server-sync/services/onboardingProject.ts @@ -1,10 +1,10 @@ import { crossServerSyncLogger } from '@/observability/logging' -import { +import type { GetOnboardingBaseStream, MarkOnboardingBaseStream } from '@/modules/core/domain/streams/operations' -import { GetFirstAdmin } from '@/modules/core/domain/users/operations' -import { +import type { GetFirstAdmin } from '@/modules/core/domain/users/operations' +import type { DownloadProject, EnsureOnboardingProject, GetOnboardingBaseProject diff --git a/packages/server/modules/cross-server-sync/services/project.ts b/packages/server/modules/cross-server-sync/services/project.ts index e675b6ba8..ea91e143a 100644 --- a/packages/server/modules/cross-server-sync/services/project.ts +++ b/packages/server/modules/cross-server-sync/services/project.ts @@ -1,24 +1,25 @@ -import { crossServerSyncLogger, Logger } from '@/observability/logging' +import type { Logger } from '@/observability/logging' +import { crossServerSyncLogger } from '@/observability/logging' import { CrossServerProjectSyncError } from '@/modules/cross-server-sync/errors' +import type { GraphQLClient } from '@/modules/cross-server-sync/utils/graphqlClient' import { createApolloClient, - GraphQLClient, gql, assertValidGraphQLResult } from '@/modules/cross-server-sync/utils/graphqlClient' -import { CrossSyncProjectMetadataQuery } from '@/modules/core/graph/generated/graphql' +import type { CrossSyncProjectMetadataQuery } from '@/modules/core/graph/generated/graphql' import { omit } from 'lodash-es' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { +import type { DownloadCommit, DownloadProject } from '@/modules/cross-server-sync/domain/operations' -import { +import type { CreateBranchAndNotify, GetStreamBranchByName } from '@/modules/core/domain/branches/operations' -import { CreateProject } from '@/modules/core/domain/projects/operations' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { CreateProject } from '@/modules/core/domain/projects/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' type ProjectMetadata = Awaited> diff --git a/packages/server/modules/cross-server-sync/utils/graphqlClient.ts b/packages/server/modules/cross-server-sync/utils/graphqlClient.ts index 184b83b90..ce72407bd 100644 --- a/packages/server/modules/cross-server-sync/utils/graphqlClient.ts +++ b/packages/server/modules/cross-server-sync/utils/graphqlClient.ts @@ -1,14 +1,8 @@ -import { - ApolloClient, - InMemoryCache, - NormalizedCacheObject, - HttpLink, - gql, - ApolloQueryResult -} from '@apollo/client/core' +import type { NormalizedCacheObject, ApolloQueryResult } from '@apollo/client/core' +import { ApolloClient, InMemoryCache, HttpLink, gql } from '@apollo/client/core' import { setContext } from '@apollo/client/link/context/context.cjs' import { getServerVersion } from '@/modules/shared/helpers/envHelper' -import { CrossSyncClientTestQuery } from '@/modules/core/graph/generated/graphql' +import type { CrossSyncClientTestQuery } from '@/modules/core/graph/generated/graphql' import { EnvironmentResourceError } from '@/modules/shared/errors' export type GraphQLClient = ApolloClient diff --git a/packages/server/modules/emails/domain/operations.ts b/packages/server/modules/emails/domain/operations.ts index 9945e7b19..f09ceadeb 100644 --- a/packages/server/modules/emails/domain/operations.ts +++ b/packages/server/modules/emails/domain/operations.ts @@ -1,6 +1,6 @@ -import { UserRecord } from '@/modules/core/helpers/types' -import { EmailVerification } from '@/modules/emails/domain/types' -import { EmailVerificationRecord } from '@/modules/emails/repositories' +import type { UserRecord } from '@/modules/core/helpers/types' +import type { EmailVerification } from '@/modules/emails/domain/types' +import type { EmailVerificationRecord } from '@/modules/emails/repositories' /** * Repositories diff --git a/packages/server/modules/emails/graph/resolvers/index.ts b/packages/server/modules/emails/graph/resolvers/index.ts index 422c9ed31..f69482f9e 100644 --- a/packages/server/modules/emails/graph/resolvers/index.ts +++ b/packages/server/modules/emails/graph/resolvers/index.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails' import { diff --git a/packages/server/modules/emails/index.ts b/packages/server/modules/emails/index.ts index ad88bd744..c7b87cd5b 100644 --- a/packages/server/modules/emails/index.ts +++ b/packages/server/modules/emails/index.ts @@ -2,7 +2,7 @@ import { moduleLogger } from '@/observability/logging' import * as SendingService from '@/modules/emails/services/sending' import { initializeTransporter } from '@/modules/emails/utils/transporter' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import RestApi from '@/modules/emails/rest/index' const emailsModule: SpeckleModule = { diff --git a/packages/server/modules/emails/migrations/20220825082631_drop_email_verifications_used_col.ts b/packages/server/modules/emails/migrations/20220825082631_drop_email_verifications_used_col.ts index ee4634e79..162f50613 100644 --- a/packages/server/modules/emails/migrations/20220825082631_drop_email_verifications_used_col.ts +++ b/packages/server/modules/emails/migrations/20220825082631_drop_email_verifications_used_col.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'email_verifications' diff --git a/packages/server/modules/emails/migrations/20250120145453_add_code_column_to_email_verifications.ts b/packages/server/modules/emails/migrations/20250120145453_add_code_column_to_email_verifications.ts index 141613b66..9f0a2507e 100644 --- a/packages/server/modules/emails/migrations/20250120145453_add_code_column_to_email_verifications.ts +++ b/packages/server/modules/emails/migrations/20250120145453_add_code_column_to_email_verifications.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'email_verifications' diff --git a/packages/server/modules/emails/migrations/20250123133749_remove_unique_email_verifications.ts b/packages/server/modules/emails/migrations/20250123133749_remove_unique_email_verifications.ts index d6a496013..4772c5f0d 100644 --- a/packages/server/modules/emails/migrations/20250123133749_remove_unique_email_verifications.ts +++ b/packages/server/modules/emails/migrations/20250123133749_remove_unique_email_verifications.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'email_verifications' diff --git a/packages/server/modules/emails/repositories/index.ts b/packages/server/modules/emails/repositories/index.ts index e9a862727..e47f429f3 100644 --- a/packages/server/modules/emails/repositories/index.ts +++ b/packages/server/modules/emails/repositories/index.ts @@ -1,5 +1,5 @@ import { EmailVerifications } from '@/modules/core/dbSchema' -import { +import type { DeleteOldAndInsertNewVerification, DeleteVerifications, GetPendingToken, @@ -8,9 +8,9 @@ import { import { InvalidArgumentError } from '@/modules/shared/errors' import cryptoRandomString from 'crypto-random-string' import dayjs from 'dayjs' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { hash } from 'bcrypt' -import { EmailVerification } from '@/modules/emails/domain/types' +import type { EmailVerification } from '@/modules/emails/domain/types' const tables = { emailVerifications: (db: Knex) => db(EmailVerifications.name) diff --git a/packages/server/modules/emails/rest/index.ts b/packages/server/modules/emails/rest/index.ts index 32b16d4c4..ba09fe427 100644 --- a/packages/server/modules/emails/rest/index.ts +++ b/packages/server/modules/emails/rest/index.ts @@ -1,4 +1,4 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { EmailVerificationFinalizationError } from '@/modules/emails/errors' import { finalizeEmailVerificationFactory } from '@/modules/emails/services/verification/finalize' import type { Express } from 'express' diff --git a/packages/server/modules/emails/services/emailRendering.ts b/packages/server/modules/emails/services/emailRendering.ts index 613f8fbd2..3ab73e927 100644 --- a/packages/server/modules/emails/services/emailRendering.ts +++ b/packages/server/modules/emails/services/emailRendering.ts @@ -1,10 +1,10 @@ -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/types' import { packageRoot } from '@/bootstrap' import path from 'path' import mjml2html from 'mjml' import * as ejs from 'ejs' import sanitizeHtml from 'sanitize-html' -import { +import type { EmailContent, EmailTemplateParams, EmailTemplateServerInfo diff --git a/packages/server/modules/emails/services/sending.ts b/packages/server/modules/emails/services/sending.ts index 4381c911e..9ea230263 100644 --- a/packages/server/modules/emails/services/sending.ts +++ b/packages/server/modules/emails/services/sending.ts @@ -1,5 +1,5 @@ import { emailLogger } from '@/observability/logging' -import { SendEmail, SendEmailParams } from '@/modules/emails/domain/operations' +import type { SendEmail, SendEmailParams } from '@/modules/emails/domain/operations' import { getTransporter } from '@/modules/emails/utils/transporter' import { getEmailFromAddress } from '@/modules/shared/helpers/envHelper' import { resolveMixpanelUserId } from '@speckle/shared' diff --git a/packages/server/modules/emails/services/verification/finalize.ts b/packages/server/modules/emails/services/verification/finalize.ts index 6b19a1ed0..b8b612938 100644 --- a/packages/server/modules/emails/services/verification/finalize.ts +++ b/packages/server/modules/emails/services/verification/finalize.ts @@ -1,10 +1,10 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { EmailVerificationFinalizationError } from '@/modules/emails/errors' -import { +import type { DeleteVerifications, GetPendingToken } from '@/modules/emails/domain/operations' -import { MarkUserAsVerified } from '@/modules/core/domain/users/operations' +import type { MarkUserAsVerified } from '@/modules/core/domain/users/operations' type InitializeStateDeps = { getPendingToken: GetPendingToken diff --git a/packages/server/modules/emails/services/verification/request.ts b/packages/server/modules/emails/services/verification/request.ts index 694fd684a..24c87ddf8 100644 --- a/packages/server/modules/emails/services/verification/request.ts +++ b/packages/server/modules/emails/services/verification/request.ts @@ -1,11 +1,11 @@ -import { +import type { FindEmail, FindPrimaryEmailForUser } from '@/modules/core/domain/userEmails/operations' -import { UserEmail } from '@/modules/core/domain/userEmails/types' -import { ServerInfo, UserRecord } from '@/modules/core/helpers/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { ServerInfo, UserRecord } from '@/modules/core/helpers/types' import { EmailVerificationRequestError } from '@/modules/emails/errors' -import { +import type { DeleteOldAndInsertNewVerification, EmailTemplateParams, RenderEmail, @@ -13,8 +13,8 @@ import { RequestNewEmailVerification, SendEmail } from '@/modules/emails/domain/operations' -import { GetUser } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' const EMAIL_SUBJECT = 'Speckle account email verification' diff --git a/packages/server/modules/emails/tests/emailTemplating.spec.ts b/packages/server/modules/emails/tests/emailTemplating.spec.ts index 075c45d70..e9ad73920 100644 --- a/packages/server/modules/emails/tests/emailTemplating.spec.ts +++ b/packages/server/modules/emails/tests/emailTemplating.spec.ts @@ -1,6 +1,6 @@ import { db } from '@/db/knex' import { getServerInfoFactory } from '@/modules/core/repositories/server' -import { EmailTemplateServerInfo } from '@/modules/emails/domain/operations' +import type { EmailTemplateServerInfo } from '@/modules/emails/domain/operations' import { renderEmail } from '@/modules/emails/services/emailRendering' import { expect } from 'chai' import sanitize from 'sanitize-html' diff --git a/packages/server/modules/emails/tests/verifications.spec.ts b/packages/server/modules/emails/tests/verifications.spec.ts index 423f22fd3..95d7445e2 100644 --- a/packages/server/modules/emails/tests/verifications.spec.ts +++ b/packages/server/modules/emails/tests/verifications.spec.ts @@ -1,5 +1,6 @@ import { EmailVerifications, UserEmails, Users } from '@/modules/core/dbSchema' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' import { buildApp, truncateTables } from '@/test/hooks' import request from 'supertest' import { expect } from 'chai' @@ -13,13 +14,10 @@ import { requestVerification } from '@/test/graphql/users' import { getEmailVerificationFinalizationRoute } from '@/modules/core/helpers/routeHelper' -import { Express } from 'express' +import type { Express } from 'express' import dayjs from 'dayjs' -import { - createAuthedTestContext, - createTestContext, - ServerAndContext -} from '@/test/graphqlHelper' +import type { ServerAndContext } from '@/test/graphqlHelper' +import { createAuthedTestContext, createTestContext } from '@/test/graphqlHelper' import { buildApolloServer } from '@/app' import { db } from '@/db/knex' import { requestEmailVerificationFactory } from '@/modules/emails/services/verification/request' @@ -28,7 +26,8 @@ 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' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' const getUser = getUserFactory({ db }) const getPendingToken = getPendingTokenFactory({ db }) diff --git a/packages/server/modules/emails/utils/transporter.ts b/packages/server/modules/emails/utils/transporter.ts index 14b90b0df..8fdbfc733 100644 --- a/packages/server/modules/emails/utils/transporter.ts +++ b/packages/server/modules/emails/utils/transporter.ts @@ -1,7 +1,8 @@ import { emailLogger as logger } from '@/observability/logging' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { isEmailEnabled, isTestEnv } from '@/modules/shared/helpers/envHelper' -import { createTransport, Transporter } from 'nodemailer' +import type { Transporter } from 'nodemailer' +import { createTransport } from 'nodemailer' let transporter: Transporter | undefined = undefined diff --git a/packages/server/modules/fileuploads/domain/events.ts b/packages/server/modules/fileuploads/domain/events.ts index 58badd93d..73fa6d08c 100644 --- a/packages/server/modules/fileuploads/domain/events.ts +++ b/packages/server/modules/fileuploads/domain/events.ts @@ -1,4 +1,4 @@ -import { +import type { FileUploadRecord, FileUploadRecordV2 } from '@/modules/fileuploads/helpers/types' diff --git a/packages/server/modules/fileuploads/domain/types.ts b/packages/server/modules/fileuploads/domain/types.ts index 43b0e89ef..ca1c19c33 100644 --- a/packages/server/modules/fileuploads/domain/types.ts +++ b/packages/server/modules/fileuploads/domain/types.ts @@ -1,5 +1,5 @@ -import { ScheduleFileimportJob } from '@/modules/fileuploads/domain/operations' -import { QueueMetrics } from '@/modules/fileuploads/observability/metrics' +import type { ScheduleFileimportJob } from '@/modules/fileuploads/domain/operations' +import type { QueueMetrics } from '@/modules/fileuploads/observability/metrics' export type FileImportQueue = { label: string diff --git a/packages/server/modules/fileuploads/events/eventListener.ts b/packages/server/modules/fileuploads/events/eventListener.ts index 069fe4dd2..9dcb095d3 100644 --- a/packages/server/modules/fileuploads/events/eventListener.ts +++ b/packages/server/modules/fileuploads/events/eventListener.ts @@ -1,15 +1,13 @@ -import { EventPayload, getEventBus } from '@/modules/shared/services/eventBus' -import { - getClient, - MixpanelClient, - MixpanelEvents -} from '@/modules/shared/utils/mixpanel' +import type { EventPayload } from '@/modules/shared/services/eventBus' +import { getEventBus } from '@/modules/shared/services/eventBus' +import type { MixpanelClient } from '@/modules/shared/utils/mixpanel' +import { getClient, MixpanelEvents } from '@/modules/shared/utils/mixpanel' import { FileuploadEvents } from '@/modules/fileuploads/domain/events' import { throwUncoveredError } from '@speckle/shared' -import { GetProject } from '@/modules/core/domain/projects/operations' -import { Knex } from 'knex' +import type { GetProject } from '@/modules/core/domain/projects/operations' +import type { Knex } from 'knex' import { getProjectFactory } from '@/modules/core/repositories/projects' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { getUserFactory } from '@/modules/core/repositories/users' export const fileuploadTrackingFactory = diff --git a/packages/server/modules/fileuploads/events/subscriptionListeners.ts b/packages/server/modules/fileuploads/events/subscriptionListeners.ts index 8925cb705..b0d93db62 100644 --- a/packages/server/modules/fileuploads/events/subscriptionListeners.ts +++ b/packages/server/modules/fileuploads/events/subscriptionListeners.ts @@ -1,16 +1,14 @@ -import { GetProjectModelById } from '@/modules/core/domain/branches/operations' +import type { GetProjectModelById } from '@/modules/core/domain/branches/operations' import { ProjectFileImportUpdatedMessageType, ProjectPendingModelsUpdatedMessageType, ProjectPendingVersionsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' import { FileuploadEvents } from '@/modules/fileuploads/domain/events' -import { DependenciesOf } from '@/modules/shared/helpers/factory' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' -import { - FileImportSubscriptions, - PublishSubscription -} from '@/modules/shared/utils/subscriptions' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { PublishSubscription } from '@/modules/shared/utils/subscriptions' +import { FileImportSubscriptions } from '@/modules/shared/utils/subscriptions' const reportFileUploadStartedFactory = (deps: { publish: PublishSubscription; getProjectModelById: GetProjectModelById }) => diff --git a/packages/server/modules/fileuploads/graph/resolvers/fileUploads.ts b/packages/server/modules/fileuploads/graph/resolvers/fileUploads.ts index 22a72a871..a793072a1 100644 --- a/packages/server/modules/fileuploads/graph/resolvers/fileUploads.ts +++ b/packages/server/modules/fileuploads/graph/resolvers/fileUploads.ts @@ -1,5 +1,5 @@ import { TIME } from '@speckle/shared' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { db } from '@/db/knex' import { getBranchPendingVersionsFactory, @@ -66,11 +66,11 @@ import { getFeatureFlags } from '@speckle/shared/environment' import { throwIfResourceAccessNotAllowed } from '@/modules/core/helpers/token' import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { getModelUploadsFactory } from '@/modules/fileuploads/services/management' -import { +import type { FileUploadRecord, FileUploadRecordV2 } from '@/modules/fileuploads/helpers/types' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' const { FF_LARGE_FILE_IMPORTS_ENABLED, FF_NEXT_GEN_FILE_IMPORTER_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/fileuploads/helpers/convert.ts b/packages/server/modules/fileuploads/helpers/convert.ts index 2618b2ed9..1d7b5de36 100644 --- a/packages/server/modules/fileuploads/helpers/convert.ts +++ b/packages/server/modules/fileuploads/helpers/convert.ts @@ -1,5 +1,5 @@ import { FileUploadConvertedStatus } from '@/modules/fileuploads/helpers/types' -import { FileImportResultPayload } from '@speckle/shared/workers/fileimport' +import type { FileImportResultPayload } from '@speckle/shared/workers/fileimport' import { FileImportInvalidJobResultPayload } from '@/modules/fileuploads/helpers/errors' export const jobResultStatusToFileUploadStatus = ( diff --git a/packages/server/modules/fileuploads/helpers/types.ts b/packages/server/modules/fileuploads/helpers/types.ts index e9b1656d5..660ed858f 100644 --- a/packages/server/modules/fileuploads/helpers/types.ts +++ b/packages/server/modules/fileuploads/helpers/types.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' export enum FileUploadConvertedStatus { Queued = 0, diff --git a/packages/server/modules/fileuploads/index.ts b/packages/server/modules/fileuploads/index.ts index 8f7ad03e4..44839311e 100644 --- a/packages/server/modules/fileuploads/index.ts +++ b/packages/server/modules/fileuploads/index.ts @@ -1,4 +1,4 @@ -import cron from 'node-cron' +import type cron from 'node-cron' import { notifyChangeInFileStatus } from '@/modules/fileuploads/services/management' import { moduleLogger } from '@/observability/logging' import { @@ -7,7 +7,7 @@ import { parseMessagePayload } from '@/modules/fileuploads/services/resultListener' import { publish } from '@/modules/shared/utils/subscriptions' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getProjectModelByIdFactory, getStreamBranchByNameFactory @@ -53,10 +53,8 @@ import { initializeQueueFactory } from '@/modules/fileuploads/queues/fileimports' import { initializeEventListenersFactory } from '@/modules/fileuploads/events/eventListener' -import { - initializeMetrics, - ObserveResult -} from '@/modules/fileuploads/observability/metrics' +import type { ObserveResult } from '@/modules/fileuploads/observability/metrics' +import { initializeMetrics } from '@/modules/fileuploads/observability/metrics' import { reportSubscriptionEventsFactory } from '@/modules/fileuploads/events/subscriptionListeners' import { configureClient } from '@/knexfile' import { @@ -64,7 +62,7 @@ import { requestErrorHandlerFactory, requestFailedHandlerFactory } from '@/modules/fileuploads/services/requestHandler' -import { UpdateFileStatusForProjectFactory } from '@/modules/fileuploads/domain/operations' +import type { UpdateFileStatusForProjectFactory } from '@/modules/fileuploads/domain/operations' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' const { diff --git a/packages/server/modules/fileuploads/migrations/20250508190226_add_modelId_to_file_uploads.ts b/packages/server/modules/fileuploads/migrations/20250508190226_add_modelId_to_file_uploads.ts index 923690158..9740c0149 100644 --- a/packages/server/modules/fileuploads/migrations/20250508190226_add_modelId_to_file_uploads.ts +++ b/packages/server/modules/fileuploads/migrations/20250508190226_add_modelId_to_file_uploads.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const fileUploadTableName = 'file_uploads' diff --git a/packages/server/modules/fileuploads/migrations/20250514131509_add_modelId_foreign_to_file_uploads.ts b/packages/server/modules/fileuploads/migrations/20250514131509_add_modelId_foreign_to_file_uploads.ts index 521c09343..675afc4a2 100644 --- a/packages/server/modules/fileuploads/migrations/20250514131509_add_modelId_foreign_to_file_uploads.ts +++ b/packages/server/modules/fileuploads/migrations/20250514131509_add_modelId_foreign_to_file_uploads.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const fileUploadTableName = 'file_uploads' const modelTableName = 'branches' diff --git a/packages/server/modules/fileuploads/migrations/20250519074720_fileimport_message_text.ts b/packages/server/modules/fileuploads/migrations/20250519074720_fileimport_message_text.ts index 32183f5c6..c430bdc5c 100644 --- a/packages/server/modules/fileuploads/migrations/20250519074720_fileimport_message_text.ts +++ b/packages/server/modules/fileuploads/migrations/20250519074720_fileimport_message_text.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const FILEUPLOADS_TABLE = 'file_uploads' const MESSAGE_FIELD = 'convertedMessage' diff --git a/packages/server/modules/fileuploads/migrations/20250613070024_add_metadata_to_file_uploads.ts b/packages/server/modules/fileuploads/migrations/20250613070024_add_metadata_to_file_uploads.ts index f7e52cefd..8b670ccf8 100644 --- a/packages/server/modules/fileuploads/migrations/20250613070024_add_metadata_to_file_uploads.ts +++ b/packages/server/modules/fileuploads/migrations/20250613070024_add_metadata_to_file_uploads.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'file_uploads' const METADATA_FIELD = 'metadata' diff --git a/packages/server/modules/fileuploads/migrations/20250616114012_drop_metadata_in_file_uploads.ts b/packages/server/modules/fileuploads/migrations/20250616114012_drop_metadata_in_file_uploads.ts index 36baa6208..d37f3f177 100644 --- a/packages/server/modules/fileuploads/migrations/20250616114012_drop_metadata_in_file_uploads.ts +++ b/packages/server/modules/fileuploads/migrations/20250616114012_drop_metadata_in_file_uploads.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'file_uploads' const METADATA_FIELD = 'metadata' diff --git a/packages/server/modules/fileuploads/migrations/20250716154353_add_performanceData_to_file_uploads.ts b/packages/server/modules/fileuploads/migrations/20250716154353_add_performanceData_to_file_uploads.ts index 0c6bcefdb..191e7a966 100644 --- a/packages/server/modules/fileuploads/migrations/20250716154353_add_performanceData_to_file_uploads.ts +++ b/packages/server/modules/fileuploads/migrations/20250716154353_add_performanceData_to_file_uploads.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const fileUploadTableName = 'file_uploads' diff --git a/packages/server/modules/fileuploads/observability/metrics.ts b/packages/server/modules/fileuploads/observability/metrics.ts index ff0719f70..187e0db46 100644 --- a/packages/server/modules/fileuploads/observability/metrics.ts +++ b/packages/server/modules/fileuploads/observability/metrics.ts @@ -1,11 +1,9 @@ import { TIME } from '@speckle/shared' import { type Registry, Counter, Summary, Gauge } from 'prom-client' import type { FileImportQueue } from '@/modules/fileuploads/domain/types' -import { - FileImportResultPayload, - JobResultStatus -} from '@speckle/shared/workers/fileimport' -import Bull from 'bull' +import type { FileImportResultPayload } from '@speckle/shared/workers/fileimport' +import { JobResultStatus } from '@speckle/shared/workers/fileimport' +import type Bull from 'bull' export const FileImportJobDurationStep = { TOTAL: 'total', diff --git a/packages/server/modules/fileuploads/queues/fileimports.ts b/packages/server/modules/fileuploads/queues/fileimports.ts index 2b3951507..22e3f9ae2 100644 --- a/packages/server/modules/fileuploads/queues/fileimports.ts +++ b/packages/server/modules/fileuploads/queues/fileimports.ts @@ -8,21 +8,19 @@ import { getServerOrigin, isTestEnv } from '@/modules/shared/helpers/envHelper' -import { Logger, fileUploadsLogger as logger } from '@/observability/logging' +import type { Logger } from '@/observability/logging' +import { fileUploadsLogger as logger } from '@/observability/logging' import { TIME, TIME_MS } from '@speckle/shared' import { initializeQueue as setupQueue } from '@speckle/shared/queue' -import { JobPayload } from '@speckle/shared/workers/fileimport' -import { FileImportQueue } from '@/modules/fileuploads/domain/types' -import Bull, { - ActiveEventCallback, - ErrorEventCallback, - FailedEventCallback -} from 'bull' +import type { JobPayload } from '@speckle/shared/workers/fileimport' +import type { FileImportQueue } from '@/modules/fileuploads/domain/types' +import type { ActiveEventCallback, ErrorEventCallback, FailedEventCallback } from 'bull' +import type Bull from 'bull' import { NumberOfFileImportRetries, DelayBetweenFileImportRetriesMinutes } from '@/modules/fileuploads/domain/consts' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { migrateDbToLatest } from '@/db/migrations' import { scheduleBackgroundJobFactory } from '@/modules/backgroundjobs/services' import { diff --git a/packages/server/modules/fileuploads/repositories/fileUploads.ts b/packages/server/modules/fileuploads/repositories/fileUploads.ts index a1a323211..e3d928341 100644 --- a/packages/server/modules/fileuploads/repositories/fileUploads.ts +++ b/packages/server/modules/fileuploads/repositories/fileUploads.ts @@ -1,5 +1,5 @@ import { Branches, FileUploads } from '@/modules/core/dbSchema' -import { +import type { GarbageCollectPendingUploadedFiles, GetFileInfo, SaveUploadFile, @@ -13,12 +13,12 @@ import { GetModelUploadsTotalCount, UpdateFileStatus } from '@/modules/fileuploads/domain/operations' -import { - FileUploadConvertedStatus, +import type { FileUploadRecord, FileUploadRecordV2 } from '@/modules/fileuploads/helpers/types' -import { Knex } from 'knex' +import { FileUploadConvertedStatus } from '@/modules/fileuploads/helpers/types' +import type { Knex } from 'knex' import { FileImportJobNotFoundError } from '@/modules/fileuploads/helpers/errors' import { compositeCursorTools } from '@/modules/shared/helpers/dbHelper' import { clamp } from 'lodash-es' diff --git a/packages/server/modules/fileuploads/rest/router.ts b/packages/server/modules/fileuploads/rest/router.ts index af6baa9e4..7568e770b 100644 --- a/packages/server/modules/fileuploads/rest/router.ts +++ b/packages/server/modules/fileuploads/rest/router.ts @@ -10,7 +10,8 @@ import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { createBusboy } from '@/modules/blobstorage/rest/busboy' import { processNewFileStreamFactory } from '@/modules/blobstorage/services/streams' import { UnauthorizedError } from '@/modules/shared/errors' -import { ensureError, Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' +import { ensureError } from '@speckle/shared' import { UploadRequestErrorMessage } from '@/modules/fileuploads/helpers/rest' import { getEventBus } from '@/modules/shared/services/eventBus' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/fileuploads/services/createFileImport.ts b/packages/server/modules/fileuploads/services/createFileImport.ts index 362bdcdad..c26612086 100644 --- a/packages/server/modules/fileuploads/services/createFileImport.ts +++ b/packages/server/modules/fileuploads/services/createFileImport.ts @@ -1,8 +1,8 @@ -import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' +import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' import { DefaultAppIds } from '@/modules/auth/defaultApps' import { Scopes, TIME, TIME_MS } from '@speckle/shared' import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' -import { PushJobToFileImporter } from '@/modules/fileuploads/domain/operations' +import type { PushJobToFileImporter } from '@/modules/fileuploads/domain/operations' import { getFileImportTimeLimitMinutes } from '@/modules/shared/helpers/envHelper' import { DelayBetweenFileImportRetriesMinutes, diff --git a/packages/server/modules/fileuploads/services/presigned.ts b/packages/server/modules/fileuploads/services/presigned.ts index 2cfa22c35..5eed32448 100644 --- a/packages/server/modules/fileuploads/services/presigned.ts +++ b/packages/server/modules/fileuploads/services/presigned.ts @@ -1,6 +1,6 @@ -import { RegisterCompletedUpload } from '@/modules/blobstorage/domain/operations' -import { GetBranchesByIds } from '@/modules/core/domain/branches/operations' -import { +import type { RegisterCompletedUpload } from '@/modules/blobstorage/domain/operations' +import type { GetBranchesByIds } from '@/modules/core/domain/branches/operations' +import type { GetFileInfoV2, InsertNewUploadAndNotify, InsertNewUploadAndNotifyV2, diff --git a/packages/server/modules/fileuploads/services/requestHandler.ts b/packages/server/modules/fileuploads/services/requestHandler.ts index 774bd57ac..449c8d833 100644 --- a/packages/server/modules/fileuploads/services/requestHandler.ts +++ b/packages/server/modules/fileuploads/services/requestHandler.ts @@ -1,7 +1,7 @@ -import { Logger } from '@/observability/logging' -import { ActiveEventCallback, ErrorEventCallback, FailedEventCallback } from 'bull' -import { UpdateFileStatusForProjectFactory } from '@/modules/fileuploads/domain/operations' -import { JobPayload } from '@speckle/shared/workers/fileimport' +import type { Logger } from '@/observability/logging' +import type { ActiveEventCallback, ErrorEventCallback, FailedEventCallback } from 'bull' +import type { UpdateFileStatusForProjectFactory } from '@/modules/fileuploads/domain/operations' +import type { JobPayload } from '@speckle/shared/workers/fileimport' import { FileUploadConvertedStatus } from '@speckle/shared/blobs' import { ensureError } from '@speckle/shared' diff --git a/packages/server/modules/fileuploads/services/resultHandler.ts b/packages/server/modules/fileuploads/services/resultHandler.ts index d2c04956a..1080d16ee 100644 --- a/packages/server/modules/fileuploads/services/resultHandler.ts +++ b/packages/server/modules/fileuploads/services/resultHandler.ts @@ -1,5 +1,5 @@ import type { Logger } from '@/observability/logging' -import { +import type { GetFileInfoV2, ProcessFileImportResult, UpdateFileUpload @@ -10,9 +10,9 @@ import { } from '@/modules/fileuploads/helpers/convert' import { ensureError } from '@speckle/shared' import type { FileUploadRecord } from '@/modules/fileuploads/helpers/types' -import { ObserveResult } from '@/modules/fileuploads/observability/metrics' +import type { ObserveResult } from '@/modules/fileuploads/observability/metrics' import { FileImportJobNotFoundError } from '@/modules/fileuploads/helpers/errors' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { FileuploadEvents } from '@/modules/fileuploads/domain/events' type OnFileImportResultDeps = { diff --git a/packages/server/modules/fileuploads/services/resultListener.ts b/packages/server/modules/fileuploads/services/resultListener.ts index f240dcd36..70f7aa172 100644 --- a/packages/server/modules/fileuploads/services/resultListener.ts +++ b/packages/server/modules/fileuploads/services/resultListener.ts @@ -1,6 +1,9 @@ -import { GetFileInfo, UpdateFileUpload } from '@/modules/fileuploads/domain/operations' -import { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { + GetFileInfo, + UpdateFileUpload +} from '@/modules/fileuploads/domain/operations' +import type { GetStreamBranchByName } from '@/modules/core/domain/branches/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { ModelEvents } from '@/modules/core/domain/branches/events' import { fileUploadsLogger as logger } from '@/observability/logging' import { FileUploadConvertedStatus } from '@/modules/fileuploads/helpers/types' diff --git a/packages/server/modules/fileuploads/services/tasks.ts b/packages/server/modules/fileuploads/services/tasks.ts index ab7d309e2..c3ea716d4 100644 --- a/packages/server/modules/fileuploads/services/tasks.ts +++ b/packages/server/modules/fileuploads/services/tasks.ts @@ -1,5 +1,5 @@ -import { Logger } from '@/observability/logging' -import { +import type { Logger } from '@/observability/logging' +import type { GarbageCollectPendingUploadedFiles, NotifyChangeInFileStatus } from '@/modules/fileuploads/domain/operations' diff --git a/packages/server/modules/fileuploads/tests/e2e/presigned.graph.spec.ts b/packages/server/modules/fileuploads/tests/e2e/presigned.graph.spec.ts index 07c16ce30..4b2268da8 100644 --- a/packages/server/modules/fileuploads/tests/e2e/presigned.graph.spec.ts +++ b/packages/server/modules/fileuploads/tests/e2e/presigned.graph.spec.ts @@ -1,14 +1,17 @@ import { createTestUser } from '@/test/authHelper' -import { ExecuteOperationResponse, testApolloServer } from '@/test/graphqlHelper' +import type { ExecuteOperationResponse } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { createProject, grantProjectPermissions } from '@/test/projectHelper' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' -import { Nullable, Optional, Roles, ServerRoles, StreamRoles } from '@speckle/shared' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { Nullable, Optional, ServerRoles, StreamRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import axios from 'axios' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' import gql from 'graphql-tag' -import { SetNonNullable } from 'type-fest' +import type { SetNonNullable } from 'type-fest' import { getFeatureFlags } from '@speckle/shared/environment' const { FF_LARGE_FILE_IMPORTS_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/fileuploads/tests/helpers/creation.ts b/packages/server/modules/fileuploads/tests/helpers/creation.ts index 3d19bea34..ded115fda 100644 --- a/packages/server/modules/fileuploads/tests/helpers/creation.ts +++ b/packages/server/modules/fileuploads/tests/helpers/creation.ts @@ -2,9 +2,9 @@ import { randomInt } from 'crypto' import cryptoRandomString from 'crypto-random-string' import { saveUploadFileFactory } from '@/modules/fileuploads/repositories/fileUploads' import { db } from '@/db/knex' -import { FileImportMessage } from '@/modules/fileuploads/domain/operations' +import type { FileImportMessage } from '@/modules/fileuploads/domain/operations' import { assign } from 'lodash-es' -import { +import type { FileUploadRecord, FileUploadRecordV2 } from '@/modules/fileuploads/helpers/types' diff --git a/packages/server/modules/fileuploads/tests/integration/presigned.integration.spec.ts b/packages/server/modules/fileuploads/tests/integration/presigned.integration.spec.ts index f6e3e4966..b78a098c9 100644 --- a/packages/server/modules/fileuploads/tests/integration/presigned.integration.spec.ts +++ b/packages/server/modules/fileuploads/tests/integration/presigned.integration.spec.ts @@ -4,10 +4,10 @@ import { } from '@/modules/blobstorage/services/presigned' import { getProjectObjectStorage } from '@/modules/multiregion/utils/blobStorageSelector' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { getBlobMetadataFromStorage, - getSignedUrlFactory, - ObjectStorage + getSignedUrlFactory } from '@/modules/blobstorage/clients/objectStorage' import { getBlobFactory, @@ -20,7 +20,7 @@ import { BlobUploadStatus } from '@speckle/shared/blobs' import { createProject } from '@/test/projectHelper' import { createTestUser } from '@/test/authHelper' import { beforeEachContext } from '@/test/hooks' -import { Knex } from 'knex' +import type { Knex } from 'knex' import cryptoRandomString from 'crypto-random-string' import { expect } from 'chai' import { testLogger } from '@/observability/logging' @@ -52,8 +52,9 @@ import { storeUserServerAppTokenFactory } from '@/modules/core/repositories/tokens' import { getEventBus } from '@/modules/shared/services/eventBus' -import { RegisterUploadCompleteAndStartFileImport } from '@/modules/fileuploads/domain/operations' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { RegisterUploadCompleteAndStartFileImport } from '@/modules/fileuploads/domain/operations' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' const { FF_LARGE_FILE_IMPORTS_ENABLED, FF_NEXT_GEN_FILE_IMPORTER_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/fileuploads/tests/integration/results.spec.ts b/packages/server/modules/fileuploads/tests/integration/results.spec.ts index b0346053e..aa4004ced 100644 --- a/packages/server/modules/fileuploads/tests/integration/results.spec.ts +++ b/packages/server/modules/fileuploads/tests/integration/results.spec.ts @@ -17,7 +17,7 @@ import type { Server } from 'http' import request from 'supertest' import { initUploadTestEnvironment } from '@/modules/fileuploads/tests/helpers/init' import { createFileUploadJob } from '@/modules/fileuploads/tests/helpers/creation' -import { +import type { FileImportErrorPayload, FileImportSuccessPayload } from '@speckle/shared/workers/fileimport' diff --git a/packages/server/modules/fileuploads/tests/unit/eventListener.spec.ts b/packages/server/modules/fileuploads/tests/unit/eventListener.spec.ts index f40ef4c89..b7a1fadbb 100644 --- a/packages/server/modules/fileuploads/tests/unit/eventListener.spec.ts +++ b/packages/server/modules/fileuploads/tests/unit/eventListener.spec.ts @@ -1,8 +1,6 @@ import { buildTestProject } from '@/modules/core/tests/helpers/creation' -import { - buildMixpanelFake, - MixpanelFakeEventRecord -} from '@/modules/shared/test/helpers/mixpanel' +import type { MixpanelFakeEventRecord } from '@/modules/shared/test/helpers/mixpanel' +import { buildMixpanelFake } from '@/modules/shared/test/helpers/mixpanel' import { fileuploadTrackingFactory } from '@/modules/fileuploads/events/eventListener' import { buildTestUserWithOptionalRole } from '@/test/authHelper' import { MixpanelEvents } from '@/modules/shared/utils/mixpanel' diff --git a/packages/server/modules/fileuploads/tests/unit/fileuploads.spec.ts b/packages/server/modules/fileuploads/tests/unit/fileuploads.spec.ts index 6e4ba2892..205ec47d1 100644 --- a/packages/server/modules/fileuploads/tests/unit/fileuploads.spec.ts +++ b/packages/server/modules/fileuploads/tests/unit/fileuploads.spec.ts @@ -20,10 +20,10 @@ import { pushJobToFileImporterFactory } from '@/modules/fileuploads/services/cre import { assign, get } from 'lodash-es' import { buildFileUploadMessage } from '@/modules/fileuploads/tests/helpers/creation' import { getFeatureFlags } from '@speckle/shared/environment' -import { JobPayload } from '@speckle/shared/workers/fileimport' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { JobPayload } from '@speckle/shared/workers/fileimport' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { FileuploadEvents } from '@/modules/fileuploads/domain/events' -import { BranchRecord } from '@/modules/core/helpers/types' +import type { BranchRecord } from '@/modules/core/helpers/types' const { createStream, createBranch, createUser, garbageCollector } = initUploadTestEnvironment() diff --git a/packages/server/modules/gatekeeper/clients/checkout/createCheckoutSession.ts b/packages/server/modules/gatekeeper/clients/checkout/createCheckoutSession.ts index a9fe2afa9..a69f894a2 100644 --- a/packages/server/modules/gatekeeper/clients/checkout/createCheckoutSession.ts +++ b/packages/server/modules/gatekeeper/clients/checkout/createCheckoutSession.ts @@ -1,12 +1,12 @@ /* eslint-disable camelcase */ import { getResultUrl } from '@/modules/gatekeeper/clients/getResultUrl' -import { +import type { CreateCheckoutSession, GetStripeClient, GetWorkspacePlanPriceId } from '@/modules/gatekeeper/domain/billing' import { EnvironmentResourceError } from '@/modules/shared/errors' -import { Stripe } from 'stripe' +import type { Stripe } from 'stripe' export const createCheckoutSessionFactory = ({ diff --git a/packages/server/modules/gatekeeper/clients/stripe.ts b/packages/server/modules/gatekeeper/clients/stripe.ts index 644d25703..ba256a7bc 100644 --- a/packages/server/modules/gatekeeper/clients/stripe.ts +++ b/packages/server/modules/gatekeeper/clients/stripe.ts @@ -1,12 +1,12 @@ /* eslint-disable camelcase */ import { getResultUrl } from '@/modules/gatekeeper/clients/getResultUrl' -import { +import type { GetRecurringPrices, GetStripeClient, GetSubscriptionData, - ReconcileSubscriptionData, - SubscriptionData + ReconcileSubscriptionData } from '@/modules/gatekeeper/domain/billing' +import { SubscriptionData } from '@/modules/gatekeeper/domain/billing' import { LogicError, TestOnlyLogicError } from '@/modules/shared/errors' import { getStripeApiKey, isTestEnv } from '@/modules/shared/helpers/envHelper' import { TIME_MS } from '@speckle/shared' diff --git a/packages/server/modules/gatekeeper/domain/billing.ts b/packages/server/modules/gatekeeper/domain/billing.ts index 5e3126bdf..adb685cd4 100644 --- a/packages/server/modules/gatekeeper/domain/billing.ts +++ b/packages/server/modules/gatekeeper/domain/billing.ts @@ -1,15 +1,12 @@ -import { +import type { Currency, WorkspacePlanProductPrices, WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing' -import { SubscriptionState } from '@/modules/gatekeeperCore/domain/events' -import { - Workspace, - WorkspaceSeat, - WorkspaceSeatType -} from '@/modules/workspacesCore/domain/types' -import { +import type { SubscriptionState } from '@/modules/gatekeeperCore/domain/events' +import type { Workspace, WorkspaceSeat } from '@/modules/workspacesCore/domain/types' +import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { Nullable, Optional, PaidWorkspacePlan, @@ -19,7 +16,7 @@ import { WorkspacePlanBillingIntervals } from '@speckle/shared' import type Stripe from 'stripe' -import { OverrideProperties } from 'type-fest' +import type { OverrideProperties } from 'type-fest' import { z } from 'zod' export { Currency } from '@/modules/gatekeeperCore/domain/billing' diff --git a/packages/server/modules/gatekeeper/domain/operations.ts b/packages/server/modules/gatekeeper/domain/operations.ts index 65ecac078..a5435b9cd 100644 --- a/packages/server/modules/gatekeeper/domain/operations.ts +++ b/packages/server/modules/gatekeeper/domain/operations.ts @@ -1,6 +1,9 @@ -import { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' -import { Workspace, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' -import { +import type { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' +import type { + Workspace, + WorkspaceSeatType +} from '@/modules/workspacesCore/domain/types' +import type { Optional, WorkspacePlan, WorkspacePlanFeatures, diff --git a/packages/server/modules/gatekeeper/events/eventListener.ts b/packages/server/modules/gatekeeper/events/eventListener.ts index 9e1dfd186..aa3ddd41f 100644 --- a/packages/server/modules/gatekeeper/events/eventListener.ts +++ b/packages/server/modules/gatekeeper/events/eventListener.ts @@ -15,8 +15,8 @@ import { } from '@/modules/gatekeeper/helpers/prices' import { getEventBus } from '@/modules/shared/services/eventBus' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { Knex } from 'knex' -import { GetStripeClient } from '@/modules/gatekeeper/domain/billing' +import type { Knex } from 'knex' +import type { GetStripeClient } from '@/modules/gatekeeper/domain/billing' export const initializeEventListenersFactory = ({ db, getStripeClient }: { db: Knex; getStripeClient: GetStripeClient }) => diff --git a/packages/server/modules/gatekeeper/graph/dataloaders/index.ts b/packages/server/modules/gatekeeper/graph/dataloaders/index.ts index 48d6f678e..84de9fb34 100644 --- a/packages/server/modules/gatekeeper/graph/dataloaders/index.ts +++ b/packages/server/modules/gatekeeper/graph/dataloaders/index.ts @@ -1,4 +1,4 @@ -import { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' +import type { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' import { getWorkspacePlansByWorkspaceIdFactory } from '@/modules/gatekeeper/repositories/billing' import { getProjectsUsersSeatsFactory, @@ -6,12 +6,8 @@ import { } from '@/modules/gatekeeper/repositories/workspaceSeat' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { defineRequestDataloaders } from '@/modules/shared/helpers/graphqlHelper' -import { - WorkspaceLimits, - WorkspacePaidPlanConfigs, - WorkspacePlan, - WorkspaceUnpaidPlanConfigs -} from '@speckle/shared' +import type { WorkspaceLimits, WorkspacePlan } from '@speckle/shared' +import { WorkspacePaidPlanConfigs, WorkspaceUnpaidPlanConfigs } from '@speckle/shared' const { FF_GATEKEEPER_MODULE_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/gatekeeper/graph/resolvers/index.ts b/packages/server/modules/gatekeeper/graph/resolvers/index.ts index aea2ca5ac..499d85647 100644 --- a/packages/server/modules/gatekeeper/graph/resolvers/index.ts +++ b/packages/server/modules/gatekeeper/graph/resolvers/index.ts @@ -36,10 +36,8 @@ import { } from '@/modules/gatekeeper/repositories/billing' import { canWorkspaceAccessFeatureFactory } from '@/modules/gatekeeper/services/featureAuthorization' import { isWorkspaceReadOnlyFactory } from '@/modules/gatekeeper/services/readOnly' -import { - CreateCheckoutSession, - WorkspaceSeatType -} from '@/modules/gatekeeper/domain/billing' +import type { CreateCheckoutSession } from '@/modules/gatekeeper/domain/billing' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { WorkspacePaymentMethod } from '@/modules/core/graph/generated/graphql' import { LogicError, UnauthorizedError } from '@/modules/shared/errors' import { getWorkspacePlanProductPricesFactory } from '@/modules/gatekeeper/services/prices' diff --git a/packages/server/modules/gatekeeper/helpers/graphTypes.ts b/packages/server/modules/gatekeeper/helpers/graphTypes.ts index 3fce5683b..a1cff4983 100644 --- a/packages/server/modules/gatekeeper/helpers/graphTypes.ts +++ b/packages/server/modules/gatekeeper/helpers/graphTypes.ts @@ -1,5 +1,5 @@ -import { MutationsObjectGraphQLReturn } from '@/modules/core/helpers/graphTypes' -import { WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' +import type { MutationsObjectGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' export type WorkspaceBillingMutationsGraphQLReturn = MutationsObjectGraphQLReturn export type WorkspaceSubscriptionGraphQLReturn = WorkspaceSubscription diff --git a/packages/server/modules/gatekeeper/helpers/plans.ts b/packages/server/modules/gatekeeper/helpers/plans.ts index 47ec8d1c9..1ac77ec01 100644 --- a/packages/server/modules/gatekeeper/helpers/plans.ts +++ b/packages/server/modules/gatekeeper/helpers/plans.ts @@ -1,4 +1,5 @@ -import { PaidWorkspacePlans, WorkspacePlans } from '@speckle/shared' +import type { WorkspacePlans } from '@speckle/shared' +import { PaidWorkspacePlans } from '@speckle/shared' export const isPaidPlanType = (plan: WorkspacePlans): boolean => { return (Object.values(PaidWorkspacePlans) as string[]).includes(plan) diff --git a/packages/server/modules/gatekeeper/helpers/prices.ts b/packages/server/modules/gatekeeper/helpers/prices.ts index 62c989fdc..ad244042f 100644 --- a/packages/server/modules/gatekeeper/helpers/prices.ts +++ b/packages/server/modules/gatekeeper/helpers/prices.ts @@ -1,4 +1,4 @@ -import { +import type { GetWorkspacePlanPriceId, GetWorkspacePlanProductAndPriceIds, GetWorkspacePlanProductId diff --git a/packages/server/modules/gatekeeper/index.ts b/packages/server/modules/gatekeeper/index.ts index 480ba28aa..ceb5f017e 100644 --- a/packages/server/modules/gatekeeper/index.ts +++ b/packages/server/modules/gatekeeper/index.ts @@ -1,6 +1,6 @@ -import cron from 'node-cron' +import type cron from 'node-cron' import { moduleLogger } from '@/observability/logging' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { validateModuleLicense } from '@/modules/gatekeeper/services/validateLicense' import { getBillingRouter } from '@/modules/gatekeeper/rest/billing' @@ -28,7 +28,7 @@ import { getStripeSubscriptionDataFactory, reconcileWorkspaceSubscriptionFactory } from '@/modules/gatekeeper/clients/stripe' -import { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' +import type { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' import coreModule from '@/modules/core/index' import { isProjectReadOnlyFactory } from '@/modules/gatekeeper/services/readOnly' import { WorkspaceReadOnlyError } from '@/modules/gatekeeper/errors/billing' diff --git a/packages/server/modules/gatekeeper/repositories/billing.ts b/packages/server/modules/gatekeeper/repositories/billing.ts index c379b7f41..2cef6f5f7 100644 --- a/packages/server/modules/gatekeeper/repositories/billing.ts +++ b/packages/server/modules/gatekeeper/repositories/billing.ts @@ -1,5 +1,5 @@ import { buildTableHelper, Streams } from '@/modules/core/dbSchema' -import { +import type { CheckoutSession, GetCheckoutSession, GetWorkspacePlan, @@ -18,15 +18,16 @@ import { GetWorkspaceWithPlan, GetWorkspacePlansByWorkspaceId } from '@/modules/gatekeeper/domain/billing' -import { +import type { GetWorkspacesByPlanDaysTillExpiry, GetWorkspacePlanByProjectId } from '@/modules/gatekeeper/domain/operations' import { formatJsonArrayRecords } from '@/modules/shared/helpers/dbHelper' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { Workspaces } from '@/modules/workspacesCore/helpers/db' -import { PaidWorkspacePlans, WorkspacePlan } from '@speckle/shared' -import { Knex } from 'knex' +import type { WorkspacePlan } from '@speckle/shared' +import { PaidWorkspacePlans } from '@speckle/shared' +import type { Knex } from 'knex' import { omit } from 'lodash-es' const WorkspacePlans = buildTableHelper('workspace_plans', [ diff --git a/packages/server/modules/gatekeeper/repositories/workspaceSeat.ts b/packages/server/modules/gatekeeper/repositories/workspaceSeat.ts index 75648ff7e..536a4f9e4 100644 --- a/packages/server/modules/gatekeeper/repositories/workspaceSeat.ts +++ b/packages/server/modules/gatekeeper/repositories/workspaceSeat.ts @@ -1,7 +1,7 @@ import { StreamAcl, Streams } from '@/modules/core/dbSchema' -import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' -import { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' -import { +import type { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' +import type { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' +import type { CountSeatsByTypeInWorkspace, CreateWorkspaceSeat, DeleteWorkspaceSeat, @@ -10,9 +10,9 @@ import { GetWorkspaceUserSeat, GetWorkspaceUserSeats } from '@/modules/gatekeeper/domain/operations' -import { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' import { WorkspaceAcl, WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { Knex } from 'knex' +import type { Knex } from 'knex' export { getWorkspaceRoleAndSeatFactory, getWorkspaceRolesAndSeatsFactory diff --git a/packages/server/modules/gatekeeper/rest/billing.ts b/packages/server/modules/gatekeeper/rest/billing.ts index 3dd572d3f..a56e0e992 100644 --- a/packages/server/modules/gatekeeper/rest/billing.ts +++ b/packages/server/modules/gatekeeper/rest/billing.ts @@ -1,6 +1,6 @@ import { Router } from 'express' import { ensureError } from '@speckle/shared' -import { Stripe } from 'stripe' +import type { Stripe } from 'stripe' import { getStripeEndpointSigningKey } from '@/modules/shared/helpers/envHelper' import { db } from '@/db/knex' import { completeCheckoutSessionFactory } from '@/modules/gatekeeper/services/checkout' @@ -21,7 +21,10 @@ import { } from '@/modules/gatekeeper/repositories/billing' import { WorkspaceAlreadyPaidError } from '@/modules/gatekeeper/errors/billing' import { handleSubscriptionUpdateFactory } from '@/modules/gatekeeper/services/subscriptions' -import { GetStripeClient, SubscriptionData } from '@/modules/gatekeeper/domain/billing' +import type { + GetStripeClient, + SubscriptionData +} from '@/modules/gatekeeper/domain/billing' import { extendLoggerComponent } from '@/observability/logging' import { OperationName, diff --git a/packages/server/modules/gatekeeper/scopes.ts b/packages/server/modules/gatekeeper/scopes.ts index 047faec89..fb0367bd8 100644 --- a/packages/server/modules/gatekeeper/scopes.ts +++ b/packages/server/modules/gatekeeper/scopes.ts @@ -1,4 +1,4 @@ -import { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' import { Scopes } from '@speckle/shared' export const gatekeeperScopes: TokenScopeData[] = [ diff --git a/packages/server/modules/gatekeeper/services/checkout.ts b/packages/server/modules/gatekeeper/services/checkout.ts index 4620a88b2..9ba96950a 100644 --- a/packages/server/modules/gatekeeper/services/checkout.ts +++ b/packages/server/modules/gatekeeper/services/checkout.ts @@ -1,20 +1,20 @@ -import { +import type { GetCheckoutSession, UpdateCheckoutSessionStatus, UpsertWorkspaceSubscription, UpsertPaidWorkspacePlan, GetSubscriptionData, - getSubscriptionState, GetWorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' +import { getSubscriptionState } from '@/modules/gatekeeper/domain/billing' import { CheckoutSessionNotFoundError, WorkspaceAlreadyPaidError, WorkspacePlanNotFoundError } from '@/modules/gatekeeper/errors/billing' import { throwUncoveredError } from '@speckle/shared' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { GetWorkspacePlan } from '@speckle/shared/authz' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetWorkspacePlan } from '@speckle/shared/authz' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' export const completeCheckoutSessionFactory = diff --git a/packages/server/modules/gatekeeper/services/checkout/startCheckoutSession.ts b/packages/server/modules/gatekeeper/services/checkout/startCheckoutSession.ts index c16761c08..f2f9d675a 100644 --- a/packages/server/modules/gatekeeper/services/checkout/startCheckoutSession.ts +++ b/packages/server/modules/gatekeeper/services/checkout/startCheckoutSession.ts @@ -1,14 +1,14 @@ -import { +import type { CheckoutSession, CreateCheckoutSession, Currency, DeleteCheckoutSession, GetWorkspaceCheckoutSession, GetWorkspacePlan, - SaveCheckoutSession, - WorkspaceSeatType + SaveCheckoutSession } from '@/modules/gatekeeper/domain/billing' -import { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' import { InvalidWorkspacePlanUpgradeError, WorkspaceAlreadyPaidError, @@ -16,12 +16,8 @@ import { } from '@/modules/gatekeeper/errors/billing' import { isUpgradeWorkspacePlanValid } from '@/modules/gatekeeper/services/upgrades' import { NotFoundError } from '@/modules/shared/errors' -import { - PaidWorkspacePlans, - throwUncoveredError, - TIME_MS, - WorkspacePlanBillingIntervals -} from '@speckle/shared' +import type { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared' +import { throwUncoveredError, TIME_MS } from '@speckle/shared' export const startCheckoutSessionFactory = ({ diff --git a/packages/server/modules/gatekeeper/services/featureAuthorization.ts b/packages/server/modules/gatekeeper/services/featureAuthorization.ts index 480cf4592..a02762dad 100644 --- a/packages/server/modules/gatekeeper/services/featureAuthorization.ts +++ b/packages/server/modules/gatekeeper/services/featureAuthorization.ts @@ -1,5 +1,5 @@ -import { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' -import { +import type { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' +import type { CanWorkspaceAccessFeature, WorkspaceFeatureAccessFunction } from '@/modules/gatekeeper/domain/operations' diff --git a/packages/server/modules/gatekeeper/services/prices.spec.ts b/packages/server/modules/gatekeeper/services/prices.spec.ts index 238d5ff83..e08a6f489 100644 --- a/packages/server/modules/gatekeeper/services/prices.spec.ts +++ b/packages/server/modules/gatekeeper/services/prices.spec.ts @@ -8,7 +8,7 @@ import { mockRedisCacheProviderFactory } from '@/test/redisHelper' import { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared' import { expect } from 'chai' import { flatten } from 'lodash-es' -import { WorkspacePlanProductAndPriceIds } from '@/modules/gatekeeper/domain/billing' +import type { WorkspacePlanProductAndPriceIds } from '@/modules/gatekeeper/domain/billing' const testProductAndPriceIds: WorkspacePlanProductAndPriceIds = { [PaidWorkspacePlans.Team]: { diff --git a/packages/server/modules/gatekeeper/services/prices.ts b/packages/server/modules/gatekeeper/services/prices.ts index da44fd4a5..c3814ad67 100644 --- a/packages/server/modules/gatekeeper/services/prices.ts +++ b/packages/server/modules/gatekeeper/services/prices.ts @@ -1,12 +1,10 @@ -import { +import type { GetRecurringPrices, GetWorkspacePlanProductPrices, GetWorkspacePlanProductAndPriceIds } from '@/modules/gatekeeper/domain/billing' -import { - Currency, - WorkspacePlanProductPrices -} from '@/modules/gatekeeperCore/domain/billing' +import type { WorkspacePlanProductPrices } from '@/modules/gatekeeperCore/domain/billing' +import { Currency } from '@/modules/gatekeeperCore/domain/billing' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { redisCacheProviderFactory, diff --git a/packages/server/modules/gatekeeper/services/readOnly.ts b/packages/server/modules/gatekeeper/services/readOnly.ts index 0741dedac..188fc11aa 100644 --- a/packages/server/modules/gatekeeper/services/readOnly.ts +++ b/packages/server/modules/gatekeeper/services/readOnly.ts @@ -1,6 +1,6 @@ -import { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' -import { GetWorkspacePlanByProjectId } from '@/modules/gatekeeper/domain/operations' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' +import type { GetWorkspacePlanByProjectId } from '@/modules/gatekeeper/domain/operations' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { isWorkspacePlanStatusReadOnly } from '@speckle/shared' export const isWorkspaceReadOnlyFactory = diff --git a/packages/server/modules/gatekeeper/services/subscriptions.ts b/packages/server/modules/gatekeeper/services/subscriptions.ts index 876d8a421..3cc98f441 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions.ts @@ -1,5 +1,4 @@ -import { - getSubscriptionState, +import type { GetWorkspacePlan, GetWorkspacePlanPriceId, GetWorkspacePlanProductId, @@ -9,7 +8,10 @@ import { SubscriptionData, SubscriptionDataInput, UpsertPaidWorkspacePlan, - UpsertWorkspaceSubscription, + UpsertWorkspaceSubscription +} from '@/modules/gatekeeper/domain/billing' +import { + getSubscriptionState, WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { @@ -17,17 +19,13 @@ import { WorkspacePlanNotFoundError, WorkspaceSubscriptionNotFoundError } from '@/modules/gatekeeper/errors/billing' -import { - PaidWorkspacePlans, - PaidWorkspacePlanStatuses, - throwUncoveredError, - WorkspacePlans -} from '@speckle/shared' +import type { PaidWorkspacePlans, PaidWorkspacePlanStatuses } from '@speckle/shared' +import { throwUncoveredError, WorkspacePlans } from '@speckle/shared' import { cloneDeep, isEqual, omit } from 'lodash-es' -import { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' -import { Logger } from '@/observability/logging' +import type { Logger } from '@/observability/logging' export const handleSubscriptionUpdateFactory = ({ diff --git a/packages/server/modules/gatekeeper/services/subscriptions/calculateNewBillingCycleEnd.ts b/packages/server/modules/gatekeeper/services/subscriptions/calculateNewBillingCycleEnd.ts index ec8150f09..bfb208cfc 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions/calculateNewBillingCycleEnd.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions/calculateNewBillingCycleEnd.ts @@ -1,4 +1,4 @@ -import { WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' +import type { WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' import { throwUncoveredError } from '@speckle/shared' export const calculateNewBillingCycleEnd = ({ diff --git a/packages/server/modules/gatekeeper/services/subscriptions/manageSubscriptionDownscale.ts b/packages/server/modules/gatekeeper/services/subscriptions/manageSubscriptionDownscale.ts index aff83e268..d23efb140 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions/manageSubscriptionDownscale.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions/manageSubscriptionDownscale.ts @@ -1,20 +1,20 @@ -import { +import type { GetSubscriptionData, GetWorkspacePlan, GetWorkspacePlanProductId, GetWorkspaceSubscriptions, ReconcileSubscriptionData, UpsertWorkspaceSubscription, - WorkspaceSeatType, WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' -import { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' import { WorkspacePlanMismatchError, WorkspacePlanNotFoundError } from '@/modules/gatekeeper/errors/billing' import { mutateSubscriptionDataWithNewValidSeatNumbers } from '@/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers' -import { Logger } from '@/observability/logging' +import type { Logger } from '@/observability/logging' import { throwUncoveredError, WorkspacePlans } from '@speckle/shared' import { cloneDeep, isEqual } from 'lodash-es' diff --git a/packages/server/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers.ts b/packages/server/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers.ts index a92039a88..2089b868d 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers.ts @@ -1,8 +1,8 @@ -import { +import type { GetWorkspacePlanProductId, SubscriptionDataInput } from '@/modules/gatekeeper/domain/billing' -import { WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing' +import type { WorkspacePricingProducts } from '@/modules/gatekeeperCore/domain/billing' import { LogicError } from '@/modules/shared/errors' import { SubscriptionStateError } from '@/modules/gatekeeper/errors/billing' diff --git a/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts b/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts index d5f0f2686..6af408190 100644 --- a/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts +++ b/packages/server/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription.ts @@ -1,14 +1,14 @@ -import { +import type { GetWorkspacePlan, GetWorkspacePlanPriceId, GetWorkspacePlanProductId, GetWorkspaceSubscription, ReconcileSubscriptionData, SubscriptionDataInput, - UpsertWorkspaceSubscription, - WorkspaceSeatType + UpsertWorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' -import { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { CountSeatsByTypeInWorkspace } from '@/modules/gatekeeper/domain/operations' import { InvalidWorkspacePlanUpgradeError, UnsupportedWorkspacePlanError, @@ -22,12 +22,8 @@ import { isPaidPlanType } from '@/modules/gatekeeper/helpers/plans' import { calculateNewBillingCycleEnd } from '@/modules/gatekeeper/services/subscriptions/calculateNewBillingCycleEnd' import { mutateSubscriptionDataWithNewValidSeatNumbers } from '@/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers' import { isUpgradeWorkspacePlanValid } from '@/modules/gatekeeper/services/upgrades' -import { - PaidWorkspacePlans, - throwUncoveredError, - WorkspacePlanBillingIntervals, - WorkspacePlans -} from '@speckle/shared' +import type { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared' +import { throwUncoveredError, WorkspacePlans } from '@speckle/shared' import { cloneDeep } from 'lodash-es' export const upgradeWorkspaceSubscriptionFactory = diff --git a/packages/server/modules/gatekeeper/services/upgrades.ts b/packages/server/modules/gatekeeper/services/upgrades.ts index 8f3a93eea..d9f8ea358 100644 --- a/packages/server/modules/gatekeeper/services/upgrades.ts +++ b/packages/server/modules/gatekeeper/services/upgrades.ts @@ -1,4 +1,4 @@ -import { WorkspacePlans } from '@speckle/shared' +import type { WorkspacePlans } from '@speckle/shared' const WorkspacePlansUpgradeMapping: Record = { academia: [], diff --git a/packages/server/modules/gatekeeper/services/validateLicense.ts b/packages/server/modules/gatekeeper/services/validateLicense.ts index 225dfbe2b..4bd9edc23 100644 --- a/packages/server/modules/gatekeeper/services/validateLicense.ts +++ b/packages/server/modules/gatekeeper/services/validateLicense.ts @@ -5,7 +5,8 @@ import { getLicenseToken, isTestEnv } from '@/modules/shared/helpers/envHelper' -import { LicenseTokenClaims, EnabledModules } from '@/modules/gatekeeper/domain/types' +import type { EnabledModules } from '@/modules/gatekeeper/domain/types' +import { LicenseTokenClaims } from '@/modules/gatekeeper/domain/types' type LicensedModuleNames = (keyof EnabledModules)[] diff --git a/packages/server/modules/gatekeeper/services/workspacePlans.ts b/packages/server/modules/gatekeeper/services/workspacePlans.ts index 25b8d5b1a..d29eca33a 100644 --- a/packages/server/modules/gatekeeper/services/workspacePlans.ts +++ b/packages/server/modules/gatekeeper/services/workspacePlans.ts @@ -1,4 +1,4 @@ -import { +import type { GetWorkspacePlan, GetWorkspaceSubscription, UpsertWorkspacePlan @@ -8,10 +8,11 @@ import { WorkspacePlanNotFoundError } from '@/modules/gatekeeper/errors/billing' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { GetWorkspace } from '@/modules/workspaces/domain/operations' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetWorkspace } from '@/modules/workspaces/domain/operations' import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' -import { throwUncoveredError, WorkspacePlan, WorkspacePlans } from '@speckle/shared' +import type { WorkspacePlan } from '@speckle/shared' +import { throwUncoveredError, WorkspacePlans } from '@speckle/shared' export const updateWorkspacePlanFactory = ({ diff --git a/packages/server/modules/gatekeeper/tests/helpers.ts b/packages/server/modules/gatekeeper/tests/helpers.ts index 41607cc54..895e3c3aa 100644 --- a/packages/server/modules/gatekeeper/tests/helpers.ts +++ b/packages/server/modules/gatekeeper/tests/helpers.ts @@ -1,4 +1,4 @@ -import { +import type { SubscriptionData, WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' diff --git a/packages/server/modules/gatekeeper/tests/helpers/stripe.ts b/packages/server/modules/gatekeeper/tests/helpers/stripe.ts index 5b214a94b..9f7fe2d54 100644 --- a/packages/server/modules/gatekeeper/tests/helpers/stripe.ts +++ b/packages/server/modules/gatekeeper/tests/helpers/stripe.ts @@ -1,4 +1,4 @@ -import Stripe from 'stripe' +import type Stripe from 'stripe' export const buildFakeStripe = (updates: Record = {}): Stripe => { return { diff --git a/packages/server/modules/gatekeeper/tests/helpers/workspacePlan.ts b/packages/server/modules/gatekeeper/tests/helpers/workspacePlan.ts index 582205c03..6ea2afee9 100644 --- a/packages/server/modules/gatekeeper/tests/helpers/workspacePlan.ts +++ b/packages/server/modules/gatekeeper/tests/helpers/workspacePlan.ts @@ -1,7 +1,7 @@ -import { WorkspacePlan } from '@speckle/shared' +import type { WorkspacePlan } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' import { assign } from 'lodash-es' -import { +import type { SubscriptionData, SubscriptionProduct, WorkspaceSubscription diff --git a/packages/server/modules/gatekeeper/tests/integration/prices.spec.ts b/packages/server/modules/gatekeeper/tests/integration/prices.spec.ts index 90d4f99e5..875a0ef75 100644 --- a/packages/server/modules/gatekeeper/tests/integration/prices.spec.ts +++ b/packages/server/modules/gatekeeper/tests/integration/prices.spec.ts @@ -1,6 +1,7 @@ import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { GetWorkspacePlanPricesDocument } from '@/modules/core/graph/generated/graphql' -import { TestApolloServer, testApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { PaidWorkspacePlans } from '@speckle/shared' import { expect } from 'chai' import { Currency } from '@/modules/gatekeeper/domain/billing' diff --git a/packages/server/modules/gatekeeper/tests/integration/workspace.graph.spec.ts b/packages/server/modules/gatekeeper/tests/integration/workspace.graph.spec.ts index b6d817ff7..40718e841 100644 --- a/packages/server/modules/gatekeeper/tests/integration/workspace.graph.spec.ts +++ b/packages/server/modules/gatekeeper/tests/integration/workspace.graph.spec.ts @@ -11,8 +11,8 @@ import { assignToWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import type { BasicTestUser } from '@/test/authHelper' import { - BasicTestUser, createAuthTokenForUser, createTestUser, createTestUsers, @@ -23,18 +23,14 @@ import { GetWorkspacePlanUsageDocument, GetWorkspaceWithSubscriptionDocument } from '@/modules/core/graph/generated/graphql' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { - BasicTestBranch, - createTestBranches -} from '@/test/speckle-helpers/branchHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranches } from '@/test/speckle-helpers/branchHelper' import { createTestCommit, createTestObject } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { PaidWorkspacePlans, Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/gatekeeper/tests/intergration/repositories/workspacePlan.spec.ts b/packages/server/modules/gatekeeper/tests/intergration/repositories/workspacePlan.spec.ts index 73831b05d..bc648cba7 100644 --- a/packages/server/modules/gatekeeper/tests/intergration/repositories/workspacePlan.spec.ts +++ b/packages/server/modules/gatekeeper/tests/intergration/repositories/workspacePlan.spec.ts @@ -4,17 +4,15 @@ import { upsertWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { - BasicTestWorkspace, buildBasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser } from '@/test/authHelper' -import { - PaidWorkspacePlans, - PaidWorkspacePlanStatuses, - WorkspacePlan -} from '@speckle/shared' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' +import type { WorkspacePlan } from '@speckle/shared' +import { PaidWorkspacePlans, PaidWorkspacePlanStatuses } from '@speckle/shared' import { expect } from 'chai' const { FF_WORKSPACES_MODULE_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/gatekeeper/tests/unit/checkout.spec.ts b/packages/server/modules/gatekeeper/tests/unit/checkout.spec.ts index 8929b7b0d..a7c885d0a 100644 --- a/packages/server/modules/gatekeeper/tests/unit/checkout.spec.ts +++ b/packages/server/modules/gatekeeper/tests/unit/checkout.spec.ts @@ -7,17 +7,14 @@ import { completeCheckoutSessionFactory } from '@/modules/gatekeeper/services/ch import { expectToThrow } from '@/test/assertionHelper' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' -import { +import type { CheckoutSession, SubscriptionData, WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' import { omit } from 'lodash-es' -import { - PaidWorkspacePlan, - PaidWorkspacePlans, - WorkspacePlanBillingIntervals -} from '@speckle/shared' +import type { PaidWorkspacePlan, WorkspacePlanBillingIntervals } from '@speckle/shared' +import { PaidWorkspacePlans } from '@speckle/shared' import { startCheckoutSessionFactory } from '@/modules/gatekeeper/services/checkout/startCheckoutSession' import { NotFoundError } from '@/modules/shared/errors' import { buildTestWorkspacePlan } from '@/modules/gatekeeper/tests/helpers/workspacePlan' diff --git a/packages/server/modules/gatekeeper/tests/unit/readOnly.spec.ts b/packages/server/modules/gatekeeper/tests/unit/readOnly.spec.ts index c5136c57a..47ab7b725 100644 --- a/packages/server/modules/gatekeeper/tests/unit/readOnly.spec.ts +++ b/packages/server/modules/gatekeeper/tests/unit/readOnly.spec.ts @@ -1,5 +1,5 @@ -import { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' -import { GetWorkspacePlanByProjectId } from '@/modules/gatekeeper/domain/operations' +import type { GetWorkspacePlan } from '@/modules/gatekeeper/domain/billing' +import type { GetWorkspacePlanByProjectId } from '@/modules/gatekeeper/domain/operations' import { isProjectReadOnlyFactory, isWorkspaceReadOnlyFactory diff --git a/packages/server/modules/gatekeeper/tests/unit/subscriptions.spec.ts b/packages/server/modules/gatekeeper/tests/unit/subscriptions.spec.ts index 02a9ff5f2..89cce5771 100644 --- a/packages/server/modules/gatekeeper/tests/unit/subscriptions.spec.ts +++ b/packages/server/modules/gatekeeper/tests/unit/subscriptions.spec.ts @@ -1,10 +1,10 @@ -import { +import type { SubscriptionData, SubscriptionDataInput, SubscriptionUpdateIntent, - WorkspaceSeatType, WorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { WorkspaceNotPaidPlanError, WorkspacePlanMismatchError, @@ -23,12 +23,13 @@ import { createTestWorkspaceSubscription } from '@/modules/gatekeeper/tests/helpers' import { expectToThrow } from '@/test/assertionHelper' -import { PaidWorkspacePlans, throwUncoveredError, WorkspacePlan } from '@speckle/shared' +import type { WorkspacePlan } from '@speckle/shared' +import { PaidWorkspacePlans, throwUncoveredError } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' import { omit } from 'lodash-es' import { upgradeWorkspaceSubscriptionFactory } from '@/modules/gatekeeper/services/subscriptions/upgradeWorkspaceSubscription' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { testLogger } from '@/observability/logging' import { mutateSubscriptionDataWithNewValidSeatNumbers } from '@/modules/gatekeeper/services/subscriptions/mutateSubscriptionDataWithNewValidSeatNumbers' diff --git a/packages/server/modules/gatekeeper/tests/unit/workspacePlans.spec.ts b/packages/server/modules/gatekeeper/tests/unit/workspacePlans.spec.ts index 281f3b106..b727e2dff 100644 --- a/packages/server/modules/gatekeeper/tests/unit/workspacePlans.spec.ts +++ b/packages/server/modules/gatekeeper/tests/unit/workspacePlans.spec.ts @@ -1,14 +1,14 @@ import { InvalidWorkspacePlanStatus } from '@/modules/gatekeeper/errors/billing' import { updateWorkspacePlanFactory } from '@/modules/gatekeeper/services/workspacePlans' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' -import { WorkspaceWithOptionalRole } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceWithOptionalRole } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' +import type { WorkspacePlan } from '@speckle/shared' import { PaidWorkspacePlans, PaidWorkspacePlanStatuses, UnpaidWorkspacePlans, - WorkspacePlan, WorkspacePlans } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/gatekeeperCore/domain/billing.ts b/packages/server/modules/gatekeeperCore/domain/billing.ts index 8eb2a8644..3465596c0 100644 --- a/packages/server/modules/gatekeeperCore/domain/billing.ts +++ b/packages/server/modules/gatekeeperCore/domain/billing.ts @@ -1,4 +1,4 @@ -import { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared' +import type { PaidWorkspacePlans, WorkspacePlanBillingIntervals } from '@speckle/shared' export type WorkspacePricingProducts = PaidWorkspacePlans diff --git a/packages/server/modules/gatekeeperCore/domain/events.ts b/packages/server/modules/gatekeeperCore/domain/events.ts index 7db1fa8c8..ee13ab7cf 100644 --- a/packages/server/modules/gatekeeperCore/domain/events.ts +++ b/packages/server/modules/gatekeeperCore/domain/events.ts @@ -1,5 +1,5 @@ -import { BillingInterval } from '@/modules/core/graph/generated/graphql' -import { WorkspacePlan } from '@speckle/shared' +import type { BillingInterval } from '@/modules/core/graph/generated/graphql' +import type { WorkspacePlan } from '@speckle/shared' export const gatekeeperEventNamespace = 'gatekeeper' as const diff --git a/packages/server/modules/gatekeeperCore/graph/resolvers/index.ts b/packages/server/modules/gatekeeperCore/graph/resolvers/index.ts index 582dd1926..7dd27605d 100644 --- a/packages/server/modules/gatekeeperCore/graph/resolvers/index.ts +++ b/packages/server/modules/gatekeeperCore/graph/resolvers/index.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { GatekeeperModuleDisabledError } from '@/modules/gatekeeperCore/errors' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/gatekeeperCore/helpers/graphTypes.ts b/packages/server/modules/gatekeeperCore/helpers/graphTypes.ts index 4b819db33..1ac1dbcbc 100644 --- a/packages/server/modules/gatekeeperCore/helpers/graphTypes.ts +++ b/packages/server/modules/gatekeeperCore/helpers/graphTypes.ts @@ -1,5 +1,5 @@ -import { Price } from '@/modules/core/graph/generated/graphql' -import { WorkspacePlan } from '@speckle/shared' +import type { Price } from '@/modules/core/graph/generated/graphql' +import type { WorkspacePlan } from '@speckle/shared' export type PriceGraphQLReturn = Omit diff --git a/packages/server/modules/gatekeeperCore/index.ts b/packages/server/modules/gatekeeperCore/index.ts index f333af890..21b0545b9 100644 --- a/packages/server/modules/gatekeeperCore/index.ts +++ b/packages/server/modules/gatekeeperCore/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { moduleLogger } from '@/observability/logging' export const init: SpeckleModule['init'] = () => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20241018132400_workspace_checkout.ts b/packages/server/modules/gatekeeperCore/migrations/20241018132400_workspace_checkout.ts index da222e7bf..06b4b89a3 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20241018132400_workspace_checkout.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20241018132400_workspace_checkout.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('workspace_plans', (table) => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20241105144301_cascade_delete_workspace_plans.ts b/packages/server/modules/gatekeeperCore/migrations/20241105144301_cascade_delete_workspace_plans.ts index 446fd8963..0f62e6c78 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20241105144301_cascade_delete_workspace_plans.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20241105144301_cascade_delete_workspace_plans.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'workspace_plans' diff --git a/packages/server/modules/gatekeeperCore/migrations/20241120063859_cascade_delete_checkout_session.ts b/packages/server/modules/gatekeeperCore/migrations/20241120063859_cascade_delete_checkout_session.ts index a310bef8a..75dfc44b4 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20241120063859_cascade_delete_checkout_session.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20241120063859_cascade_delete_checkout_session.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspace_checkout_sessions', (table) => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20241126084242_workspace_plan_rename.ts b/packages/server/modules/gatekeeperCore/migrations/20241126084242_workspace_plan_rename.ts index 613a21a3e..22215a7e0 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20241126084242_workspace_plan_rename.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20241126084242_workspace_plan_rename.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex('workspace_plans').where('name', '=', 'team').update({ name: 'starter' }) diff --git a/packages/server/modules/gatekeeperCore/migrations/20241126142602_workspace_plan_date.ts b/packages/server/modules/gatekeeperCore/migrations/20241126142602_workspace_plan_date.ts index 13d075c7a..9a4246a28 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20241126142602_workspace_plan_date.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20241126142602_workspace_plan_date.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspace_plans', (table) => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20250224141824_create_workspace_seats_table.ts b/packages/server/modules/gatekeeperCore/migrations/20250224141824_create_workspace_seats_table.ts index 4bef3681e..c0a090a07 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250224141824_create_workspace_seats_table.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250224141824_create_workspace_seats_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const WORKSPACE_SEATS_TABLE = 'workspace_seats' const WORKSPACES_TABLE = 'workspaces' diff --git a/packages/server/modules/gatekeeperCore/migrations/20250410144546_subscription_currencies.ts b/packages/server/modules/gatekeeperCore/migrations/20250410144546_subscription_currencies.ts index 06a3b94a6..8d4f2cabd 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250410144546_subscription_currencies.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250410144546_subscription_currencies.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspace_checkout_sessions', (table) => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20250424064652_migrate_old_plans.ts b/packages/server/modules/gatekeeperCore/migrations/20250424064652_migrate_old_plans.ts index 546b2d3ff..e9b829e91 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250424064652_migrate_old_plans.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250424064652_migrate_old_plans.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * The full stripe+db migration should've already executed, this is a fallback for dev/test envs to migrate broken plans diff --git a/packages/server/modules/gatekeeperCore/migrations/20250521102621_add_updatedAt_to_workspace_plans.ts b/packages/server/modules/gatekeeperCore/migrations/20250521102621_add_updatedAt_to_workspace_plans.ts index 28625c540..28d2503a7 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250521102621_add_updatedAt_to_workspace_plans.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250521102621_add_updatedAt_to_workspace_plans.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'workspace_plans' export async function up(knex: Knex): Promise { diff --git a/packages/server/modules/gatekeeperCore/migrations/20250528074132_add_default_seat_type.ts b/packages/server/modules/gatekeeperCore/migrations/20250528074132_add_default_seat_type.ts index cc008d956..885555aa0 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250528074132_add_default_seat_type.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250528074132_add_default_seat_type.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/gatekeeperCore/migrations/20250620072434_add_userId_to_workspaceCheckoutSessions.ts b/packages/server/modules/gatekeeperCore/migrations/20250620072434_add_userId_to_workspaceCheckoutSessions.ts index aee9c04c9..cf24f7b83 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250620072434_add_userId_to_workspaceCheckoutSessions.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250620072434_add_userId_to_workspaceCheckoutSessions.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'workspace_checkout_sessions' const COLUMN_NAME = 'userId' diff --git a/packages/server/modules/gatekeeperCore/migrations/20250620121314_add_uppdateIntent_to_subscriptions.ts b/packages/server/modules/gatekeeperCore/migrations/20250620121314_add_uppdateIntent_to_subscriptions.ts index 2b82a15cf..94ad30608 100644 --- a/packages/server/modules/gatekeeperCore/migrations/20250620121314_add_uppdateIntent_to_subscriptions.ts +++ b/packages/server/modules/gatekeeperCore/migrations/20250620121314_add_uppdateIntent_to_subscriptions.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspace_subscriptions', (table) => { diff --git a/packages/server/modules/gatekeeperCore/utils/limits.ts b/packages/server/modules/gatekeeperCore/utils/limits.ts index c684f2e24..a8bad63b3 100644 --- a/packages/server/modules/gatekeeperCore/utils/limits.ts +++ b/packages/server/modules/gatekeeperCore/utils/limits.ts @@ -1,10 +1,12 @@ -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' -import { - getProjectLimitDateFactory as getProjectLimitDateFactoryBase, - isCreatedBeyondHistoryLimitCutoffFactory as isCreatedBeyondHistoryLimitCutoffFactoryBase, +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { IsCreatedBeyondHistoryLimitCutoff, GetProjectLimitDate } from '@speckle/shared' +import { + getProjectLimitDateFactory as getProjectLimitDateFactoryBase, + isCreatedBeyondHistoryLimitCutoffFactory as isCreatedBeyondHistoryLimitCutoffFactoryBase +} from '@speckle/shared' import { PersonalProjectsLimits } from '@speckle/shared/authz' import { getFeatureFlags } from '@speckle/shared/environment' diff --git a/packages/server/modules/gendo/clients/gendo.ts b/packages/server/modules/gendo/clients/gendo.ts index af26558c5..f807a54af 100644 --- a/packages/server/modules/gendo/clients/gendo.ts +++ b/packages/server/modules/gendo/clients/gendo.ts @@ -1,4 +1,4 @@ -import { RequestNewImageGeneration } from '@/modules/gendo/domain/operations' +import type { RequestNewImageGeneration } from '@/modules/gendo/domain/operations' import { GendoRenderRequestError } from '@/modules/gendo/errors/main' /** diff --git a/packages/server/modules/gendo/domain/operations.ts b/packages/server/modules/gendo/domain/operations.ts index a5088342d..4cfe00fef 100644 --- a/packages/server/modules/gendo/domain/operations.ts +++ b/packages/server/modules/gendo/domain/operations.ts @@ -1,7 +1,7 @@ -import { GendoAiRenderInput } from '@/modules/core/graph/generated/graphql' -import { GendoAIRender, UserCredits } from '@/modules/gendo/domain/types' -import { NullableKeysToOptional, Optional } from '@speckle/shared' -import { SetOptional } from 'type-fest' +import type { GendoAiRenderInput } from '@/modules/core/graph/generated/graphql' +import type { GendoAIRender, UserCredits } from '@/modules/gendo/domain/types' +import type { NullableKeysToOptional, Optional } from '@speckle/shared' +import type { SetOptional } from 'type-fest' export type StoreRender = ( input: NullableKeysToOptional> diff --git a/packages/server/modules/gendo/domain/types.ts b/packages/server/modules/gendo/domain/types.ts index 3b0f6c67c..92d2e4ef9 100644 --- a/packages/server/modules/gendo/domain/types.ts +++ b/packages/server/modules/gendo/domain/types.ts @@ -1,4 +1,4 @@ -import { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' +import type { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' export type GendoAIRender = GendoAIRenderRecord diff --git a/packages/server/modules/gendo/graph/resolvers/index.ts b/packages/server/modules/gendo/graph/resolvers/index.ts index 8ee98e447..6c1d64d5d 100644 --- a/packages/server/modules/gendo/graph/resolvers/index.ts +++ b/packages/server/modules/gendo/graph/resolvers/index.ts @@ -1,5 +1,5 @@ import { authorizeResolver } from '@/modules/shared' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { Roles } from '@speckle/shared' import { createRenderRequestFactory } from '@/modules/gendo/services' import { diff --git a/packages/server/modules/gendo/helpers/types/graphTypes.ts b/packages/server/modules/gendo/helpers/types/graphTypes.ts index 19ebcbb33..8ace86c99 100644 --- a/packages/server/modules/gendo/helpers/types/graphTypes.ts +++ b/packages/server/modules/gendo/helpers/types/graphTypes.ts @@ -1,3 +1,3 @@ -import { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' +import type { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' export type GendoAIRenderGraphQLReturn = GendoAIRenderRecord diff --git a/packages/server/modules/gendo/helpers/types/index.ts b/packages/server/modules/gendo/helpers/types/index.ts index 9dbd2a20a..9bddd1043 100644 --- a/packages/server/modules/gendo/helpers/types/index.ts +++ b/packages/server/modules/gendo/helpers/types/index.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' export type GendoAIRenderRecord = { id: string diff --git a/packages/server/modules/gendo/index.ts b/packages/server/modules/gendo/index.ts index 52dff0d1f..fdcc73ab6 100644 --- a/packages/server/modules/gendo/index.ts +++ b/packages/server/modules/gendo/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { moduleLogger } from '@/observability/logging' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import restApi from '@/modules/gendo/rest/index' diff --git a/packages/server/modules/gendo/migrations/20240522130000_gendo.ts b/packages/server/modules/gendo/migrations/20240522130000_gendo.ts index fe68ab964..2df5e5952 100644 --- a/packages/server/modules/gendo/migrations/20240522130000_gendo.ts +++ b/packages/server/modules/gendo/migrations/20240522130000_gendo.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const GENDO_TABLE_NAME = 'gendo_ai_renders' diff --git a/packages/server/modules/gendo/migrations/20241120140402_gendo_credits.ts b/packages/server/modules/gendo/migrations/20241120140402_gendo_credits.ts index 27cce7ff7..9b8e0684a 100644 --- a/packages/server/modules/gendo/migrations/20241120140402_gendo_credits.ts +++ b/packages/server/modules/gendo/migrations/20241120140402_gendo_credits.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('gendo_user_credits', (table) => { diff --git a/packages/server/modules/gendo/repositories/index.ts b/packages/server/modules/gendo/repositories/index.ts index 5505ea78a..dbc419a8a 100644 --- a/packages/server/modules/gendo/repositories/index.ts +++ b/packages/server/modules/gendo/repositories/index.ts @@ -1,5 +1,5 @@ import { GendoAIRenders } from '@/modules/core/dbSchema' -import { +import type { GetLatestVersionRenderRequests, GetRenderByGenerationId, GetUserCredits, @@ -8,9 +8,9 @@ import { UpdateRenderRecord, UpsertUserCredits } from '@/modules/gendo/domain/operations' -import { UserCredits } from '@/modules/gendo/domain/types' -import { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' -import { Knex } from 'knex' +import type { UserCredits } from '@/modules/gendo/domain/types' +import type { GendoAIRenderRecord } from '@/modules/gendo/helpers/types' +import type { Knex } from 'knex' import { pick } from 'lodash-es' const tables = { diff --git a/packages/server/modules/gendo/services/index.ts b/packages/server/modules/gendo/services/index.ts index b74ec6c60..4466f3c0e 100644 --- a/packages/server/modules/gendo/services/index.ts +++ b/packages/server/modules/gendo/services/index.ts @@ -1,10 +1,8 @@ import crs from 'crypto-random-string' -import { - ProjectSubscriptions, - PublishSubscription -} from '@/modules/shared/utils/subscriptions' +import type { PublishSubscription } from '@/modules/shared/utils/subscriptions' +import { ProjectSubscriptions } from '@/modules/shared/utils/subscriptions' -import { +import type { CreateRenderRequest, GetRenderByGenerationId, RequestNewImageGeneration, @@ -12,7 +10,7 @@ import { UpdateRenderRecord, UpdateRenderRequest } from '@/modules/gendo/domain/operations' -import { UploadFileStream } from '@/modules/blobstorage/domain/operations' +import type { UploadFileStream } from '@/modules/blobstorage/domain/operations' import { GendoRenderRequestNotFoundError } from '@/modules/gendo/errors/main' export const createRenderRequestFactory = diff --git a/packages/server/modules/gendo/services/userCredits.ts b/packages/server/modules/gendo/services/userCredits.ts index 42a044588..c762f7b97 100644 --- a/packages/server/modules/gendo/services/userCredits.ts +++ b/packages/server/modules/gendo/services/userCredits.ts @@ -1,5 +1,8 @@ -import { GetUserCredits, UpsertUserCredits } from '@/modules/gendo/domain/operations' -import { UserCredits } from '@/modules/gendo/domain/types' +import type { + GetUserCredits, + UpsertUserCredits +} from '@/modules/gendo/domain/operations' +import type { UserCredits } from '@/modules/gendo/domain/types' import { InsufficientGendoRenderCreditsError } from '@/modules/gendo/errors/main' import dayjs from 'dayjs' diff --git a/packages/server/modules/index.ts b/packages/server/modules/index.ts index 361d4aa97..0878ce056 100644 --- a/packages/server/modules/index.ts +++ b/packages/server/modules/index.ts @@ -19,17 +19,18 @@ import { makeExecutableSchema } from '@graphql-tools/schema' import { moduleLogger } from '@/observability/logging' import { addMocksToSchema } from '@graphql-tools/mock' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { isNonNullable, Optional, TIME_MS } from '@speckle/shared' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { Optional } from '@speckle/shared' +import { isNonNullable, TIME_MS } from '@speckle/shared' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import type { Express } from 'express' -import { RequestDataLoadersBuilder } from '@/modules/shared/helpers/graphqlHelper' -import { ApolloServerOptions } from '@apollo/server' -import { +import type { RequestDataLoadersBuilder } from '@/modules/shared/helpers/graphqlHelper' +import type { ApolloServerOptions } from '@apollo/server' +import type { GraphqlDirectiveBuilder, SchemaTransformer } from '@/modules/core/graph/helpers/directiveHelper' -import { AppMocksConfig } from '@/modules/mocks' -import { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import type { AppMocksConfig } from '@/modules/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' import { LoaderConfigurationError, LogicError } from '@/modules/shared/errors' import type { Registry } from 'prom-client' import type { @@ -43,12 +44,13 @@ import { wrapWithCache } from '@/modules/shared/utils/caching' import TTLCache from '@isaacs/ttlcache' -import { buildRequestLoaders, RequestDataLoaders } from '@/modules/core/loaders' -import { +import type { RequestDataLoaders } from '@/modules/core/loaders' +import { buildRequestLoaders } from '@/modules/core/loaders' +import type { AllAuthCheckContextLoaders, - AuthCheckContextLoaderKeys, AuthCheckContextLoaders } from '@speckle/shared/authz' +import { AuthCheckContextLoaderKeys } from '@speckle/shared/authz' /** * Cached speckle module requires diff --git a/packages/server/modules/loaders.ts b/packages/server/modules/loaders.ts index 614142339..a0c5462fc 100644 --- a/packages/server/modules/loaders.ts +++ b/packages/server/modules/loaders.ts @@ -1,6 +1,6 @@ -import { RequestDataLoaders } from '@/modules/core/loaders' -import { MaybeAsync } from '@speckle/shared' -import { AuthCheckContextLoaders } from '@speckle/shared/authz' +import type { RequestDataLoaders } from '@/modules/core/loaders' +import type { MaybeAsync } from '@speckle/shared' +import type { AuthCheckContextLoaders } from '@speckle/shared/authz' export type ServerLoadersContext = { dataLoaders: RequestDataLoaders diff --git a/packages/server/modules/mocks.ts b/packages/server/modules/mocks.ts index 07b6e41a2..b118353bc 100644 --- a/packages/server/modules/mocks.ts +++ b/packages/server/modules/mocks.ts @@ -1,19 +1,17 @@ -import { ProjectVisibility, Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { ProjectVisibility } from '@/modules/core/graph/generated/graphql' import { mockedApiModules, isProdEnv, isTestEnv } from '@/modules/shared/helpers/envHelper' import { has, reduce } from 'lodash-es' -import { IMockStore, IMocks } from '@graphql-tools/mock' +import type { IMockStore, IMocks } from '@graphql-tools/mock' import { moduleMockConfigs } from '@/modules/index' import { isNonNullable, Roles, SourceAppNames } from '@speckle/shared' -import { - getRandomDbRecords, - mockStoreHelpers, - SpeckleModuleMocksConfig -} from '@/modules/shared/helpers/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import { getRandomDbRecords, mockStoreHelpers } from '@/modules/shared/helpers/mocks' import { Streams } from '@/modules/core/dbSchema' /** diff --git a/packages/server/modules/multiregion/domain/operations.ts b/packages/server/modules/multiregion/domain/operations.ts index ac79ee302..cd79f6d88 100644 --- a/packages/server/modules/multiregion/domain/operations.ts +++ b/packages/server/modules/multiregion/domain/operations.ts @@ -1,14 +1,14 @@ -import { +import type { ProjectRegion, DataRegionsConfig, RegionKey, ServerRegion } from '@/modules/multiregion/domain/types' -import { UpdateServerRegionInput } from '@/modules/core/graph/generated/graphql' -import { InsertableRegionRecord } from '@/modules/multiregion/helpers/types' -import { Optional } from '@speckle/shared' -import { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' -import { Stream } from '@/modules/core/domain/streams/types' +import type { UpdateServerRegionInput } from '@/modules/core/graph/generated/graphql' +import type { InsertableRegionRecord } from '@/modules/multiregion/helpers/types' +import type { Optional } from '@speckle/shared' +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' +import type { Stream } from '@/modules/core/domain/streams/types' export type GetRegions = () => Promise export type GetRegion = (params: { key: string }) => Promise> diff --git a/packages/server/modules/multiregion/domain/types.ts b/packages/server/modules/multiregion/domain/types.ts index 81be41dcc..e9962f489 100644 --- a/packages/server/modules/multiregion/domain/types.ts +++ b/packages/server/modules/multiregion/domain/types.ts @@ -1,5 +1,5 @@ -import { RegionRecord } from '@/modules/multiregion/helpers/types' -import { Nullable } from '@speckle/shared' +import type { RegionRecord } from '@/modules/multiregion/helpers/types' +import type { Nullable } from '@speckle/shared' import { DataRegionsConfig, RegionServerConfig } from '@speckle/shared/environment/db' export { RegionServerConfig, DataRegionsConfig } diff --git a/packages/server/modules/multiregion/graph/mocks/index.ts b/packages/server/modules/multiregion/graph/mocks/index.ts index 2259af88c..a8eb10208 100644 --- a/packages/server/modules/multiregion/graph/mocks/index.ts +++ b/packages/server/modules/multiregion/graph/mocks/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' import { faker } from '@faker-js/faker' export default { diff --git a/packages/server/modules/multiregion/graph/resolvers/index.ts b/packages/server/modules/multiregion/graph/resolvers/index.ts index 98fa028e5..04c7e1f84 100644 --- a/packages/server/modules/multiregion/graph/resolvers/index.ts +++ b/packages/server/modules/multiregion/graph/resolvers/index.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { initializeRegion as initializeDb } from '@/modules/multiregion/utils/dbSelector' import { getAvailableRegionConfig } from '@/modules/multiregion/regionConfig' import { diff --git a/packages/server/modules/multiregion/helpers/graphTypes.ts b/packages/server/modules/multiregion/helpers/graphTypes.ts index de9dee57c..e2b739440 100644 --- a/packages/server/modules/multiregion/helpers/graphTypes.ts +++ b/packages/server/modules/multiregion/helpers/graphTypes.ts @@ -1,3 +1,3 @@ -import { ServerRegion } from '@/modules/multiregion/domain/types' +import type { ServerRegion } from '@/modules/multiregion/domain/types' export type ServerRegionItemGraphQLReturn = ServerRegion diff --git a/packages/server/modules/multiregion/helpers/types.ts b/packages/server/modules/multiregion/helpers/types.ts index 1a7dfb1b3..4534bfc35 100644 --- a/packages/server/modules/multiregion/helpers/types.ts +++ b/packages/server/modules/multiregion/helpers/types.ts @@ -1,5 +1,5 @@ -import { Nullable, NullableKeysToOptional } from '@speckle/shared' -import { SetOptional } from 'type-fest' +import type { Nullable, NullableKeysToOptional } from '@speckle/shared' +import type { SetOptional } from 'type-fest' export type RegionRecord = { key: string diff --git a/packages/server/modules/multiregion/index.ts b/packages/server/modules/multiregion/index.ts index 04553ff42..0b6bba597 100644 --- a/packages/server/modules/multiregion/index.ts +++ b/packages/server/modules/multiregion/index.ts @@ -4,7 +4,7 @@ import { initializeRegisteredRegionClients as initDb } from '@/modules/multiregion/utils/dbSelector' import { isMultiRegionEnabled } from '@/modules/multiregion/helpers' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { initializeRegisteredRegionClients as initBlobs, isMultiRegionBlobStorageEnabled diff --git a/packages/server/modules/multiregion/migrations/20241031081827_create_regions_table.ts b/packages/server/modules/multiregion/migrations/20241031081827_create_regions_table.ts index 0b76f2d68..b5fc9dfbc 100644 --- a/packages/server/modules/multiregion/migrations/20241031081827_create_regions_table.ts +++ b/packages/server/modules/multiregion/migrations/20241031081827_create_regions_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'regions' diff --git a/packages/server/modules/multiregion/regionConfig.ts b/packages/server/modules/multiregion/regionConfig.ts index 27227c8d5..5708737e4 100644 --- a/packages/server/modules/multiregion/regionConfig.ts +++ b/packages/server/modules/multiregion/regionConfig.ts @@ -1,4 +1,4 @@ -import { GetAvailableRegionConfig } from '@/modules/multiregion/domain/operations' +import type { GetAvailableRegionConfig } from '@/modules/multiregion/domain/operations' import { packageRoot } from '@/bootstrap' import path from 'node:path' @@ -9,13 +9,13 @@ import { } from '@/modules/shared/helpers/envHelper' import { type Optional } from '@speckle/shared' import { isMultiRegionEnabled } from '@/modules/multiregion/helpers' -import { +import type { MainRegionConfig, - MultiRegionConfig, - loadMultiRegionsConfig + MultiRegionConfig } from '@speckle/shared/environment/db' +import { loadMultiRegionsConfig } from '@speckle/shared/environment/db' import { TestOnlyLogicError } from '@/modules/shared/errors' -import { PartialDeep } from 'type-fest' +import type { PartialDeep } from 'type-fest' import { merge } from 'lodash-es' let multiRegionConfig: Optional = undefined diff --git a/packages/server/modules/multiregion/repositories/index.ts b/packages/server/modules/multiregion/repositories/index.ts index 53e81768c..5eb5948ea 100644 --- a/packages/server/modules/multiregion/repositories/index.ts +++ b/packages/server/modules/multiregion/repositories/index.ts @@ -1,12 +1,12 @@ import { buildTableHelper } from '@/modules/core/dbSchema' -import { +import type { GetRegion, GetRegions, StoreRegion, UpdateRegion } from '@/modules/multiregion/domain/operations' -import { RegionRecord } from '@/modules/multiregion/helpers/types' -import { Knex } from 'knex' +import type { RegionRecord } from '@/modules/multiregion/helpers/types' +import type { Knex } from 'knex' import { pick } from 'lodash-es' export const Regions = buildTableHelper('regions', [ diff --git a/packages/server/modules/multiregion/repositories/projectRegion.ts b/packages/server/modules/multiregion/repositories/projectRegion.ts index 1bb20623f..83ed9576c 100644 --- a/packages/server/modules/multiregion/repositories/projectRegion.ts +++ b/packages/server/modules/multiregion/repositories/projectRegion.ts @@ -1,4 +1,4 @@ -import { +import type { AsyncRegionKeyStore, CachedRegionKeyDelete, CachedRegionKeyLookup, @@ -8,9 +8,9 @@ import { SyncRegionKeyStore } from '@/modules/multiregion/domain/operations' import { LRUCache } from 'lru-cache' -import Redis from 'ioredis' -import { Knex } from 'knex' -import { StreamRecord } from '@/modules/core/helpers/types' +import type Redis from 'ioredis' +import type { Knex } from 'knex' +import type { StreamRecord } from '@/modules/core/helpers/types' import { TIME_MS } from '@speckle/shared' const mainDbKey = 'mainDb' diff --git a/packages/server/modules/multiregion/services/management.ts b/packages/server/modules/multiregion/services/management.ts index 46a5a8635..39426aef6 100644 --- a/packages/server/modules/multiregion/services/management.ts +++ b/packages/server/modules/multiregion/services/management.ts @@ -1,4 +1,4 @@ -import { +import type { CreateAndValidateNewRegion, GetFreeRegionKeys, GetRegion, diff --git a/packages/server/modules/multiregion/services/projectRegion.ts b/packages/server/modules/multiregion/services/projectRegion.ts index 15d86abad..7fde65e47 100644 --- a/packages/server/modules/multiregion/services/projectRegion.ts +++ b/packages/server/modules/multiregion/services/projectRegion.ts @@ -1,7 +1,7 @@ -import { Stream } from '@/modules/core/domain/streams/types' +import type { Stream } from '@/modules/core/domain/streams/types' import { ProjectNotFoundError } from '@/modules/core/errors/projects' import { StreamNotFoundError } from '@/modules/core/errors/stream' -import { +import type { AsyncRegionKeyStore, CachedRegionKeyDelete, CachedRegionKeyLookup, @@ -11,8 +11,8 @@ import { SyncRegionKeyLookup, SyncRegionKeyStore } from '@/modules/multiregion/domain/operations' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { Knex } from 'knex' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { Knex } from 'knex' export type GetProjectRegionKey = (args: { projectId: string diff --git a/packages/server/modules/multiregion/services/queue.ts b/packages/server/modules/multiregion/services/queue.ts index befa3400d..583eb6c61 100644 --- a/packages/server/modules/multiregion/services/queue.ts +++ b/packages/server/modules/multiregion/services/queue.ts @@ -1,8 +1,9 @@ -import Bull from 'bull' +import type Bull from 'bull' import { logger } from '@/observability/logging' import { isProdEnv, isTestEnv } from '@/modules/shared/helpers/envHelper' import cryptoRandomString from 'crypto-random-string' -import { Optional, TIME_MS } from '@speckle/shared' +import type { Optional } from '@speckle/shared' +import { TIME_MS } from '@speckle/shared' import { UninitializedResourceAccessError } from '@/modules/shared/errors' import { MultiRegionInvalidJobError, diff --git a/packages/server/modules/multiregion/tests/e2e/projects.graph.spec.ts b/packages/server/modules/multiregion/tests/e2e/projects.graph.spec.ts index 9cf7fec60..0c24c9e3a 100644 --- a/packages/server/modules/multiregion/tests/e2e/projects.graph.spec.ts +++ b/packages/server/modules/multiregion/tests/e2e/projects.graph.spec.ts @@ -1,22 +1,24 @@ import { db } from '@/db/knex' -import { AutomationRecord, AutomationRunRecord } from '@/modules/automate/helpers/types' +import type { + AutomationRecord, + AutomationRunRecord +} from '@/modules/automate/helpers/types' import { markAutomationDeletedFactory } from '@/modules/automate/repositories/automations' import { deleteAutomationFactory } from '@/modules/automate/services/automationManagement' -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' import { updateCommentFactory } from '@/modules/comments/repositories/comments' import { createRandomEmail } from '@/modules/core/helpers/testHelpers' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { getDb } from '@/modules/multiregion/utils/dbSelector' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { createWebhookConfigFactory, createWebhookEventFactory } from '@/modules/webhooks/repositories/webhooks' -import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { UpdateProjectRegionDocument, GetProjectDocument, @@ -28,33 +30,32 @@ import { GetRegionalProjectWebhookDocument, GetRegionalProjectBlobDocument } from '@/modules/core/graph/generated/graphql' -import { TestApolloServer, testApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { createTestAutomation, createTestAutomationRun } from '@/test/speckle-helpers/automationHelper' import { createTestBlob } from '@/test/speckle-helpers/blobHelper' -import { BasicTestBranch, createTestBranch } from '@/test/speckle-helpers/branchHelper' +import type { BasicTestBranch } from '@/test/speckle-helpers/branchHelper' +import { createTestBranch } from '@/test/speckle-helpers/branchHelper' import { createTestComment } from '@/test/speckle-helpers/commentHelper' -import { - BasicTestCommit, - createTestObject, - createTestCommit -} from '@/test/speckle-helpers/commitHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestObject, createTestCommit } from '@/test/speckle-helpers/commitHelper' import { isMultiRegionTestMode, waitForRegionUser } from '@/test/speckle-helpers/regions' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStream, getUserStreamRole } from '@/test/speckle-helpers/streamHelper' import { retry, Roles, wait } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' -import { SetOptional } from 'type-fest' +import type { Knex } from 'knex' +import type { SetOptional } from 'type-fest' const tables = { projects: (db: Knex) => db.table('streams') diff --git a/packages/server/modules/multiregion/tests/e2e/serverAdmin.graph.spec.ts b/packages/server/modules/multiregion/tests/e2e/serverAdmin.graph.spec.ts index bb6810fcb..818936ea3 100644 --- a/packages/server/modules/multiregion/tests/e2e/serverAdmin.graph.spec.ts +++ b/packages/server/modules/multiregion/tests/e2e/serverAdmin.graph.spec.ts @@ -1,33 +1,31 @@ import { mainDb } from '@/db/knex' import { getMainObjectStorage } from '@/modules/blobstorage/clients/objectStorage' -import { DataRegionsConfig } from '@/modules/multiregion/domain/types' +import type { DataRegionsConfig } from '@/modules/multiregion/domain/types' import { isMultiRegionEnabled } from '@/modules/multiregion/helpers' import { getMultiRegionConfig, setMultiRegionConfig } from '@/modules/multiregion/regionConfig' -import { BasicTestUser, createTestUser } from '@/test/authHelper' -import { - CreateNewRegionDocument, +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' +import type { CreateServerRegionInput, - GetAvailableRegionKeysDocument, - GetRegionsDocument, - UpdateRegionDocument, UpdateServerRegionInput } from '@/modules/core/graph/generated/graphql' import { - ExecuteOperationOptions, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' + CreateNewRegionDocument, + GetAvailableRegionKeysDocument, + GetRegionsDocument, + UpdateRegionDocument +} from '@/modules/core/graph/generated/graphql' +import type { ExecuteOperationOptions, TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext, getRegionKeys } from '@/test/hooks' import { truncateRegionsSafely } from '@/test/speckle-helpers/regions' import { Roles } from '@speckle/shared' -import { - getConnectionSettings, - MultiRegionConfig -} from '@speckle/shared/environment/db' +import type { MultiRegionConfig } from '@speckle/shared/environment/db' +import { getConnectionSettings } from '@speckle/shared/environment/db' import { expect } from 'chai' import { merge } from 'lodash-es' diff --git a/packages/server/modules/multiregion/tests/unit/projectRegion.spec.ts b/packages/server/modules/multiregion/tests/unit/projectRegion.spec.ts index 6205853d4..17cea7854 100644 --- a/packages/server/modules/multiregion/tests/unit/projectRegion.spec.ts +++ b/packages/server/modules/multiregion/tests/unit/projectRegion.spec.ts @@ -4,10 +4,10 @@ import { getProjectRegionKeyFactory } from '@/modules/multiregion/services/projectRegion' import { expectToThrow } from '@/test/assertionHelper' -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' -import { Knex } from 'knex' +import type { Knex } from 'knex' describe('projectRegions @multiregion', () => { describe('getProjectRegionKeyFactory creates a function, that', () => { diff --git a/packages/server/modules/multiregion/utils/blobStorageSelector.ts b/packages/server/modules/multiregion/utils/blobStorageSelector.ts index 29d6c852b..a84c5bdcd 100644 --- a/packages/server/modules/multiregion/utils/blobStorageSelector.ts +++ b/packages/server/modules/multiregion/utils/blobStorageSelector.ts @@ -1,11 +1,11 @@ +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { getMainObjectStorage, getObjectStorage, - getPublicMainObjectStorage, - ObjectStorage + getPublicMainObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { ensureStorageAccessFactory } from '@/modules/blobstorage/repositories/blobs' -import { +import type { GetProjectObjectStorage, GetRegionObjectStorage } from '@/modules/multiregion/domain/operations' @@ -17,8 +17,8 @@ import { } from '@/modules/multiregion/utils/regionSelector' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { Optional } from '@speckle/shared' -import { BlobStorageConfig } from '@speckle/shared/environment/db' +import type { Optional } from '@speckle/shared' +import type { BlobStorageConfig } from '@speckle/shared/environment/db' type RegionStorageClients = { [regionKey: string]: { private: ObjectStorage; public: ObjectStorage } diff --git a/packages/server/modules/multiregion/utils/dbSelector.ts b/packages/server/modules/multiregion/utils/dbSelector.ts index 3c0cb74a2..6201aa62f 100644 --- a/packages/server/modules/multiregion/utils/dbSelector.ts +++ b/packages/server/modules/multiregion/utils/dbSelector.ts @@ -1,10 +1,10 @@ import { db } from '@/db/knex' -import { +import type { GetProjectDb, - getProjectDbClientFactory, GetRegionDb } from '@/modules/multiregion/services/projectRegion' -import { Knex } from 'knex' +import { getProjectDbClientFactory } from '@/modules/multiregion/services/projectRegion' +import type { Knex } from 'knex' import { getRegionFactory } from '@/modules/multiregion/repositories' import { DatabaseError, @@ -12,13 +12,14 @@ import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { configureClient } from '@/knexfile' -import { InitializeRegion } from '@/modules/multiregion/domain/operations' +import type { InitializeRegion } from '@/modules/multiregion/domain/operations' import { getAvailableRegionConfig, getDefaultProjectRegionKey, getMainRegionConfig } from '@/modules/multiregion/regionConfig' -import { ensureError, MaybeNullOrUndefined } from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { ensureError } from '@speckle/shared' import { isDevOrTestEnv, isTestEnv } from '@/modules/shared/helpers/envHelper' import { migrateDbToLatest } from '@/db/migrations' import { diff --git a/packages/server/modules/multiregion/utils/regionSelector.ts b/packages/server/modules/multiregion/utils/regionSelector.ts index d4b408c40..8933354a0 100644 --- a/packages/server/modules/multiregion/utils/regionSelector.ts +++ b/packages/server/modules/multiregion/utils/regionSelector.ts @@ -8,14 +8,12 @@ import { inMemoryRegionKeyStoreFactory, writeRegionKeyToCacheFactory } from '@/modules/multiregion/repositories/projectRegion' -import { - GetProjectRegionKey, - getProjectRegionKeyFactory -} from '@/modules/multiregion/services/projectRegion' +import type { GetProjectRegionKey } from '@/modules/multiregion/services/projectRegion' +import { getProjectRegionKeyFactory } from '@/modules/multiregion/services/projectRegion' import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { getGenericRedis } from '@/modules/shared/redis/redis' -import { Optional } from '@speckle/shared' -import { DataRegionsConfig } from '@speckle/shared/environment/db' +import type { Optional } from '@speckle/shared' +import type { DataRegionsConfig } from '@speckle/shared/environment/db' export const getRegisteredRegionConfigs = async () => { const registeredKeys = (await getRegionsFactory({ db: mainDb })()).map((r) => r.key) diff --git a/packages/server/modules/notifications/domain/events.ts b/packages/server/modules/notifications/domain/events.ts index caa9e6916..53bd4af92 100644 --- a/packages/server/modules/notifications/domain/events.ts +++ b/packages/server/modules/notifications/domain/events.ts @@ -1,4 +1,4 @@ -import { NotificationMessage } from '@/modules/notifications/helpers/types' +import type { NotificationMessage } from '@/modules/notifications/helpers/types' export const notificationsEventNamespace = 'notifications' as const diff --git a/packages/server/modules/notifications/domain/operations.ts b/packages/server/modules/notifications/domain/operations.ts index 876526f32..a0dec84a6 100644 --- a/packages/server/modules/notifications/domain/operations.ts +++ b/packages/server/modules/notifications/domain/operations.ts @@ -1,4 +1,4 @@ -import { NotificationPreferences } from '@/modules/notifications/helpers/types' +import type { NotificationPreferences } from '@/modules/notifications/helpers/types' export type GetSavedUserNotificationPreferences = ( userId: string diff --git a/packages/server/modules/notifications/graph/resolvers/userNotificationPreferences.ts b/packages/server/modules/notifications/graph/resolvers/userNotificationPreferences.ts index 9973a6a55..6a56f3aa4 100644 --- a/packages/server/modules/notifications/graph/resolvers/userNotificationPreferences.ts +++ b/packages/server/modules/notifications/graph/resolvers/userNotificationPreferences.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getSavedUserNotificationPreferencesFactory, saveUserNotificationPreferencesFactory diff --git a/packages/server/modules/notifications/helpers/types.ts b/packages/server/modules/notifications/helpers/types.ts index e4675713b..3e5c7926f 100644 --- a/packages/server/modules/notifications/helpers/types.ts +++ b/packages/server/modules/notifications/helpers/types.ts @@ -1,9 +1,9 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' -import { MaybeAsync, Optional } from '@/modules/shared/helpers/typeHelper' -import { Job } from 'bull' +import type { StreamAccessRequestRecord } from '@/modules/accessrequests/repositories' +import type { MaybeAsync, Optional } from '@/modules/shared/helpers/typeHelper' +import type { Job } from 'bull' import { isObject, has } from 'lodash-es' -import { Logger } from 'pino' +import type { Logger } from 'pino' export enum NotificationType { ActivityDigest = 'activityDigest', diff --git a/packages/server/modules/notifications/index.ts b/packages/server/modules/notifications/index.ts index 41ce81cb0..9723b409f 100644 --- a/packages/server/modules/notifications/index.ts +++ b/packages/server/modules/notifications/index.ts @@ -4,11 +4,9 @@ import { registerNotificationHandlers, shutdownQueue } from '@/modules/notifications/services/queue' -import { - NotificationType, - NotificationTypeHandlers -} from '@/modules/notifications/helpers/types' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { NotificationTypeHandlers } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { shouldDisableNotificationsConsumption } from '@/modules/shared/helpers/envHelper' import { moduleLogger } from '@/observability/logging' import MentionedInCommentHandler from '@/modules/notifications/services/handlers/mentionedInComment' diff --git a/packages/server/modules/notifications/migrations/20220825123323_usernotificationpreferences.ts b/packages/server/modules/notifications/migrations/20220825123323_usernotificationpreferences.ts index d5381702e..3635fa977 100644 --- a/packages/server/modules/notifications/migrations/20220825123323_usernotificationpreferences.ts +++ b/packages/server/modules/notifications/migrations/20220825123323_usernotificationpreferences.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'user_notification_preferences' diff --git a/packages/server/modules/notifications/repositories.ts b/packages/server/modules/notifications/repositories.ts index fd78ad0d4..42d469926 100644 --- a/packages/server/modules/notifications/repositories.ts +++ b/packages/server/modules/notifications/repositories.ts @@ -1,13 +1,13 @@ import { UserNotificationPreferences } from '@/modules/core/dbSchema' -import { +import type { GetSavedUserNotificationPreferences, SaveUserNotificationPreferences } from '@/modules/notifications/domain/operations' -import { +import type { NotificationPreferences, UserNotificationPreferencesRecord } from '@/modules/notifications/helpers/types' -import { Knex } from 'knex' +import type { Knex } from 'knex' const tables = { userNotificationPreferences: (db: Knex) => diff --git a/packages/server/modules/notifications/services/handlers/activityDigest.ts b/packages/server/modules/notifications/services/handlers/activityDigest.ts index 66be7915b..68dcbc074 100644 --- a/packages/server/modules/notifications/services/handlers/activityDigest.ts +++ b/packages/server/modules/notifications/services/handlers/activityDigest.ts @@ -1,15 +1,16 @@ -import { +import type { ActivityDigestMessage, NotificationHandler } from '@/modules/notifications/helpers/types' -import { - StreamActionTypes, +import type { StreamActivityRecord, AllStreamActivityTypes, StreamScopeActivity } from '@/modules/activitystream/helpers/types' -import { ServerInfo, UserRecord } from '@/modules/core/helpers/types' -import { sendEmail, SendEmailParams } from '@/modules/emails/services/sending' +import { StreamActionTypes } from '@/modules/activitystream/helpers/types' +import type { ServerInfo, UserRecord } from '@/modules/core/helpers/types' +import type { SendEmailParams } from '@/modules/emails/services/sending' +import { sendEmail } from '@/modules/emails/services/sending' import { groupBy } from 'lodash-es' import { packageRoot } from '@/bootstrap' import path from 'path' @@ -18,9 +19,9 @@ import { renderEmail } from '@/modules/emails/services/emailRendering' import { getUserNotificationPreferencesFactory } from '@/modules/notifications/services/notificationPreferences' import { getSavedUserNotificationPreferencesFactory } from '@/modules/notifications/repositories' import { db } from '@/db/knex' -import { GetUserNotificationPreferences } from '@/modules/notifications/domain/operations' -import { CreateActivitySummary } from '@/modules/activitystream/domain/operations' -import { +import type { GetUserNotificationPreferences } from '@/modules/notifications/domain/operations' +import type { CreateActivitySummary } from '@/modules/activitystream/domain/operations' +import type { ActivitySummary, StreamActivitySummary } from '@/modules/activitystream/domain/types' @@ -28,9 +29,9 @@ import { createActivitySummaryFactory } from '@/modules/activitystream/services/ import { geUserStreamActivityFactory } 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 type { GetServerInfo } from '@/modules/core/domain/server/operations' import { getServerInfoFactory } from '@/modules/core/repositories/server' -import { EmailBody, EmailInput } from '@/modules/emails/domain/operations' +import type { EmailBody, EmailInput } from '@/modules/emails/domain/operations' const digestNotificationEmailHandlerFactory = ( diff --git a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts index bc96628c8..9197bc6cd 100644 --- a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts +++ b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts @@ -1,29 +1,30 @@ import { db } from '@/db/knex' -import { GetComment } from '@/modules/comments/domain/operations' -import { ExtendedComment } from '@/modules/comments/domain/types' +import type { GetComment } from '@/modules/comments/domain/operations' +import type { 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 type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { StreamWithOptionalRole } from '@/modules/core/domain/streams/types' +import type { 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 type { 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 { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import { getUserFactory } from '@/modules/core/repositories/users' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { NotificationValidationError } from '@/modules/notifications/errors' -import { +import type { NotificationHandler, MentionedInCommentMessage } from '@/modules/notifications/helpers/types' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { MaybeFalsy, Nullable } from '@/modules/shared/helpers/typeHelper' -import { Knex } from 'knex' +import type { MaybeFalsy, Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Knex } from 'knex' type ValidatedNotificationState = { msg: MentionedInCommentMessage diff --git a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts index 97d889b39..71cf626c9 100644 --- a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts +++ b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts @@ -2,7 +2,7 @@ import { AccessRequestType, getPendingAccessRequestFactory } from '@/modules/accessrequests/repositories' -import { +import type { NewStreamAccessRequestMessage, NotificationHandler } from '@/modules/notifications/helpers/types' @@ -15,14 +15,14 @@ import { import { sendEmail } from '@/modules/emails/services/sending' import { renderEmail } from '@/modules/emails/services/emailRendering' import { db } from '@/db/knex' -import { GetPendingAccessRequest } from '@/modules/accessrequests/domain/operations' -import { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetPendingAccessRequest } from '@/modules/accessrequests/domain/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' import { getStreamFactory } from '@/modules/core/repositories/streams' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { getUserFactory } from '@/modules/core/repositories/users' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { getServerInfoFactory } from '@/modules/core/repositories/server' -import { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' type ValidateMessageDeps = { getPendingAccessRequest: GetPendingAccessRequest diff --git a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts index a7b712289..84a6f5e6e 100644 --- a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts +++ b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts @@ -1,7 +1,7 @@ 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 type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { buildAbsoluteFrontendUrlFromPath, getStreamRoute @@ -9,11 +9,11 @@ import { import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getStreamFactory } from '@/modules/core/repositories/streams' import { getUserFactory } from '@/modules/core/repositories/users' -import { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' import { renderEmail } from '@/modules/emails/services/emailRendering' import { sendEmail } from '@/modules/emails/services/sending' import { NotificationValidationError } from '@/modules/notifications/errors' -import { +import type { NotificationHandler, StreamAccessRequestApprovedMessage } from '@/modules/notifications/helpers/types' diff --git a/packages/server/modules/notifications/services/notificationPreferences.ts b/packages/server/modules/notifications/services/notificationPreferences.ts index 02d84ca64..70335ec7a 100644 --- a/packages/server/modules/notifications/services/notificationPreferences.ts +++ b/packages/server/modules/notifications/services/notificationPreferences.ts @@ -1,10 +1,10 @@ +import type { NotificationPreferences } from '@/modules/notifications/helpers/types' import { NotificationChannel, - NotificationType, - NotificationPreferences + NotificationType } from '@/modules/notifications/helpers/types' import { InvalidArgumentError } from '@/modules/shared/errors' -import { +import type { GetSavedUserNotificationPreferences, GetUserNotificationPreferences, SaveUserNotificationPreferences diff --git a/packages/server/modules/notifications/services/publication.ts b/packages/server/modules/notifications/services/publication.ts index 989f3a5b8..0bb67a9f2 100644 --- a/packages/server/modules/notifications/services/publication.ts +++ b/packages/server/modules/notifications/services/publication.ts @@ -1,4 +1,4 @@ -import { +import type { NotificationPublisher, NotificationTypeMessageMap } from '@/modules/notifications/helpers/types' diff --git a/packages/server/modules/notifications/services/queue.ts b/packages/server/modules/notifications/services/queue.ts index 0890188a1..eb7337fed 100644 --- a/packages/server/modules/notifications/services/queue.ts +++ b/packages/server/modules/notifications/services/queue.ts @@ -1,19 +1,19 @@ import { UninitializedResourceAccessError } from '@/modules/shared/errors' -import { Optional } from '@/modules/shared/helpers/typeHelper' +import type { Optional } from '@/modules/shared/helpers/typeHelper' import { InvalidNotificationError, NotificationValidationError, UnhandledNotificationError } from '@/modules/notifications/errors' -import { - isNotificationMessage, +import type { NotificationHandler, NotificationMessage, NotificationType, NotificationTypeHandlers } from '@/modules/notifications/helpers/types' +import { isNotificationMessage } from '@/modules/notifications/helpers/types' import { getRedisUrl, isProdEnv, isTestEnv } from '@/modules/shared/helpers/envHelper' -import Bull from 'bull' +import type Bull from 'bull' import { initializeQueue as setupQueue } from '@speckle/shared/queue' import cryptoRandomString from 'crypto-random-string' import { logger, notificationsLogger, Observability } from '@/observability/logging' diff --git a/packages/server/modules/notifications/tests/activityDigest.spec.ts b/packages/server/modules/notifications/tests/activityDigest.spec.ts index 480ba2991..99ad874d0 100644 --- a/packages/server/modules/notifications/tests/activityDigest.spec.ts +++ b/packages/server/modules/notifications/tests/activityDigest.spec.ts @@ -1,29 +1,30 @@ -import { +import type { ActivitySummary, StreamActivitySummary } from '@/modules/activitystream/domain/types' -import { - StreamActionTypes, - StreamResourceTypes, +import type { StreamScopeActivity, AllStreamActivityTypes } from '@/modules/activitystream/helpers/types' import { - ProjectRecordVisibility, - ServerInfo, - UserRecord -} from '@/modules/core/helpers/types' + StreamActionTypes, + StreamResourceTypes +} from '@/modules/activitystream/helpers/types' +import type { ServerInfo, UserRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { renderEmail } from '@/modules/emails/services/emailRendering' +import type { + DigestTopic, + Digest +} from '@/modules/notifications/services/handlers/activityDigest' import { digestMostActiveStream, mostActiveComment, digestSummaryData, - DigestTopic, farewell, commentMentionSummary, digestActiveStreams, closingOverview, - Digest, prepareSummaryEmailFactory } from '@/modules/notifications/services/handlers/activityDigest' import { expect } from 'chai' diff --git a/packages/server/modules/notifications/tests/notifications.spec.ts b/packages/server/modules/notifications/tests/notifications.spec.ts index 1aa881509..6d54995ba 100644 --- a/packages/server/modules/notifications/tests/notifications.spec.ts +++ b/packages/server/modules/notifications/tests/notifications.spec.ts @@ -1,11 +1,9 @@ -import { - MentionedInCommentData, - NotificationType -} from '@/modules/notifications/helpers/types' +import type { MentionedInCommentData } from '@/modules/notifications/helpers/types' +import { NotificationType } from '@/modules/notifications/helpers/types' import { publishNotification } from '@/modules/notifications/services/publication' +import type { NotificationsStateManager } from '@/test/notificationsHelper' import { buildNotificationsStateTracker, - NotificationsStateManager, purgeNotifications } from '@/test/notificationsHelper' import { expect } from 'chai' diff --git a/packages/server/modules/notifications/tests/notificationsPreferences.spec.ts b/packages/server/modules/notifications/tests/notificationsPreferences.spec.ts index 559291328..d74ac32ca 100644 --- a/packages/server/modules/notifications/tests/notificationsPreferences.spec.ts +++ b/packages/server/modules/notifications/tests/notificationsPreferences.spec.ts @@ -1,6 +1,7 @@ import { truncateTables } from '@/test/hooks' import { UserNotificationPreferences, Users } from '@/modules/core/dbSchema' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' import { expect } from 'chai' import { NotificationType, diff --git a/packages/server/modules/previews/clients/bull.ts b/packages/server/modules/previews/clients/bull.ts index 917324cfa..c3941afed 100644 --- a/packages/server/modules/previews/clients/bull.ts +++ b/packages/server/modules/previews/clients/bull.ts @@ -6,7 +6,7 @@ import type { } from 'bull' import type { EventEmitter } from 'stream' import { initializeQueue } from '@speckle/shared/queue' -import { JobPayload, PreviewResultPayload } from '@speckle/shared/workers/previews' +import type { JobPayload, PreviewResultPayload } from '@speckle/shared/workers/previews' import { DelayBetweenPreviewRetriesMinutes, NumberOfPreviewRetries diff --git a/packages/server/modules/previews/domain/operations.ts b/packages/server/modules/previews/domain/operations.ts index 75d43cf01..c4e183993 100644 --- a/packages/server/modules/previews/domain/operations.ts +++ b/packages/server/modules/previews/domain/operations.ts @@ -6,9 +6,9 @@ import type { PartialBy } from '@speckle/shared' import type { Request, Response } from 'express' -import { PreviewStatus } from '@/modules/previews/domain/consts' +import type { PreviewStatus } from '@/modules/previews/domain/consts' import type { Logger } from '@/observability/logging' -import { PreviewResultPayload } from '@speckle/shared/workers/previews' +import type { PreviewResultPayload } from '@speckle/shared/workers/previews' export type GetObjectPreviewInfo = (params: { streamId: string diff --git a/packages/server/modules/previews/domain/types.ts b/packages/server/modules/previews/domain/types.ts index e9ad8c1a6..6da447d3e 100644 --- a/packages/server/modules/previews/domain/types.ts +++ b/packages/server/modules/previews/domain/types.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' export type ObjectPreview = { streamId: string diff --git a/packages/server/modules/previews/index.ts b/packages/server/modules/previews/index.ts index 76b05324a..9b4538249 100644 --- a/packages/server/modules/previews/index.ts +++ b/packages/server/modules/previews/index.ts @@ -1,5 +1,5 @@ /* istanbul ignore file */ -import cron from 'node-cron' +import type cron from 'node-cron' import { moduleLogger, previewLogger as logger } from '@/observability/logging' import { buildConsumePreviewResult } from '@/modules/previews/resultListener' import { diff --git a/packages/server/modules/previews/observability/metrics.ts b/packages/server/modules/previews/observability/metrics.ts index 967ba526c..9bb8f5559 100644 --- a/packages/server/modules/previews/observability/metrics.ts +++ b/packages/server/modules/previews/observability/metrics.ts @@ -1,7 +1,7 @@ import { TIME } from '@speckle/shared' -import Bull from 'bull' +import type Bull from 'bull' import { type Registry, Counter, Summary, Gauge } from 'prom-client' -import { ObserveMetrics } from '@/modules/previews/domain/operations' +import type { ObserveMetrics } from '@/modules/previews/domain/operations' export const PreviewJobDurationStep = { TOTAL: 'total', diff --git a/packages/server/modules/previews/repository/previews.ts b/packages/server/modules/previews/repository/previews.ts index a58d820ce..355186d1d 100644 --- a/packages/server/modules/previews/repository/previews.ts +++ b/packages/server/modules/previews/repository/previews.ts @@ -1,5 +1,5 @@ import { buildTableHelper } from '@/modules/core/dbSchema' -import { +import type { GetObjectPreviewInfo, GetPaginatedObjectPreviewsPage, GetPaginatedObjectPreviewsTotalCount, @@ -9,12 +9,12 @@ import { StorePreview, UpdateObjectPreview } from '@/modules/previews/domain/operations' -import { +import type { ObjectPreview as ObjectPreviewRecord, Preview } from '@/modules/previews/domain/types' import type { Knex } from 'knex' -import { SetOptional } from 'type-fest' +import type { SetOptional } from 'type-fest' import { PreviewStatus } from '@/modules/previews/domain/consts' import { compositeCursorTools } from '@/modules/shared/helpers/dbHelper' import { omit } from 'lodash-es' diff --git a/packages/server/modules/previews/resultListener.ts b/packages/server/modules/previews/resultListener.ts index d4012ab3f..046cb6a3a 100644 --- a/packages/server/modules/previews/resultListener.ts +++ b/packages/server/modules/previews/resultListener.ts @@ -4,14 +4,14 @@ import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { throwUncoveredError } from '@speckle/shared' import type { Logger } from '@/observability/logging' import crypto from 'crypto' -import { +import type { BuildConsumePreviewResult, ConsumePreviewResult, StorePreview, UpdateObjectPreview } from '@/modules/previews/domain/operations' import { joinImages } from 'join-images' -import { GetObjectCommitsWithStreamIds } from '@/modules/core/domain/commits/operations' +import type { GetObjectCommitsWithStreamIds } from '@/modules/core/domain/commits/operations' import { PreviewPriority, PreviewStatus } from '@/modules/previews/domain/consts' import { storePreviewFactory, diff --git a/packages/server/modules/previews/services/createObjectPreview.ts b/packages/server/modules/previews/services/createObjectPreview.ts index 59c5218cb..16f357c54 100644 --- a/packages/server/modules/previews/services/createObjectPreview.ts +++ b/packages/server/modules/previews/services/createObjectPreview.ts @@ -1,7 +1,7 @@ import { DefaultAppIds } from '@/modules/auth/defaultApps' -import { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' -import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' -import { +import type { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' +import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' +import type { CreateObjectPreview, RequestObjectPreview, StoreObjectPreview diff --git a/packages/server/modules/previews/services/management.ts b/packages/server/modules/previews/services/management.ts index f3a8768b9..32c33c649 100644 --- a/packages/server/modules/previews/services/management.ts +++ b/packages/server/modules/previews/services/management.ts @@ -8,8 +8,8 @@ import type { GetPreviewImage, SendObjectPreview } from '@/modules/previews/domain/operations' -import { makeOgImage } from '@/modules/previews/ogImage' -import { authorizeResolver, validateScopes } from '@/modules/shared' +import type { makeOgImage } from '@/modules/previews/ogImage' +import type { authorizeResolver, validateScopes } from '@/modules/shared' import { disablePreviews } from '@/modules/shared/helpers/envHelper' import { Roles, Scopes } from '@speckle/shared' import type { Logger } from 'pino' diff --git a/packages/server/modules/previews/services/retryErrors.ts b/packages/server/modules/previews/services/retryErrors.ts index 574cf7836..c7b2055d4 100644 --- a/packages/server/modules/previews/services/retryErrors.ts +++ b/packages/server/modules/previews/services/retryErrors.ts @@ -1,5 +1,5 @@ import type { Logger } from '@/observability/logging' -import { +import type { GetNumberOfJobsInRequestQueue, GetPaginatedObjectPreviewsInErrorState, GetPaginatedObjectPreviewsPage, @@ -11,8 +11,8 @@ import { PreviewStatus } from '@/modules/previews/domain/consts' import { Roles, Scopes, TIME_MS } from '@speckle/shared' import { DefaultAppIds } from '@/modules/auth/defaultApps' import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' -import { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' -import { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' +import type { GetStreamCollaborators } from '@/modules/core/domain/streams/operations' +import type { CreateAndStoreAppToken } from '@/modules/core/domain/tokens/operations' import { getPreviewServiceMaxQueueBackpressure } from '@/modules/shared/helpers/envHelper' export const getPaginatedObjectPreviewInErrorStateFactory = diff --git a/packages/server/modules/previews/tests/unit/createObjectPreview.spec.ts b/packages/server/modules/previews/tests/unit/createObjectPreview.spec.ts index dfd0c7d35..956a96297 100644 --- a/packages/server/modules/previews/tests/unit/createObjectPreview.spec.ts +++ b/packages/server/modules/previews/tests/unit/createObjectPreview.spec.ts @@ -1,5 +1,5 @@ -import { LimitedUserWithStreamRole } from '@/modules/core/domain/streams/types' -import { +import type { LimitedUserWithStreamRole } from '@/modules/core/domain/streams/types' +import type { ObjectPreviewInput, ObjectPreviewRequest } from '@/modules/previews/domain/operations' diff --git a/packages/server/modules/pwdreset/domain/operations.ts b/packages/server/modules/pwdreset/domain/operations.ts index 7e9833256..f7b5db10e 100644 --- a/packages/server/modules/pwdreset/domain/operations.ts +++ b/packages/server/modules/pwdreset/domain/operations.ts @@ -1,5 +1,5 @@ -import { PasswordResetTokenRecord } from '@/modules/pwdreset/repositories' -import { Optional } from '@speckle/shared' +import type { PasswordResetTokenRecord } from '@/modules/pwdreset/repositories' +import type { Optional } from '@speckle/shared' export type EmailOrTokenId = { email?: string; tokenId?: string } diff --git a/packages/server/modules/pwdreset/index.ts b/packages/server/modules/pwdreset/index.ts index 87aa276d9..74359ac40 100644 --- a/packages/server/modules/pwdreset/index.ts +++ b/packages/server/modules/pwdreset/index.ts @@ -1,6 +1,6 @@ import { moduleLogger } from '@/observability/logging' import RestSetup from '@/modules/pwdreset/rest' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { noop } from 'lodash-es' export const init: SpeckleModule['init'] = ({ app }) => { diff --git a/packages/server/modules/pwdreset/repositories/index.ts b/packages/server/modules/pwdreset/repositories/index.ts index cc3a168b7..4deb97b29 100644 --- a/packages/server/modules/pwdreset/repositories/index.ts +++ b/packages/server/modules/pwdreset/repositories/index.ts @@ -2,8 +2,8 @@ import crs from 'crypto-random-string' import { PasswordResetTokens } from '@/modules/core/dbSchema' import dayjs from 'dayjs' import { InvalidArgumentError } from '@/modules/shared/errors' -import { Knex } from 'knex' -import { +import type { Knex } from 'knex' +import type { CreateToken, DeleteTokens, EmailOrTokenId, diff --git a/packages/server/modules/pwdreset/rest/index.ts b/packages/server/modules/pwdreset/rest/index.ts index a7f922953..861a8bf9b 100644 --- a/packages/server/modules/pwdreset/rest/index.ts +++ b/packages/server/modules/pwdreset/rest/index.ts @@ -19,7 +19,7 @@ import { requestPasswordRecoveryFactory } from '@/modules/pwdreset/services/requ import { BadRequestError } from '@/modules/shared/errors' import { withOperationLogging } from '@/observability/domain/businessLogging' import { ensureError } from '@speckle/shared' -import { Express } from 'express' +import type { Express } from 'express' export default function (app: Express) { const getUserByEmail = getUserByEmailFactory({ db }) diff --git a/packages/server/modules/pwdreset/services/finalize.ts b/packages/server/modules/pwdreset/services/finalize.ts index 280f7ab9a..b9eb1e750 100644 --- a/packages/server/modules/pwdreset/services/finalize.ts +++ b/packages/server/modules/pwdreset/services/finalize.ts @@ -1,9 +1,12 @@ -import { DeleteExistingUserAuthTokens } from '@/modules/auth/domain/operations' -import { +import type { DeleteExistingUserAuthTokens } from '@/modules/auth/domain/operations' +import type { ChangeUserPassword, GetUserByEmail } from '@/modules/core/domain/users/operations' -import { DeleteTokens, GetPendingToken } from '@/modules/pwdreset/domain/operations' +import type { + DeleteTokens, + GetPendingToken +} from '@/modules/pwdreset/domain/operations' import { PasswordRecoveryFinalizationError } from '@/modules/pwdreset/errors' type InitializeStateDeps = { diff --git a/packages/server/modules/pwdreset/services/request.ts b/packages/server/modules/pwdreset/services/request.ts index dcfd854b4..06f4b6a17 100644 --- a/packages/server/modules/pwdreset/services/request.ts +++ b/packages/server/modules/pwdreset/services/request.ts @@ -1,12 +1,12 @@ -import { GetServerInfo } from '@/modules/core/domain/server/operations' -import { GetUserByEmail } from '@/modules/core/domain/users/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { GetUserByEmail } from '@/modules/core/domain/users/operations' import { getPasswordResetFinalizationRoute } from '@/modules/core/helpers/routeHelper' -import { EmailTemplateParams } from '@/modules/emails/domain/operations' -import { renderEmail } from '@/modules/emails/services/emailRendering' -import { sendEmail } from '@/modules/emails/services/sending' -import { CreateToken, GetPendingToken } from '@/modules/pwdreset/domain/operations' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { renderEmail } from '@/modules/emails/services/emailRendering' +import type { sendEmail } from '@/modules/emails/services/sending' +import type { CreateToken, GetPendingToken } from '@/modules/pwdreset/domain/operations' import { InvalidPasswordRecoveryRequestError } from '@/modules/pwdreset/errors' -import { PasswordResetTokenRecord } from '@/modules/pwdreset/repositories' +import type { PasswordResetTokenRecord } from '@/modules/pwdreset/repositories' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' const EMAIL_SUBJECT = 'Speckle Account Password Reset' diff --git a/packages/server/modules/pwdreset/tests/pwdrest.spec.ts b/packages/server/modules/pwdreset/tests/pwdrest.spec.ts index d9c4051d5..fa72cf97f 100644 --- a/packages/server/modules/pwdreset/tests/pwdrest.spec.ts +++ b/packages/server/modules/pwdreset/tests/pwdrest.spec.ts @@ -30,7 +30,7 @@ import { } from '@/modules/serverinvites/repositories/serverInvites' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' const ResetTokens = () => knex('pwdreset_tokens') const db = knex diff --git a/packages/server/modules/serverinvites/domain/events.ts b/packages/server/modules/serverinvites/domain/events.ts index 9c54962ad..2032b2aa5 100644 --- a/packages/server/modules/serverinvites/domain/events.ts +++ b/packages/server/modules/serverinvites/domain/events.ts @@ -1,4 +1,4 @@ -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' export const serverinvitesEventNamespace = 'serverinvites' as const diff --git a/packages/server/modules/serverinvites/domain/operations.ts b/packages/server/modules/serverinvites/domain/operations.ts index 13e6af63e..f18aa1912 100644 --- a/packages/server/modules/serverinvites/domain/operations.ts +++ b/packages/server/modules/serverinvites/domain/operations.ts @@ -1,5 +1,5 @@ -import { UserWithOptionalRole } from '@/modules/core/repositories/users' -import { +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import type { ExtendedInvite, InviteResourceTarget, InviteResourceTargetType, @@ -7,8 +7,8 @@ import { ProjectInviteResourceTarget, ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { ServerInviteResourceFilter } from '@/modules/serverinvites/repositories/serverInvites' -import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' +import type { ServerInviteResourceFilter } from '@/modules/serverinvites/repositories/serverInvites' +import type { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' /** * Then looking for Workspace target invites, we also return workspace project invites, which are implicitly diff --git a/packages/server/modules/serverinvites/domain/types.ts b/packages/server/modules/serverinvites/domain/types.ts index 974a19865..7287a3ff4 100644 --- a/packages/server/modules/serverinvites/domain/types.ts +++ b/packages/server/modules/serverinvites/domain/types.ts @@ -1,12 +1,15 @@ -import { Project } from '@/modules/core/domain/streams/types' -import { +import type { Project } from '@/modules/core/domain/streams/types' +import type { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { ResourceTargetTypeRoleTypeMap } from '@/modules/serverinvites/helpers/core' -import { Nullable } from '@/modules/shared/helpers/typeHelper' -import { Workspace, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' -import { ServerRoles, StreamRoles } from '@speckle/shared' +import type { ResourceTargetTypeRoleTypeMap } from '@/modules/serverinvites/helpers/core' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { + Workspace, + WorkspaceSeatType +} from '@/modules/workspacesCore/domain/types' +import type { ServerRoles, StreamRoles } from '@speckle/shared' export interface InviteResourceTargetTypeMap { project: 'project' diff --git a/packages/server/modules/serverinvites/events/subscriptionListeners.ts b/packages/server/modules/serverinvites/events/subscriptionListeners.ts index 8ff20f73d..938cdd606 100644 --- a/packages/server/modules/serverinvites/events/subscriptionListeners.ts +++ b/packages/server/modules/serverinvites/events/subscriptionListeners.ts @@ -4,13 +4,13 @@ import { } from '@/modules/core/graph/generated/graphql' import { ServerInvitesEvents } from '@/modules/serverinvites/domain/events' import { resolveTarget } from '@/modules/serverinvites/helpers/core' -import { GetProjectInviteProject } from '@/modules/serverinvites/services/operations' +import type { GetProjectInviteProject } from '@/modules/serverinvites/services/operations' import { StreamPubsubEvents } from '@/modules/shared' -import { DependenciesOf } from '@/modules/shared/helpers/factory' -import { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { DependenciesOf } from '@/modules/shared/helpers/factory' +import type { EventBusListen, EventPayload } from '@/modules/shared/services/eventBus' +import type { PublishSubscription } from '@/modules/shared/utils/subscriptions' import { ProjectSubscriptions, - PublishSubscription, UserSubscriptions } from '@/modules/shared/utils/subscriptions' diff --git a/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts b/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts index e64b85065..efb79f7d6 100644 --- a/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts +++ b/packages/server/modules/serverinvites/graph/resolvers/serverInvites.ts @@ -18,12 +18,10 @@ import { } from '@/modules/serverinvites/services/retrieval' import { authorizeResolver } from '@/modules/shared' import { chunk } from 'lodash-es' -import { - Resolvers, - TokenResourceIdentifierType -} from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import db from '@/db/knex' -import { ServerRoles } from '@speckle/shared' +import type { ServerRoles } from '@speckle/shared' import { deleteInvitesByTargetFactory, findInviteFactory, @@ -47,7 +45,7 @@ import { import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection' import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents' import { getEventBus } from '@/modules/shared/services/eventBus' -import { +import type { PrimaryInviteResourceTarget, ServerInviteResourceTarget } from '@/modules/serverinvites/domain/types' diff --git a/packages/server/modules/serverinvites/helpers/core.ts b/packages/server/modules/serverinvites/helpers/core.ts index 737bd379a..1f8665cff 100644 --- a/packages/server/modules/serverinvites/helpers/core.ts +++ b/packages/server/modules/serverinvites/helpers/core.ts @@ -1,16 +1,16 @@ -import { LimitedUserRecord } from '@/modules/core/helpers/types' +import type { LimitedUserRecord } from '@/modules/core/helpers/types' import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { +import type { InviteResourceTarget, PrimaryInviteResourceTarget, ProjectInviteResourceTarget, ServerInviteRecord, ServerInviteResourceTarget } from '@/modules/serverinvites/domain/types' -import { Nullable, Optional, ServerRoles, StreamRoles } from '@speckle/shared' +import type { Nullable, Optional, ServerRoles, StreamRoles } from '@speckle/shared' export type ResolvedTargetData = { userId: string | null diff --git a/packages/server/modules/serverinvites/helpers/graphTypes.ts b/packages/server/modules/serverinvites/helpers/graphTypes.ts index 45ec946a0..075e86690 100644 --- a/packages/server/modules/serverinvites/helpers/graphTypes.ts +++ b/packages/server/modules/serverinvites/helpers/graphTypes.ts @@ -1,4 +1,4 @@ -import { LimitedUserRecord } from '@/modules/core/helpers/types' +import type { LimitedUserRecord } from '@/modules/core/helpers/types' export type PendingStreamCollaboratorGraphQLReturn = { id: string diff --git a/packages/server/modules/serverinvites/index.ts b/packages/server/modules/serverinvites/index.ts index 5b5786a9e..da4c0c12e 100644 --- a/packages/server/modules/serverinvites/index.ts +++ b/packages/server/modules/serverinvites/index.ts @@ -2,7 +2,7 @@ import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scop import { moduleLogger } from '@/observability/logging' import db from '@/db/knex' import { Scopes } from '@speckle/shared' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' import { publish } from '@/modules/shared/utils/subscriptions' import { getStreamFactory } from '@/modules/core/repositories/streams' diff --git a/packages/server/modules/serverinvites/migrations/20230517122919_clean_up_invalid_stream_invites.ts b/packages/server/modules/serverinvites/migrations/20230517122919_clean_up_invalid_stream_invites.ts index 4ef49be0f..ee4950abd 100644 --- a/packages/server/modules/serverinvites/migrations/20230517122919_clean_up_invalid_stream_invites.ts +++ b/packages/server/modules/serverinvites/migrations/20230517122919_clean_up_invalid_stream_invites.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' import { chunk } from 'lodash-es' const INVITES_TABLE = 'server_invites' diff --git a/packages/server/modules/serverinvites/migrations/20230818075729_add_invite_server_role_support.ts b/packages/server/modules/serverinvites/migrations/20230818075729_add_invite_server_role_support.ts index 26486e913..fb3cd9cf8 100644 --- a/packages/server/modules/serverinvites/migrations/20230818075729_add_invite_server_role_support.ts +++ b/packages/server/modules/serverinvites/migrations/20230818075729_add_invite_server_role_support.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_invites' const COL_NAME = 'serverRole' diff --git a/packages/server/modules/serverinvites/migrations/20230907131636_migrate_invites_to_lower_precision_timestamps.ts b/packages/server/modules/serverinvites/migrations/20230907131636_migrate_invites_to_lower_precision_timestamps.ts index 74ea3cf91..d8c835165 100644 --- a/packages/server/modules/serverinvites/migrations/20230907131636_migrate_invites_to_lower_precision_timestamps.ts +++ b/packages/server/modules/serverinvites/migrations/20230907131636_migrate_invites_to_lower_precision_timestamps.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' /** * MIGRATING STREAMS TIMESTAMP FIELDS TO A LOWER PRECISION, CAUSE JS CANT HANDLE diff --git a/packages/server/modules/serverinvites/migrations/20240716094858_generalized_invite_record_resources.ts b/packages/server/modules/serverinvites/migrations/20240716094858_generalized_invite_record_resources.ts index 24f29ac4e..494470ccd 100644 --- a/packages/server/modules/serverinvites/migrations/20240716094858_generalized_invite_record_resources.ts +++ b/packages/server/modules/serverinvites/migrations/20240716094858_generalized_invite_record_resources.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_invites' diff --git a/packages/server/modules/serverinvites/migrations/20240716134617_migrate_to_resources_array.ts b/packages/server/modules/serverinvites/migrations/20240716134617_migrate_to_resources_array.ts index 89f7e2c8c..e75903168 100644 --- a/packages/server/modules/serverinvites/migrations/20240716134617_migrate_to_resources_array.ts +++ b/packages/server/modules/serverinvites/migrations/20240716134617_migrate_to_resources_array.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_invites' diff --git a/packages/server/modules/serverinvites/migrations/20240808140602_add_invite_updated_at.ts b/packages/server/modules/serverinvites/migrations/20240808140602_add_invite_updated_at.ts index 038cfb445..f1b6f962e 100644 --- a/packages/server/modules/serverinvites/migrations/20240808140602_add_invite_updated_at.ts +++ b/packages/server/modules/serverinvites/migrations/20240808140602_add_invite_updated_at.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'server_invites' diff --git a/packages/server/modules/serverinvites/repositories/serverInvites.ts b/packages/server/modules/serverinvites/repositories/serverInvites.ts index 2861c3e5e..d61caa654 100644 --- a/packages/server/modules/serverinvites/repositories/serverInvites.ts +++ b/packages/server/modules/serverinvites/repositories/serverInvites.ts @@ -1,18 +1,18 @@ import { knex, ServerInvites, Streams, Users } from '@/modules/core/dbSchema' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' import { getUserByEmailFactory, - getUserFactory, - UserWithOptionalRole + getUserFactory } from '@/modules/core/repositories/users' import { resolveTarget, buildUserTarget } from '@/modules/serverinvites/helpers/core' import { isObjectLike, uniq } from 'lodash-es' -import { +import type { ExtendedInvite, InviteResourceTarget, ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { Knex } from 'knex' -import { +import type { Knex } from 'knex' +import type { CountServerInvites, DeleteAllResourceInvites, DeleteAllUserInvites, @@ -35,12 +35,13 @@ import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { isNonNullable, Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' +import { isNonNullable } from '@speckle/shared' import { LogicError } from '@/modules/shared/errors' import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' import { WorkspaceAcl, Workspaces } from '@/modules/workspacesCore/helpers/db' -import { Project } from '@/modules/core/domain/streams/types' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Project } from '@/modules/core/domain/streams/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { formatJsonArrayRecords } from '@/modules/shared/helpers/dbHelper' export type ServerInviteResourceFilter< diff --git a/packages/server/modules/serverinvites/services/coreEmailContents.ts b/packages/server/modules/serverinvites/services/coreEmailContents.ts index ffd1a9e8b..0a7b3bc6d 100644 --- a/packages/server/modules/serverinvites/services/coreEmailContents.ts +++ b/packages/server/modules/serverinvites/services/coreEmailContents.ts @@ -1,12 +1,12 @@ -import { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' import { getRegistrationRoute, getStreamRoute } from '@/modules/core/helpers/routeHelper' -import { StreamRecord } from '@/modules/core/helpers/types' -import { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { StreamRecord } from '@/modules/core/helpers/types' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' import { sanitizeMessage } from '@/modules/emails/services/emailRendering' -import { +import type { PrimaryInviteResourceTarget, ProjectInviteResourceTarget } from '@/modules/serverinvites/domain/types' @@ -15,7 +15,7 @@ import { isProjectResourceTarget, isServerResourceTarget } from '@/modules/serverinvites/helpers/core' -import { BuildInviteEmailContents } from '@/modules/serverinvites/services/operations' +import type { BuildInviteEmailContents } from '@/modules/serverinvites/services/operations' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' function buildServerMjmlPreamble(params: Parameters[0]) { diff --git a/packages/server/modules/serverinvites/services/coreFinalization.ts b/packages/server/modules/serverinvites/services/coreFinalization.ts index 56a287241..6669a7a0e 100644 --- a/packages/server/modules/serverinvites/services/coreFinalization.ts +++ b/packages/server/modules/serverinvites/services/coreFinalization.ts @@ -1,4 +1,4 @@ -import { +import type { AddOrUpdateStreamCollaborator, GetStream } from '@/modules/core/domain/streams/operations' @@ -6,11 +6,11 @@ import { StreamInvalidAccessError } from '@/modules/core/errors/stream' import { isResourceAllowed } from '@/modules/core/helpers/token' import { ProjectInviteResourceType } from '@/modules/serverinvites/domain/constants' import { InviteFinalizingError } from '@/modules/serverinvites/errors' -import { - InviteFinalizationAction, +import type { ProcessFinalizedResourceInvite, ValidateResourceInviteBeforeFinalization } from '@/modules/serverinvites/services/operations' +import { InviteFinalizationAction } from '@/modules/serverinvites/services/operations' import { Roles } from '@speckle/shared' type ValidateProjectInviteBeforeFinalizationFactoryDeps = { diff --git a/packages/server/modules/serverinvites/services/coreResourceCollection.ts b/packages/server/modules/serverinvites/services/coreResourceCollection.ts index 9fd9cb882..4ba1f410b 100644 --- a/packages/server/modules/serverinvites/services/coreResourceCollection.ts +++ b/packages/server/modules/serverinvites/services/coreResourceCollection.ts @@ -2,8 +2,8 @@ import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { CollectAndValidateResourceTargets } from '@/modules/serverinvites/services/operations' -import { ServerInviteResourceTarget } from '@/modules/serverinvites/domain/types' +import type { CollectAndValidateResourceTargets } from '@/modules/serverinvites/services/operations' +import type { ServerInviteResourceTarget } from '@/modules/serverinvites/domain/types' import { InviteCreateValidationError } from '@/modules/serverinvites/errors' import { isProjectResourceTarget, @@ -12,7 +12,7 @@ import { import { authorizeResolver } from '@/modules/shared' import { Roles } from '@speckle/shared' import { flatten } from 'lodash-es' -import { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' const collectAndValidateServerTargetFactory = (): CollectAndValidateResourceTargets => (params) => { diff --git a/packages/server/modules/serverinvites/services/creation.ts b/packages/server/modules/serverinvites/services/creation.ts index a0cff8eb9..245330d21 100644 --- a/packages/server/modules/serverinvites/services/creation.ts +++ b/packages/server/modules/serverinvites/services/creation.ts @@ -2,20 +2,17 @@ import crs from 'crypto-random-string' import emailsModule from '@/modules/emails' import { InviteCreateValidationError } from '@/modules/serverinvites/errors' import sanitizeHtml from 'sanitize-html' -import { - resolveTarget, - buildUserTarget, - ResolvedTargetData -} from '@/modules/serverinvites/helpers/core' -import { UserWithOptionalRole } from '@/modules/core/repositories/users' -import { +import type { ResolvedTargetData } from '@/modules/serverinvites/helpers/core' +import { resolveTarget, buildUserTarget } from '@/modules/serverinvites/helpers/core' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import type { FindInvite, FindUserByTarget, InsertInviteAndDeleteOld, MarkInviteUpdated, ServerInviteRecordInsertModel } from '@/modules/serverinvites/domain/operations' -import { +import type { BuildInviteEmailContents, CollectAndValidateResourceTargets, CreateAndSendInvite, @@ -24,15 +21,15 @@ import { } from '@/modules/serverinvites/services/operations' import { renderEmail } from '@/modules/emails/services/emailRendering' import { ServerInvitesEvents } from '@/modules/serverinvites/domain/events' -import { MaybeNullOrUndefined } from '@speckle/shared' -import { +import type { MaybeNullOrUndefined } from '@speckle/shared' +import type { PrimaryInviteResourceTarget, ServerInviteRecord } from '@/modules/serverinvites/domain/types' -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' +import type { ServerInfo } from '@/modules/core/helpers/types' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' const getFinalTargetData = ( target: string, diff --git a/packages/server/modules/serverinvites/services/operations.ts b/packages/server/modules/serverinvites/services/operations.ts index f93d5a669..908650ec5 100644 --- a/packages/server/modules/serverinvites/services/operations.ts +++ b/packages/server/modules/serverinvites/services/operations.ts @@ -1,17 +1,17 @@ -import { Project } from '@/modules/core/domain/streams/types' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { ServerInfo } from '@/modules/core/helpers/types' -import { UserWithOptionalRole } from '@/modules/core/repositories/users' -import { EmailTemplateParams } from '@/modules/emails/domain/operations' -import { CreateInviteParams } from '@/modules/serverinvites/domain/operations' -import { +import type { Project } from '@/modules/core/domain/streams/types' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { ServerInfo } from '@/modules/core/helpers/types' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import type { EmailTemplateParams } from '@/modules/emails/domain/operations' +import type { CreateInviteParams } from '@/modules/serverinvites/domain/operations' +import type { InviteResourceTarget, PrimaryInviteResourceTarget, ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { ResolvedTargetData } from '@/modules/serverinvites/helpers/core' -import { ServerInviteResourceFilter } from '@/modules/serverinvites/repositories/serverInvites' -import { MaybeAsync, MaybeNullOrUndefined } from '@speckle/shared' +import type { ResolvedTargetData } from '@/modules/serverinvites/helpers/core' +import type { ServerInviteResourceFilter } from '@/modules/serverinvites/repositories/serverInvites' +import type { MaybeAsync, MaybeNullOrUndefined } from '@speckle/shared' export type InviteResult = { inviteId: string diff --git a/packages/server/modules/serverinvites/services/processing.ts b/packages/server/modules/serverinvites/services/processing.ts index 9e454a67b..d365369cb 100644 --- a/packages/server/modules/serverinvites/services/processing.ts +++ b/packages/server/modules/serverinvites/services/processing.ts @@ -4,15 +4,12 @@ import { InviteFinalizingError, InviteNotFoundError } from '@/modules/serverinvites/errors' -import { - buildUserTarget, - ResolvedTargetData, - resolveTarget -} from '@/modules/serverinvites/helpers/core' +import type { ResolvedTargetData } from '@/modules/serverinvites/helpers/core' +import { buildUserTarget, resolveTarget } from '@/modules/serverinvites/helpers/core' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' -import { +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { DeleteInvite, DeleteInvitesByTarget, DeleteServerOnlyInvites, @@ -21,28 +18,29 @@ import { InsertInviteAndDeleteOld, UpdateAllInviteTargets } from '@/modules/serverinvites/domain/operations' -import { +import type { CollectAndValidateResourceTargets, FinalizeInvite, FinalizeInvitedServerRegistration, - InviteFinalizationAction, ProcessFinalizedResourceInvite, ResolveAuthRedirectPath, ValidateResourceInviteBeforeFinalization, ValidateServerInvite } from '@/modules/serverinvites/services/operations' -import { ensureError, MaybeNullOrUndefined } from '@speckle/shared' +import { InviteFinalizationAction } from '@/modules/serverinvites/services/operations' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { ensureError } from '@speckle/shared' import { noop } from 'lodash-es' import { ServerInvitesEvents } from '@/modules/serverinvites/domain/events' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { FindEmail, ValidateAndCreateUserEmail } from '@/modules/core/domain/userEmails/operations' -import { ServerInfo } from '@/modules/core/helpers/types' -import { GetUser } from '@/modules/core/domain/users/operations' -import { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { ServerInfo } from '@/modules/core/helpers/types' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' /** * Convert the initial validation function to a finalization validation function so same logic can be reused diff --git a/packages/server/modules/serverinvites/services/projectInviteManagement.ts b/packages/server/modules/serverinvites/services/projectInviteManagement.ts index eb8df8efb..f3c347d71 100644 --- a/packages/server/modules/serverinvites/services/projectInviteManagement.ts +++ b/packages/server/modules/serverinvites/services/projectInviteManagement.ts @@ -1,26 +1,26 @@ -import { GetStream } from '@/modules/core/domain/streams/operations' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { GetUser, GetUsers } from '@/modules/core/domain/users/operations' -import { +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { GetUser, GetUsers } from '@/modules/core/domain/users/operations' +import type { MutationStreamInviteUseArgs, ProjectInviteCreateInput, ProjectInviteUseInput, StreamInviteCreateInput } from '@/modules/core/graph/generated/graphql' -import { ContextResourceAccessRules } from '@/modules/core/helpers/token' -import { LimitedUserRecord } from '@/modules/core/helpers/types' +import type { ContextResourceAccessRules } from '@/modules/core/helpers/token' +import type { LimitedUserRecord } from '@/modules/core/helpers/types' import { removePrivateFields } from '@/modules/core/helpers/userHelper' import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { +import type { CreateInviteParams, FindInvite, QueryAllResourceInvites, QueryAllUserResourceInvites } from '@/modules/serverinvites/domain/operations' -import { +import type { PrimaryInviteResourceTarget, ProjectInviteResourceTarget, ServerInviteRecord @@ -29,29 +29,29 @@ import { InviteCreateValidationError, InviteNotFoundError } from '@/modules/serverinvites/errors' +import type { ResourceTargetTypeRoleTypeMap } from '@/modules/serverinvites/helpers/core' import { buildUserTarget, isProjectResourceTarget, resolveInviteTargetTitle, - resolveTarget, - ResourceTargetTypeRoleTypeMap + resolveTarget } from '@/modules/serverinvites/helpers/core' -import { PendingStreamCollaboratorGraphQLReturn } from '@/modules/serverinvites/helpers/graphTypes' -import { +import type { PendingStreamCollaboratorGraphQLReturn } from '@/modules/serverinvites/helpers/graphTypes' +import type { CreateAndSendInvite, FinalizeInvite, GetInvitationTargetUsers, GetProjectInviteProject } from '@/modules/serverinvites/services/operations' -import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' -import { +import type { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { MaybeNullOrUndefined, Nullable, Optional, - Roles, ServerRoles, StreamRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { has } from 'lodash-es' type FullProjectInviteCreateInput = ProjectInviteCreateInput & { projectId: string } diff --git a/packages/server/modules/serverinvites/services/retrieval.ts b/packages/server/modules/serverinvites/services/retrieval.ts index b5b48b83b..442d8984b 100644 --- a/packages/server/modules/serverinvites/services/retrieval.ts +++ b/packages/server/modules/serverinvites/services/retrieval.ts @@ -1,10 +1,10 @@ -import { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes' +import type { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes' import { resolveTarget } from '@/modules/serverinvites/helpers/core' -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' import { keyBy, uniq } from 'lodash-es' -import { FindServerInvite } from '@/modules/serverinvites/domain/operations' -import { GetInvitationTargetUsers } from '@/modules/serverinvites/services/operations' -import { GetUsers } from '@/modules/core/domain/users/operations' +import type { FindServerInvite } from '@/modules/serverinvites/domain/operations' +import type { GetInvitationTargetUsers } from '@/modules/serverinvites/services/operations' +import type { GetUsers } from '@/modules/core/domain/users/operations' /** * Get all registered invitation target users keyed by their ID diff --git a/packages/server/modules/serverinvites/tests/invites.spec.ts b/packages/server/modules/serverinvites/tests/invites.spec.ts index e2cb7ea9e..e0d00c6ff 100644 --- a/packages/server/modules/serverinvites/tests/invites.spec.ts +++ b/packages/server/modules/serverinvites/tests/invites.spec.ts @@ -3,8 +3,8 @@ import { Streams, Users, ServerInvites } from '@/modules/core/dbSchema' import { Roles, AllScopes } from '@/modules/core/helpers/mainConstants' import { truncateTables } from '@/test/hooks' import { expect } from 'chai' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { - BasicTestStream, createTestStream, createTestStreams, getUserStreamRole @@ -15,18 +15,20 @@ import { } from '@/test/speckle-helpers/inviteHelper' import db from '@/db/knex' import { findInviteFactory } from '@/modules/serverinvites/repositories/serverInvites' -import { BasicTestUser, createTestUser } from '@/test/authHelper' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' +import type { + CreateProjectInviteMutationVariables, + ServerInviteCreateInput, + StreamInviteCreateInput +} from '@/modules/core/graph/generated/graphql' import { BatchCreateServerInviteDocument, BatchCreateStreamInviteDocument, CancelStreamInviteDocument, CreateProjectInviteDocument, - CreateProjectInviteMutationVariables, CreateServerInviteDocument, CreateStreamInviteDocument, DeleteInviteDocument, @@ -35,15 +37,14 @@ import { GetStreamInvitesDocument, GetStreamPendingCollaboratorsDocument, ResendInviteDocument, - ServerInviteCreateInput, - StreamInviteCreateInput, UseStreamInviteDocument } from '@/modules/core/graph/generated/graphql' -import { ServerInviteRecord } from '@/modules/serverinvites/domain/types' +import type { ServerInviteRecord } from '@/modules/serverinvites/domain/types' import { reduce } from 'lodash-es' import { grantStreamPermissionsFactory } from '@/modules/core/repositories/streams' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' const { FF_PERSONAL_PROJECTS_LIMITS_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/shared/authz.ts b/packages/server/modules/shared/authz.ts index 4cbc2f397..2619f9c26 100644 --- a/packages/server/modules/shared/authz.ts +++ b/packages/server/modules/shared/authz.ts @@ -1,23 +1,23 @@ import { Scopes, Roles } from '@/modules/core/helpers/mainConstants' import { getRolesFactory } from '@/modules/shared/repositories/roles' +import type { BaseError } from '@/modules/shared/errors' import { - BaseError, ForbiddenError, UnauthorizedError, ContextError, DatabaseError, NotFoundError } from '@/modules/shared/errors' -import { - Authz, +import type { AvailableRoles, MaybeNullOrUndefined, ServerRoles, StreamRoles } from '@speckle/shared' +import { Authz } from '@speckle/shared' import { isResourceAllowed } from '@/modules/core/helpers/token' -import { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' import db from '@/db/knex' import type { AuthContext, @@ -25,13 +25,13 @@ import type { AuthResult, AuthData } from '@/modules/shared/domain/authz/types' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' -import { +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { ValidateServerRoleBuilder, ValidateStreamRoleBuilder } from '@/modules/shared/domain/authz/operations' -import { GetRoles } from '@/modules/shared/domain/rolesAndScopes/operations' -import { ValidateUserServerRole } from '@/modules/shared/domain/operations' +import type { GetRoles } from '@/modules/shared/domain/rolesAndScopes/operations' +import type { ValidateUserServerRole } from '@/modules/shared/domain/operations' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { moduleAuthLoaders } from '@/modules/index' export { AuthContext, AuthParams } diff --git a/packages/server/modules/shared/command.ts b/packages/server/modules/shared/command.ts index 1ca5922e9..8235b7be4 100644 --- a/packages/server/modules/shared/command.ts +++ b/packages/server/modules/shared/command.ts @@ -1,16 +1,16 @@ import { mainDb } from '@/db/knex' import { withTransaction } from '@/modules/shared/helpers/dbHelper' -import { +import type { EmitArg, EventBus, - EventBusEmit, - getEventBus + EventBusEmit } from '@/modules/shared/services/eventBus' +import { getEventBus } from '@/modules/shared/services/eventBus' import { withOperationLogging } from '@/observability/domain/businessLogging' -import { MaybeAsync } from '@speckle/shared' -import { Knex } from 'knex' +import type { MaybeAsync } from '@speckle/shared' +import type { Knex } from 'knex' import { isBoolean } from 'lodash-es' -import { Logger } from 'pino' +import type { Logger } from 'pino' /** * @deprecated asOperation does this and more. Also many usages of commandFactory are broken diff --git a/packages/server/modules/shared/domain/authz/operations.ts b/packages/server/modules/shared/domain/authz/operations.ts index 1bb1ec385..523540ec2 100644 --- a/packages/server/modules/shared/domain/authz/operations.ts +++ b/packages/server/modules/shared/domain/authz/operations.ts @@ -1,5 +1,5 @@ -import { AuthPipelineFunction } from '@/modules/shared/domain/authz/types' -import { ServerRoles, StreamRoles } from '@speckle/shared' +import type { AuthPipelineFunction } from '@/modules/shared/domain/authz/types' +import type { ServerRoles, StreamRoles } from '@speckle/shared' export type ValidateServerRoleBuilder = (params: { requiredRole: ServerRoles diff --git a/packages/server/modules/shared/domain/authz/types.ts b/packages/server/modules/shared/domain/authz/types.ts index a5d156885..ca5c534ac 100644 --- a/packages/server/modules/shared/domain/authz/types.ts +++ b/packages/server/modules/shared/domain/authz/types.ts @@ -1,7 +1,7 @@ -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' -import { BaseError } from '@/modules/shared/errors' -import { Nullable, ServerRoles } from '@speckle/shared' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { BaseError } from '@/modules/shared/errors' +import type { Nullable, ServerRoles } from '@speckle/shared' export interface AuthContext { auth: boolean diff --git a/packages/server/modules/shared/domain/operations.ts b/packages/server/modules/shared/domain/operations.ts index 9fadc4069..b70bd5bf9 100644 --- a/packages/server/modules/shared/domain/operations.ts +++ b/packages/server/modules/shared/domain/operations.ts @@ -1,14 +1,14 @@ -import { ServerAcl, StreamAcl } from '@/modules/core/dbSchema' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { AuthContext } from '@/modules/shared/domain/authz/types' -import { WorkspaceAcl } from '@/modules/workspacesCore/helpers/db' -import { +import type { ServerAcl, StreamAcl } from '@/modules/core/dbSchema' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { AuthContext } from '@/modules/shared/domain/authz/types' +import type { WorkspaceAcl } from '@/modules/workspacesCore/helpers/db' +import type { AvailableRoles, MaybeNullOrUndefined, Optional, ServerRoles } from '@speckle/shared' -import { OperationTypeNode } from 'graphql' +import type { OperationTypeNode } from 'graphql' export type GetUserAclRole = (params: { aclTableName: typeof ServerAcl.name | typeof StreamAcl.name | typeof WorkspaceAcl.name diff --git a/packages/server/modules/shared/domain/rolesAndScopes/logic.ts b/packages/server/modules/shared/domain/rolesAndScopes/logic.ts index bddce47a5..10f5b8ac4 100644 --- a/packages/server/modules/shared/domain/rolesAndScopes/logic.ts +++ b/packages/server/modules/shared/domain/rolesAndScopes/logic.ts @@ -1,5 +1,5 @@ -import { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' -import { AvailableRoles } from '@speckle/shared' +import type { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { AvailableRoles } from '@speckle/shared' import { isUndefined } from 'lodash-es' /** diff --git a/packages/server/modules/shared/domain/rolesAndScopes/operations.ts b/packages/server/modules/shared/domain/rolesAndScopes/operations.ts index 98e6d71e8..c282e9172 100644 --- a/packages/server/modules/shared/domain/rolesAndScopes/operations.ts +++ b/packages/server/modules/shared/domain/rolesAndScopes/operations.ts @@ -1,4 +1,7 @@ -import { TokenScopeData, UserRole } from '@/modules/shared/domain/rolesAndScopes/types' +import type { + TokenScopeData, + UserRole +} from '@/modules/shared/domain/rolesAndScopes/types' export type GetRoles = () => Promise export type UpsertRole = (args: { role: UserRole }) => Promise diff --git a/packages/server/modules/shared/domain/rolesAndScopes/types.ts b/packages/server/modules/shared/domain/rolesAndScopes/types.ts index 3941cafe7..fd0f0ea91 100644 --- a/packages/server/modules/shared/domain/rolesAndScopes/types.ts +++ b/packages/server/modules/shared/domain/rolesAndScopes/types.ts @@ -1,4 +1,4 @@ -import { +import type { AvailableRoles, ServerRoles, StreamRoles, diff --git a/packages/server/modules/shared/errors/base.ts b/packages/server/modules/shared/errors/base.ts index ca6fd9556..8b7a40431 100644 --- a/packages/server/modules/shared/errors/base.ts +++ b/packages/server/modules/shared/errors/base.ts @@ -1,4 +1,4 @@ -import { Merge } from 'type-fest' +import type { Merge } from 'type-fest' import type { Options, Info } from 'verror' import VError from 'verror' diff --git a/packages/server/modules/shared/helpers/dbHelper.ts b/packages/server/modules/shared/helpers/dbHelper.ts index 51567e44e..713351ff1 100644 --- a/packages/server/modules/shared/helpers/dbHelper.ts +++ b/packages/server/modules/shared/helpers/dbHelper.ts @@ -1,12 +1,14 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Knex } from 'knex' +import type { Knex } from 'knex' import { postgresMaxConnections } from '@/modules/shared/helpers/envHelper' import { EnvironmentResourceError } from '@/modules/shared/errors' -import { isNonNullable, MaybeAsync } from '@speckle/shared' +import type { MaybeAsync } from '@speckle/shared' +import { isNonNullable } from '@speckle/shared' import { base64Decode, base64Encode } from '@/modules/shared/helpers/cryptoHelper' -import dayjs, { Dayjs } from 'dayjs' -import { MaybeNullOrUndefined, Nullable } from '@speckle/shared' -import { SchemaConfig } from '@/modules/core/dbSchema' +import type { Dayjs } from 'dayjs' +import dayjs from 'dayjs' +import type { MaybeNullOrUndefined, Nullable } from '@speckle/shared' +import type { SchemaConfig } from '@/modules/core/dbSchema' import { has, isObjectLike, isString, mapValues, pick, times } from 'lodash-es' export type Collection = { diff --git a/packages/server/modules/shared/helpers/envHelper.ts b/packages/server/modules/shared/helpers/envHelper.ts index 73df103e5..7ee615f36 100644 --- a/packages/server/modules/shared/helpers/envHelper.ts +++ b/packages/server/modules/shared/helpers/envHelper.ts @@ -1,7 +1,8 @@ import { MisconfiguredEnvironmentError } from '@/modules/shared/errors' import { has, trimEnd } from 'lodash-es' import * as Environment from '@speckle/shared/environment' -import { ensureError, Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' +import { ensureError } from '@speckle/shared' export function getStringFromEnv( envVarKey: string, diff --git a/packages/server/modules/shared/helpers/errorHelper.ts b/packages/server/modules/shared/helpers/errorHelper.ts index 194fe283c..e9007c3a4 100644 --- a/packages/server/modules/shared/helpers/errorHelper.ts +++ b/packages/server/modules/shared/helpers/errorHelper.ts @@ -1,12 +1,8 @@ import { AutomateModuleDisabledError } from '@/modules/core/errors/automate' import { StreamNotFoundError } from '@/modules/core/errors/stream' import { WorkspacesModuleDisabledError } from '@/modules/core/errors/workspaces' -import { - BadRequestError, - BaseError, - ForbiddenError, - NotFoundError -} from '@/modules/shared/errors' +import type { BaseError } from '@/modules/shared/errors' +import { BadRequestError, ForbiddenError, NotFoundError } from '@/modules/shared/errors' import { SsoSessionMissingOrExpiredError } from '@/modules/workspacesCore/errors' import { Authz, ensureError, throwUncoveredError } from '@speckle/shared' import VError from 'verror' diff --git a/packages/server/modules/shared/helpers/graphqlHelper.ts b/packages/server/modules/shared/helpers/graphqlHelper.ts index 31fb4e565..188ec144f 100644 --- a/packages/server/modules/shared/helpers/graphqlHelper.ts +++ b/packages/server/modules/shared/helpers/graphqlHelper.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { AuthContext } from '@/modules/shared/authz' -import DataLoader from 'dataloader' +import type { AuthContext } from '@/modules/shared/authz' +import type DataLoader from 'dataloader' import { ApolloServerErrorCode } from '@apollo/server/errors' import { GraphQLError } from 'graphql' import { @@ -10,8 +10,8 @@ import { NotFoundError, UnauthorizedError } from '@/modules/shared/errors' -import { Optional } from '@speckle/shared' -import { Knex } from 'knex' +import type { Optional } from '@speckle/shared' +import type { Knex } from 'knex' /** * All dataloaders must at the very least follow this type diff --git a/packages/server/modules/shared/helpers/mocks.ts b/packages/server/modules/shared/helpers/mocks.ts index ebd77aa69..bddb16c63 100644 --- a/packages/server/modules/shared/helpers/mocks.ts +++ b/packages/server/modules/shared/helpers/mocks.ts @@ -1,9 +1,10 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { db } from '@/db/knex' -import { ResolverFn, Resolvers } from '@/modules/core/graph/generated/graphql' -import { IMockStore, IMocks, isRef, Ref } from '@graphql-tools/mock' -import { GraphQLResolveInfo } from 'graphql' +import type { ResolverFn, Resolvers } from '@/modules/core/graph/generated/graphql' +import type { IMockStore, IMocks, Ref } from '@graphql-tools/mock' +import { isRef } from '@graphql-tools/mock' +import type { GraphQLResolveInfo } from 'graphql' import { get, has, isArray, isObjectLike, random } from 'lodash-es' export type SpeckleModuleMocksConfig = { diff --git a/packages/server/modules/shared/helpers/sanitization.ts b/packages/server/modules/shared/helpers/sanitization.ts index 5a88dc525..2e386714e 100644 --- a/packages/server/modules/shared/helpers/sanitization.ts +++ b/packages/server/modules/shared/helpers/sanitization.ts @@ -1,4 +1,4 @@ -import { MaybeNullOrUndefined, Nullable } from '@speckle/shared' +import type { MaybeNullOrUndefined, Nullable } from '@speckle/shared' import { BaseError } from '@/modules/shared/errors' const base64ImagePattern = /^data:image\/[a-zA-Z+.-]+;base64,[a-zA-Z0-9+/]+=*$/ diff --git a/packages/server/modules/shared/helpers/typeHelper.ts b/packages/server/modules/shared/helpers/typeHelper.ts index 9015592d5..c426d560c 100644 --- a/packages/server/modules/shared/helpers/typeHelper.ts +++ b/packages/server/modules/shared/helpers/typeHelper.ts @@ -12,7 +12,7 @@ import type { ConditionalKeys, SetRequired } from 'type-fest' import type { Logger } from 'pino' import type { BaseContext } from '@apollo/server' import type { Registry } from 'prom-client' -import { AuthPolicies } from '@speckle/shared/authz' +import type { AuthPolicies } from '@speckle/shared/authz' export type MarkNullableOptional = SetRequired< Partial, diff --git a/packages/server/modules/shared/middleware/index.ts b/packages/server/modules/shared/middleware/index.ts index eeb4b5587..6a2ebe766 100644 --- a/packages/server/modules/shared/middleware/index.ts +++ b/packages/server/modules/shared/middleware/index.ts @@ -1,25 +1,20 @@ -import { +import type { AuthContext, - authPipelineCreator, AuthPipelineFunction, - AuthParams, - authHasFailed + AuthParams } from '@/modules/shared/authz' -import { - Request, - RequestHandler, - raw as expressRawBodyParser, - json as expressJsonBodyParser -} from 'express' +import { authPipelineCreator, authHasFailed } from '@/modules/shared/authz' +import type { Request, RequestHandler } from 'express' +import { raw as expressRawBodyParser, json as expressJsonBodyParser } from 'express' import { ForbiddenError, NotFoundError, UnauthorizedError } from '@/modules/shared/errors' import { ensureError } from '@/modules/shared/helpers/errorHelper' -import { TokenValidationResult } from '@/modules/core/helpers/types' +import type { TokenValidationResult } from '@/modules/core/helpers/types' import { buildRequestLoaders } from '@/modules/core/loaders' -import { +import type { GraphQLContext, MaybeNullOrUndefined, Nullable diff --git a/packages/server/modules/shared/redis/redis.ts b/packages/server/modules/shared/redis/redis.ts index 2a8022309..eba8fd632 100644 --- a/packages/server/modules/shared/redis/redis.ts +++ b/packages/server/modules/shared/redis/redis.ts @@ -1,5 +1,6 @@ import { redisLogger } from '@/observability/logging' -import Redis, { RedisOptions } from 'ioredis' +import type { RedisOptions } from 'ioredis' +import Redis from 'ioredis' import { EnvironmentResourceError, MisconfiguredEnvironmentError diff --git a/packages/server/modules/shared/repositories/acl.ts b/packages/server/modules/shared/repositories/acl.ts index e73ea5fb5..0e354daf5 100644 --- a/packages/server/modules/shared/repositories/acl.ts +++ b/packages/server/modules/shared/repositories/acl.ts @@ -1,9 +1,12 @@ import { ServerAcl } from '@/modules/core/dbSchema' -import { ServerAclRecord, StreamAclRecord } from '@/modules/core/helpers/types' -import { GetUserAclRole, GetUserServerRole } from '@/modules/shared/domain/operations' -import { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' -import { AvailableRoles, Optional, ServerRoles } from '@speckle/shared' -import { Knex } from 'knex' +import type { ServerAclRecord, StreamAclRecord } from '@/modules/core/helpers/types' +import type { + GetUserAclRole, + GetUserServerRole +} from '@/modules/shared/domain/operations' +import type { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' +import type { AvailableRoles, Optional, ServerRoles } from '@speckle/shared' +import type { Knex } from 'knex' const tables = { serverAcl: (db: Knex) => db(ServerAcl.name) diff --git a/packages/server/modules/shared/repositories/roles.ts b/packages/server/modules/shared/repositories/roles.ts index fa4a18a18..ba1c58865 100644 --- a/packages/server/modules/shared/repositories/roles.ts +++ b/packages/server/modules/shared/repositories/roles.ts @@ -1,6 +1,9 @@ -import { GetRoles, UpsertRole } from '@/modules/shared/domain/rolesAndScopes/operations' -import { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' -import { Knex } from 'knex' +import type { + GetRoles, + UpsertRole +} from '@/modules/shared/domain/rolesAndScopes/operations' +import type { UserRole } from '@/modules/shared/domain/rolesAndScopes/types' +import type { Knex } from 'knex' import { DatabaseError } from '@/modules/shared/errors' import { UserRoles } from '@/modules/core/dbSchema' import { diff --git a/packages/server/modules/shared/repositories/scopes.ts b/packages/server/modules/shared/repositories/scopes.ts index aa8c577ab..ad64752e9 100644 --- a/packages/server/modules/shared/repositories/scopes.ts +++ b/packages/server/modules/shared/repositories/scopes.ts @@ -1,7 +1,7 @@ -import { ScopeRecord } from '@/modules/auth/helpers/types' +import type { ScopeRecord } from '@/modules/auth/helpers/types' import { Scopes } from '@/modules/core/dbSchema' -import { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' -import { Knex } from 'knex' +import type { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { Knex } from 'knex' const tables = { scopes: (db: Knex) => db(Scopes.name) diff --git a/packages/server/modules/shared/services/auth.ts b/packages/server/modules/shared/services/auth.ts index d19cd063b..20ce96836 100644 --- a/packages/server/modules/shared/services/auth.ts +++ b/packages/server/modules/shared/services/auth.ts @@ -1,22 +1,22 @@ -import { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' import { isResourceAllowed, RoleResourceTargets, roleResourceTypeToTokenResourceType } from '@/modules/core/helpers/token' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' -import { +import type { AuthorizeResolver, GetUserAclRole, GetUserServerRole, ValidateScopes } from '@/modules/shared/domain/operations' -import { GetRoles } from '@/modules/shared/domain/rolesAndScopes/operations' +import type { GetRoles } from '@/modules/shared/domain/rolesAndScopes/operations' import { ForbiddenError } from '@/modules/shared/errors' -import { adminOverrideEnabled } from '@/modules/shared/helpers/envHelper' -import { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { adminOverrideEnabled } from '@/modules/shared/helpers/envHelper' +import type { EventBusEmit } from '@/modules/shared/services/eventBus' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { GetWorkspaceRoleAndSeat } from '@/modules/workspacesCore/domain/operations' +import type { GetWorkspaceRoleAndSeat } from '@/modules/workspacesCore/domain/operations' import { isNullOrUndefined, Roles } from '@speckle/shared' import { OperationTypeNode } from 'graphql' diff --git a/packages/server/modules/shared/services/eventBus.ts b/packages/server/modules/shared/services/eventBus.ts index a034c939b..91347c693 100644 --- a/packages/server/modules/shared/services/eventBus.ts +++ b/packages/server/modules/shared/services/eventBus.ts @@ -1,63 +1,63 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { +import type { WorkspaceEventsPayloads, workspaceEventNamespace } from '@/modules/workspacesCore/domain/events' -import { +import type { gatekeeperEventNamespace, GatekeeperEventPayloads } from '@/modules/gatekeeperCore/domain/events' -import { MaybeAsync } from '@speckle/shared' -import { UnionToIntersection } from 'type-fest' +import type { MaybeAsync } from '@speckle/shared' +import type { UnionToIntersection } from 'type-fest' import EventEmitter from 'eventemitter2' -import { +import type { serverinvitesEventNamespace, ServerInvitesEventsPayloads } from '@/modules/serverinvites/domain/events' -import { +import type { modelEventsNamespace, ModelEventsPayloads } from '@/modules/core/domain/branches/events' -import { +import type { projectEventsNamespace, ProjectEventsPayloads } from '@/modules/core/domain/projects/events' -import { +import type { userEventsNamespace, UserEventsPayloads } from '@/modules/core/domain/users/events' -import { +import type { versionEventsNamespace, VersionEventsPayloads } from '@/modules/core/domain/commits/events' -import { +import type { accessRequestEventsNamespace, AccessRequestEventsPayloads } from '@/modules/accessrequests/domain/events' -import { +import type { commentEventsNamespace, CommentEventsPayloads } from '@/modules/comments/domain/events' -import { +import type { automationEventsNamespace, AutomationEventsPayloads, automationRunEventsNamespace, AutomationRunEventsPayloads } from '@/modules/automate/domain/events' -import { +import type { multiregionEventNamespace, MultiregionEventsPayloads } from '@/modules/multiregion/domain/events' -import { +import type { fileuploadEventNamespace, FileuploadEventsPayloads } from '@/modules/fileuploads/domain/events' -import { +import type { emailsEventNamespace, EmailsEventsPayloads } from '@/modules/emails/domain/events' -import { +import type { notificationsEventNamespace, NotificationsEventsPayloads } from '@/modules/notifications/domain/events' diff --git a/packages/server/modules/shared/services/paginatedItems.ts b/packages/server/modules/shared/services/paginatedItems.ts index 2db923f2d..4c32d4a94 100644 --- a/packages/server/modules/shared/services/paginatedItems.ts +++ b/packages/server/modules/shared/services/paginatedItems.ts @@ -1,5 +1,5 @@ -import { Collection } from '@/modules/shared/helpers/dbHelper' -import { MaybeNullOrUndefined } from '@speckle/shared' +import type { Collection } from '@/modules/shared/helpers/dbHelper' +import type { MaybeNullOrUndefined } from '@speckle/shared' type GetPaginatedItemsArgs = { limit: number diff --git a/packages/server/modules/shared/test/authz.spec.ts b/packages/server/modules/shared/test/authz.spec.ts index a8b97a3e8..cb91a3359 100644 --- a/packages/server/modules/shared/test/authz.spec.ts +++ b/packages/server/modules/shared/test/authz.spec.ts @@ -1,4 +1,5 @@ import { expect } from 'chai' +import type { AuthContext, AuthFailedResult } from '@/modules/shared/authz' import { authPipelineCreator, authFailed, @@ -10,9 +11,7 @@ import { allowForServerAdmins, validateResourceAccess, validateRequiredStreamFactory, - AuthContext, - isAuthFailedResult, - AuthFailedResult + isAuthFailedResult } from '@/modules/shared/authz' import { ForbiddenError as SFE, @@ -22,15 +21,17 @@ import { NotFoundError, BaseError } from '@/modules/shared/errors' -import { AvailableRoles, ensureError, Roles } from '@speckle/shared' +import type { AvailableRoles } from '@speckle/shared' +import { ensureError, Roles } from '@speckle/shared' import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' -import { ProjectRecordVisibility, StreamRecord } from '@/modules/core/helpers/types' -import { +import type { StreamRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { AuthData, AuthPipelineFunction, AuthResult } from '@/modules/shared/domain/authz/types' -import { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { UserRoleData } from '@/modules/shared/domain/rolesAndScopes/types' describe('AuthZ @shared', () => { const buildFooAuthData = (): AuthData => diff --git a/packages/server/modules/shared/test/helpers/mixpanel.ts b/packages/server/modules/shared/test/helpers/mixpanel.ts index 3e6b14bac..d2d2f921b 100644 --- a/packages/server/modules/shared/test/helpers/mixpanel.ts +++ b/packages/server/modules/shared/test/helpers/mixpanel.ts @@ -1,5 +1,5 @@ /* eslint-disable camelcase */ -import { MixpanelClient } from '@/modules/shared/utils/mixpanel' +import type { MixpanelClient } from '@/modules/shared/utils/mixpanel' export type MixpanelFakeEventRecord = Array[0]> type MixpanelFakeStorage = { diff --git a/packages/server/modules/shared/utils/caching.spec.ts b/packages/server/modules/shared/utils/caching.spec.ts index 693146ab1..4dc4ff59c 100644 --- a/packages/server/modules/shared/utils/caching.spec.ts +++ b/packages/server/modules/shared/utils/caching.spec.ts @@ -1,5 +1,5 @@ +import type { CacheProvider } from '@/modules/shared/utils/caching' import { - CacheProvider, inMemoryCacheProviderFactory, redisCacheProviderFactory, wrapFactoryWithCache, @@ -9,7 +9,7 @@ import { describeEach, itEach } from '@/test/assertionHelper' import TTLCache from '@isaacs/ttlcache' import { TIME_MS, wait } from '@speckle/shared' import { expect } from 'chai' -import Redis from 'ioredis' +import type Redis from 'ioredis' import MockRedis from 'ioredis-mock' const argsKey = (...args: Array) => JSON.stringify(args) diff --git a/packages/server/modules/shared/utils/caching.ts b/packages/server/modules/shared/utils/caching.ts index 2e19e7124..6f1270a1e 100644 --- a/packages/server/modules/shared/utils/caching.ts +++ b/packages/server/modules/shared/utils/caching.ts @@ -1,11 +1,12 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { Factory } from '@/modules/shared/helpers/factory' +import type { Factory } from '@/modules/shared/helpers/factory' import { getGenericRedis } from '@/modules/shared/redis/redis' import { getRequestLogger } from '@/observability/utils/requestContext' import { cacheLogger } from '@/observability/logging' import TTLCache from '@isaacs/ttlcache' -import { MaybeAsync, TIME_MS } from '@speckle/shared' -import Redis from 'ioredis' +import type { MaybeAsync } from '@speckle/shared' +import { TIME_MS } from '@speckle/shared' +import type Redis from 'ioredis' import { isNumber } from 'lodash-es' export interface CacheProvider { diff --git a/packages/server/modules/shared/utils/ip.ts b/packages/server/modules/shared/utils/ip.ts index 41b46ccb3..5500fae90 100644 --- a/packages/server/modules/shared/utils/ip.ts +++ b/packages/server/modules/shared/utils/ip.ts @@ -1,4 +1,4 @@ -import { Optional } from '@speckle/shared' +import type { Optional } from '@speckle/shared' import type express from 'express' import type http from 'http' diff --git a/packages/server/modules/shared/utils/mixpanel.ts b/packages/server/modules/shared/utils/mixpanel.ts index 8581258d8..b60e192c2 100644 --- a/packages/server/modules/shared/utils/mixpanel.ts +++ b/packages/server/modules/shared/utils/mixpanel.ts @@ -1,11 +1,12 @@ -import { MaybeNullOrUndefined, Optional, resolveMixpanelUserId } from '@speckle/shared' +import type { MaybeNullOrUndefined, Optional } from '@speckle/shared' +import { resolveMixpanelUserId } from '@speckle/shared' import * as MixpanelUtils from '@speckle/shared/observability/mixpanel' import { enableMixpanel, getServerOrigin, getServerVersion } from '@/modules/shared/helpers/envHelper' -import Mixpanel from 'mixpanel' +import type Mixpanel from 'mixpanel' import type express from 'express' import type http from 'http' import { mixpanelLogger } from '@/observability/logging' diff --git a/packages/server/modules/shared/utils/subscriptions.ts b/packages/server/modules/shared/utils/subscriptions.ts index b86310fc2..7dbc09e74 100644 --- a/packages/server/modules/shared/utils/subscriptions.ts +++ b/packages/server/modules/shared/utils/subscriptions.ts @@ -1,10 +1,10 @@ -import { MaybeAsync, Nullable } from '@speckle/shared' +import type { MaybeAsync, Nullable } from '@speckle/shared' import { getRedisUrl } from '@/modules/shared/helpers/envHelper' import { RedisPubSub } from 'graphql-redis-subscriptions' import Redis from 'ioredis' import { withFilter } from 'graphql-subscriptions' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' -import { +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { ProjectCommentsUpdatedMessage, ProjectFileImportUpdatedMessage, ProjectModelsUpdatedMessage, @@ -56,22 +56,22 @@ import { SubscriptionWorkspaceUpdatedArgs, WorkspaceUpdatedMessage } from '@/modules/core/graph/generated/graphql' -import { Merge, OverrideProperties } from 'type-fest' -import { +import type { Merge, OverrideProperties } from 'type-fest' +import type { ModelGraphQLReturn, ProjectGraphQLReturn, VersionGraphQLReturn } from '@/modules/core/helpers/graphTypes' -import { CommentGraphQLReturn } from '@/modules/comments/helpers/graphTypes' -import { FileUploadGraphQLReturn } from '@/modules/fileuploads/helpers/types' -import { +import type { CommentGraphQLReturn } from '@/modules/comments/helpers/graphTypes' +import type { FileUploadGraphQLReturn } from '@/modules/fileuploads/helpers/types' +import type { ProjectTriggeredAutomationsStatusUpdatedMessageGraphQLReturn, ProjectAutomationsUpdatedMessageGraphQLReturn } from '@/modules/automate/helpers/graphTypes' -import { CommentRecord } from '@/modules/comments/helpers/types' -import { CommitRecord } from '@/modules/core/helpers/types' -import { BranchRecord } from '@/modules/core/helpers/types' -import { WorkspaceGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' +import type { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommitRecord } from '@/modules/core/helpers/types' +import type { BranchRecord } from '@/modules/core/helpers/types' +import type { WorkspaceGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' /** * GraphQL Subscription PubSub instance diff --git a/packages/server/modules/stats/graph/resolvers/stats.ts b/packages/server/modules/stats/graph/resolvers/stats.ts index 2433173e4..375897a84 100644 --- a/packages/server/modules/stats/graph/resolvers/stats.ts +++ b/packages/server/modules/stats/graph/resolvers/stats.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { validateScopes } from '@/modules/shared' import { Roles, Scopes } from '@speckle/shared' diff --git a/packages/server/modules/stats/index.ts b/packages/server/modules/stats/index.ts index f659413cc..406765ea2 100644 --- a/packages/server/modules/stats/index.ts +++ b/packages/server/modules/stats/index.ts @@ -1,5 +1,5 @@ import { moduleLogger } from '@/observability/logging' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' export const init: SpeckleModule['init'] = async () => { moduleLogger.info('📊 Init stats module') diff --git a/packages/server/modules/stats/repositories/index.ts b/packages/server/modules/stats/repositories/index.ts index 39c22aa4b..c466f1a31 100644 --- a/packages/server/modules/stats/repositories/index.ts +++ b/packages/server/modules/stats/repositories/index.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export const getTotalStreamCountFactory = (deps: { db: Knex }) => async () => { const query = 'SELECT COUNT(*) FROM streams' diff --git a/packages/server/modules/webhooks/domain/operations.ts b/packages/server/modules/webhooks/domain/operations.ts index 370ea3058..61ea6e4d1 100644 --- a/packages/server/modules/webhooks/domain/operations.ts +++ b/packages/server/modules/webhooks/domain/operations.ts @@ -1,4 +1,4 @@ -import { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' +import type { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' export type CreateWebhookConfig = ( webhook: Pick< diff --git a/packages/server/modules/webhooks/graph/resolvers/webhooks.ts b/packages/server/modules/webhooks/graph/resolvers/webhooks.ts index 04ec85e48..8463228e8 100644 --- a/packages/server/modules/webhooks/graph/resolvers/webhooks.ts +++ b/packages/server/modules/webhooks/graph/resolvers/webhooks.ts @@ -1,11 +1,12 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { authorizeResolver } from '@/modules/shared' import { createWebhookFactory, deleteWebhookFactory, updateWebhookFactory } from '@/modules/webhooks/services/webhooks' -import { Authz, Roles } from '@speckle/shared' +import type { Authz } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { countWebhooksByStreamIdFactory, createWebhookConfigFactory, @@ -17,10 +18,8 @@ import { updateWebhookConfigFactory } from '@/modules/webhooks/repositories/webhooks' import { ForbiddenError } from '@/modules/shared/errors' -import { - TokenResourceIdentifier, - TokenResourceIdentifierType -} from '@/modules/core/domain/tokens/types' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { throwIfResourceAccessNotAllowed } from '@/modules/core/helpers/token' import { throwIfAuthNotOk } from '@/modules/shared/helpers/errorHelper' diff --git a/packages/server/modules/webhooks/helpers/graphTypes.ts b/packages/server/modules/webhooks/helpers/graphTypes.ts index 49dababa6..ac6727a2c 100644 --- a/packages/server/modules/webhooks/helpers/graphTypes.ts +++ b/packages/server/modules/webhooks/helpers/graphTypes.ts @@ -1,3 +1,3 @@ -import { Webhook } from '@/modules/webhooks/domain/types' +import type { Webhook } from '@/modules/webhooks/domain/types' export type WebhookGraphQLReturn = Webhook diff --git a/packages/server/modules/webhooks/index.ts b/packages/server/modules/webhooks/index.ts index bc019d215..a19205e33 100644 --- a/packages/server/modules/webhooks/index.ts +++ b/packages/server/modules/webhooks/index.ts @@ -1,5 +1,5 @@ -import cron from 'node-cron' -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type cron from 'node-cron' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { activitiesLogger, moduleLogger } from '@/observability/logging' import { scheduleExecutionFactory } from '@/modules/core/services/taskScheduler' import { @@ -7,7 +7,7 @@ import { releaseTaskLockFactory } from '@/modules/core/repositories/scheduledTasks' import { cleanOrphanedWebhookConfigsFactory } from '@/modules/webhooks/repositories/cleanup' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { db } from '@/db/knex' import { getRegisteredDbClients } from '@/modules/multiregion/utils/dbSelector' diff --git a/packages/server/modules/webhooks/migrations/20221104104921_webhooks_drop_stream_fk.ts b/packages/server/modules/webhooks/migrations/20221104104921_webhooks_drop_stream_fk.ts index 4597f2823..fb10f06cf 100644 --- a/packages/server/modules/webhooks/migrations/20221104104921_webhooks_drop_stream_fk.ts +++ b/packages/server/modules/webhooks/migrations/20221104104921_webhooks_drop_stream_fk.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'webhooks_config' diff --git a/packages/server/modules/webhooks/migrations/20230919080704_add_webhook_config_timestamps.ts b/packages/server/modules/webhooks/migrations/20230919080704_add_webhook_config_timestamps.ts index f7b3c9f14..0369915f0 100644 --- a/packages/server/modules/webhooks/migrations/20230919080704_add_webhook_config_timestamps.ts +++ b/packages/server/modules/webhooks/migrations/20230919080704_add_webhook_config_timestamps.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'webhooks_config' diff --git a/packages/server/modules/webhooks/repositories/cleanup.ts b/packages/server/modules/webhooks/repositories/cleanup.ts index e8f19bfcc..b25dbaa79 100644 --- a/packages/server/modules/webhooks/repositories/cleanup.ts +++ b/packages/server/modules/webhooks/repositories/cleanup.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export const cleanOrphanedWebhookConfigsFactory = ({ db }: { db: Knex }) => diff --git a/packages/server/modules/webhooks/repositories/webhooks.ts b/packages/server/modules/webhooks/repositories/webhooks.ts index da03f7986..f07a0240b 100644 --- a/packages/server/modules/webhooks/repositories/webhooks.ts +++ b/packages/server/modules/webhooks/repositories/webhooks.ts @@ -1,6 +1,6 @@ -import { Knex } from 'knex' -import { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' -import { +import type { Knex } from 'knex' +import type { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' +import type { CountWebhooksByStreamId, CreateWebhookConfig, CreateWebhookEvent, diff --git a/packages/server/modules/webhooks/services/webhooks.ts b/packages/server/modules/webhooks/services/webhooks.ts index b9dd30552..171784ab8 100644 --- a/packages/server/modules/webhooks/services/webhooks.ts +++ b/packages/server/modules/webhooks/services/webhooks.ts @@ -1,5 +1,5 @@ import { ForbiddenError } from '@/modules/shared/errors' -import { +import type { CountWebhooksByStreamId, CreateWebhookConfig, CreateWebhookEvent, @@ -8,15 +8,15 @@ import { GetWebhookById, UpdateWebhookConfig } from '@/modules/webhooks/domain/operations' -import { Webhook } from '@/modules/webhooks/domain/types' -import { SetValuesNullable } from '@speckle/shared' +import type { Webhook } from '@/modules/webhooks/domain/types' +import type { SetValuesNullable } from '@speckle/shared' import crs from 'crypto-random-string' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' -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' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { ServerInfo } from '@/modules/core/helpers/types' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { UserWithOptionalRole } from '@/modules/core/domain/users/types' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' import { getServerOrigin } from '@/modules/shared/helpers/envHelper' import { WebhookCreationError } from '@/modules/webhooks/errors/webhooks' diff --git a/packages/server/modules/workspaces/clients/oidcProvider.ts b/packages/server/modules/workspaces/clients/oidcProvider.ts index 33cc6a332..85d612eb3 100644 --- a/packages/server/modules/workspaces/clients/oidcProvider.ts +++ b/packages/server/modules/workspaces/clients/oidcProvider.ts @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ import { BaseError } from '@/modules/shared/errors' -import { +import type { OidcProvider, OidcProviderAttributes } from '@/modules/workspaces/domain/sso/types' diff --git a/packages/server/modules/workspaces/domain/logic.ts b/packages/server/modules/workspaces/domain/logic.ts index 2193f7a51..435ba0725 100644 --- a/packages/server/modules/workspaces/domain/logic.ts +++ b/packages/server/modules/workspaces/domain/logic.ts @@ -1,11 +1,12 @@ -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { WorkspaceDomainsInvalidState } from '@/modules/workspaces/errors/workspace' -import { +import type { LimitedWorkspace, Workspace, WorkspaceDomain } from '@/modules/workspacesCore/domain/types' -import { Roles, WorkspaceRoles } from '@speckle/shared' +import type { WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' export const userEmailsCompliantWithWorkspaceDomains = ({ userEmails, diff --git a/packages/server/modules/workspaces/domain/operations.ts b/packages/server/modules/workspaces/domain/operations.ts index 5e58b6965..7b1aadf3f 100644 --- a/packages/server/modules/workspaces/domain/operations.ts +++ b/packages/server/modules/workspaces/domain/operations.ts @@ -1,5 +1,5 @@ -import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { +import type { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' +import type { LimitedWorkspace, Workspace, WorkspaceAcl, @@ -10,8 +10,8 @@ import { WorkspaceWithDomains, WorkspaceWithOptionalRole } from '@/modules/workspacesCore/domain/types' -import { EventBusPayloads } from '@/modules/shared/services/eventBus' -import { +import type { EventBusPayloads } from '@/modules/shared/services/eventBus' +import type { MaybeNullOrUndefined, Nullable, NullableKeysToOptional, @@ -20,14 +20,17 @@ import { StreamRoles, WorkspaceRoles } from '@speckle/shared' -import { WorkspaceCreationState } from '@/modules/workspaces/domain/types' -import { WorkspaceTeam } from '@/modules/workspaces/domain/types' -import { Stream } from '@/modules/core/domain/streams/types' -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { ServerRegion } from '@/modules/multiregion/domain/types' -import { SetOptional } from 'type-fest' -import { WorkspaceSeat, WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' -import { UserRecord } from '@/modules/core/helpers/userHelper' +import type { WorkspaceCreationState } from '@/modules/workspaces/domain/types' +import type { WorkspaceTeam } from '@/modules/workspaces/domain/types' +import type { Stream } from '@/modules/core/domain/streams/types' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { ServerRegion } from '@/modules/multiregion/domain/types' +import type { SetOptional } from 'type-fest' +import type { + WorkspaceSeat, + WorkspaceSeatType +} from '@/modules/gatekeeper/domain/billing' +import type { UserRecord } from '@/modules/core/helpers/userHelper' /** Workspace */ diff --git a/packages/server/modules/workspaces/domain/sso/logic.ts b/packages/server/modules/workspaces/domain/sso/logic.ts index 6e8b542d4..6e33cc400 100644 --- a/packages/server/modules/workspaces/domain/sso/logic.ts +++ b/packages/server/modules/workspaces/domain/sso/logic.ts @@ -1,9 +1,9 @@ -import { +import type { OidcProfile, SpeckleOidcProfile, UserSsoSessionRecord } from '@/modules/workspaces/domain/sso/types' -import { UnknownObject, UserinfoResponse } from 'openid-client' +import type { UnknownObject, UserinfoResponse } from 'openid-client' /** * Get the default expiration time for an SSO session based on the current time. diff --git a/packages/server/modules/workspaces/domain/sso/operations.ts b/packages/server/modules/workspaces/domain/sso/operations.ts index 79f90c532..d5f2a565a 100644 --- a/packages/server/modules/workspaces/domain/sso/operations.ts +++ b/packages/server/modules/workspaces/domain/sso/operations.ts @@ -7,7 +7,7 @@ import type { OidcProviderValidationRequest, WorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/types' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' // Workspace SSO provider management diff --git a/packages/server/modules/workspaces/domain/sso/types.ts b/packages/server/modules/workspaces/domain/sso/types.ts index 6b4c81f5b..31b425fef 100644 --- a/packages/server/modules/workspaces/domain/sso/types.ts +++ b/packages/server/modules/workspaces/domain/sso/types.ts @@ -1,4 +1,4 @@ -import { oidcProvider } from '@/modules/workspaces/domain/sso/models' +import type { oidcProvider } from '@/modules/workspaces/domain/sso/models' import type { infer as Infer } from 'zod' type ProviderBaseRecord = { diff --git a/packages/server/modules/workspaces/domain/types.ts b/packages/server/modules/workspaces/domain/types.ts index 9780d0936..8fb46c054 100644 --- a/packages/server/modules/workspaces/domain/types.ts +++ b/packages/server/modules/workspaces/domain/types.ts @@ -1,6 +1,6 @@ export { WorkspaceInviteResourceTarget } from '@/modules/workspacesCore/domain/types' -import { LimitedUserRecord, UserWithRole } from '@/modules/core/helpers/types' -import { WorkspaceRoles } from '@speckle/shared' +import type { LimitedUserRecord, UserWithRole } from '@/modules/core/helpers/types' +import type { WorkspaceRoles } from '@speckle/shared' export type WorkspaceTeamMember = UserWithRole & { email: string | null diff --git a/packages/server/modules/workspaces/errors/sso.ts b/packages/server/modules/workspaces/errors/sso.ts index 636d12151..2cdbd92d0 100644 --- a/packages/server/modules/workspaces/errors/sso.ts +++ b/packages/server/modules/workspaces/errors/sso.ts @@ -1,5 +1,5 @@ -import { UserEmail } from '@/modules/core/domain/userEmails/types' -import { User } from '@/modules/core/domain/users/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { User } from '@/modules/core/domain/users/types' import { BaseError } from '@/modules/shared/errors/base' export { SsoSessionMissingOrExpiredError } from '@/modules/workspacesCore/errors' diff --git a/packages/server/modules/workspaces/events/eventListener.ts b/packages/server/modules/workspaces/events/eventListener.ts index dce37608c..686fd3978 100644 --- a/packages/server/modules/workspaces/events/eventListener.ts +++ b/packages/server/modules/workspaces/events/eventListener.ts @@ -7,7 +7,7 @@ import { revokeStreamPermissionsFactory, upsertProjectRoleFactory } from '@/modules/core/repositories/streams' -import { +import type { CountWorkspaceRoleWithOptionalProjectRole, GetDefaultRegion, GetProjectWorkspace, @@ -20,36 +20,26 @@ import { GetWorkspacesProjectsCounts, ValidateWorkspaceMemberProjectRole } from '@/modules/workspaces/domain/operations' -import { - ServerInvitesEvents, - ServerInvitesEventsPayloads -} from '@/modules/serverinvites/domain/events' +import type { ServerInvitesEventsPayloads } from '@/modules/serverinvites/domain/events' +import { ServerInvitesEvents } from '@/modules/serverinvites/domain/events' import { isProjectResourceTarget, resolveTarget } from '@/modules/serverinvites/helpers/core' -import { logger, moduleLogger } from '@/observability/logging' +import type { logger } from '@/observability/logging' +import { moduleLogger } from '@/observability/logging' import { addOrUpdateWorkspaceRoleFactory } from '@/modules/workspaces/services/management' -import { - EventBusEmit, - EventPayload, - getEventBus -} from '@/modules/shared/services/eventBus' +import type { EventBusEmit, EventPayload } from '@/modules/shared/services/eventBus' +import { getEventBus } from '@/modules/shared/services/eventBus' import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' -import { - isPaidPlan, - MaybeNullOrUndefined, - Roles, - StreamRoles, - throwUncoveredError, - WorkspaceRoles -} from '@speckle/shared' -import { +import type { MaybeNullOrUndefined, StreamRoles, WorkspaceRoles } from '@speckle/shared' +import { isPaidPlan, Roles, throwUncoveredError } from '@speckle/shared' +import type { QueryAllProjects, UpsertProjectRole } from '@/modules/core/domain/projects/operations' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { countWorkspaceRoleWithOptionalProjectRoleFactory, getWorkspaceCollaboratorsFactory, @@ -71,12 +61,12 @@ import { findEmailsByUserIdFactory, findVerifiedEmailsByUserIdFactory } from '@/modules/core/repositories/userEmails' -import { +import type { GetStream, GetStreamsCollaboratorCounts, SetStreamCollaborator } from '@/modules/core/domain/streams/operations' -import { +import type { GetUserSsoSession, GetWorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/operations' @@ -90,21 +80,22 @@ import { WorkspacesNotAuthorizedError } from '@/modules/workspaces/errors/worksp import { publish, WorkspaceSubscriptions } from '@/modules/shared/utils/subscriptions' import { isWorkspaceResourceTarget } from '@/modules/workspaces/services/invites' import { ProjectEvents } from '@/modules/core/domain/projects/events' +import type { MixpanelClient } from '@/modules/shared/utils/mixpanel' import { getBaseTrackingProperties, getClient, mapPlanStatusToMixpanelEvent as mapNonValidPlanStatusToMixpanelEventName, - MixpanelClient, MixpanelEvents, WORKSPACE_TRACKING_ID_KEY } from '@/modules/shared/utils/mixpanel' -import { +import type { GetWorkspacePlan, GetWorkspaceSubscription, GetWorkspaceWithPlan } from '@/modules/gatekeeper/domain/billing' -import { Workspace, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { Workspace } from '@/modules/workspacesCore/domain/types' +import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' import { getDefaultRegionFactory } from '@/modules/workspaces/repositories/regions' import { getWorkspacePlanFactory, @@ -123,7 +114,7 @@ import { getWorkspaceRoleAndSeatFactory, getWorkspaceUserSeatFactory } from '@/modules/gatekeeper/repositories/workspaceSeat' -import { +import type { DeleteWorkspaceSeat, GetWorkspaceUserSeat } from '@/modules/gatekeeper/domain/operations' @@ -142,7 +133,7 @@ import { buildWorkspaceTrackingPropertiesFactory } from '@/modules/workspaces/se import { assign } from 'lodash-es' import { WorkspacePlanStatuses } from '@/modules/core/graph/generated/graphql' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { WorkspacePlans } from '@/modules/core/graph/generated/graphql' import { queryAllProjectsFactory } from '@/modules/core/services/projects' diff --git a/packages/server/modules/workspaces/graph/dataloaders/workspaces.ts b/packages/server/modules/workspaces/graph/dataloaders/workspaces.ts index dc9bc3652..ef8d4b89e 100644 --- a/packages/server/modules/workspaces/graph/dataloaders/workspaces.ts +++ b/packages/server/modules/workspaces/graph/dataloaders/workspaces.ts @@ -6,7 +6,7 @@ import { getWorkspacesProjectsCountsFactory, getWorkspacesRolesForUsersFactory } from '@/modules/workspaces/repositories/workspaces' -import { +import type { WorkspaceAcl, WorkspaceDomain, WorkspaceWithOptionalRole diff --git a/packages/server/modules/workspaces/graph/directives/hasWorkspaceRole.ts b/packages/server/modules/workspaces/graph/directives/hasWorkspaceRole.ts index cd721cbf6..00b9619b6 100644 --- a/packages/server/modules/workspaces/graph/directives/hasWorkspaceRole.ts +++ b/packages/server/modules/workspaces/graph/directives/hasWorkspaceRole.ts @@ -1,4 +1,4 @@ -import { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' +import type { GraphqlDirectiveBuilder } from '@/modules/core/graph/helpers/directiveHelper' import { authorizeResolver } from '@/modules/shared' import { ForbiddenError } from '@/modules/shared/errors' import { mapGqlWorkspaceRoleToMainRole } from '@/modules/workspaces/helpers/roles' diff --git a/packages/server/modules/workspaces/graph/mocks/workspaces.ts b/packages/server/modules/workspaces/graph/mocks/workspaces.ts index 3607622be..9c1373cff 100644 --- a/packages/server/modules/workspaces/graph/mocks/workspaces.ts +++ b/packages/server/modules/workspaces/graph/mocks/workspaces.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-return */ -import { listMock, SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import type { SpeckleModuleMocksConfig } from '@/modules/shared/helpers/mocks' +import { listMock } from '@/modules/shared/helpers/mocks' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { faker } from '@faker-js/faker' import { Roles } from '@speckle/shared' diff --git a/packages/server/modules/workspaces/graph/resolvers/permissions.ts b/packages/server/modules/workspaces/graph/resolvers/permissions.ts index f5ba990f5..f0757cc37 100644 --- a/packages/server/modules/workspaces/graph/resolvers/permissions.ts +++ b/packages/server/modules/workspaces/graph/resolvers/permissions.ts @@ -1,4 +1,4 @@ -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { Authz, WorkspacePlanFeatures } from '@speckle/shared' export default { diff --git a/packages/server/modules/workspaces/graph/resolvers/projects.ts b/packages/server/modules/workspaces/graph/resolvers/projects.ts index 8eb3f9768..b6a23a64a 100644 --- a/packages/server/modules/workspaces/graph/resolvers/projects.ts +++ b/packages/server/modules/workspaces/graph/resolvers/projects.ts @@ -1,9 +1,9 @@ import { db } from '@/db/knex' import { StreamNotFoundError } from '@/modules/core/errors/stream' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { getPaginatedItemsFactory } from '@/modules/shared/services/paginatedItems' -import { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' +import type { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' import { intersectProjectCollaboratorsAndWorkspaceCollaboratorsFactory } from '@/modules/workspaces/repositories/projects' import { diff --git a/packages/server/modules/workspaces/graph/resolvers/regions.ts b/packages/server/modules/workspaces/graph/resolvers/regions.ts index b66cb3bbc..c84ccb26b 100644 --- a/packages/server/modules/workspaces/graph/resolvers/regions.ts +++ b/packages/server/modules/workspaces/graph/resolvers/regions.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing' import { canWorkspaceUseRegionsFactory } from '@/modules/gatekeeper/services/featureAuthorization' import { getDb } from '@/modules/multiregion/utils/dbSelector' diff --git a/packages/server/modules/workspaces/graph/resolvers/workspaceJoinRequests.ts b/packages/server/modules/workspaces/graph/resolvers/workspaceJoinRequests.ts index 270376eeb..bfe063dd8 100644 --- a/packages/server/modules/workspaces/graph/resolvers/workspaceJoinRequests.ts +++ b/packages/server/modules/workspaces/graph/resolvers/workspaceJoinRequests.ts @@ -1,5 +1,5 @@ import { db } from '@/db/knex' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { findEmailsByUserIdFactory, @@ -16,7 +16,7 @@ import { commandFactory } from '@/modules/shared/command' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { getEventBus } from '@/modules/shared/services/eventBus' import { getPaginatedItemsFactory } from '@/modules/shared/services/paginatedItems' -import { +import type { ApproveWorkspaceJoinRequest, DenyWorkspaceJoinRequest } from '@/modules/workspaces/domain/operations' @@ -47,8 +47,8 @@ import { ensureValidWorkspaceRoleSeatFactory, getWorkspaceDefaultSeatTypeFactory } from '@/modules/workspaces/services/workspaceSeat' -import { WorkspaceJoinRequestStatus } from '@/modules/workspacesCore/domain/types' -import { WorkspaceJoinRequestGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' +import type { WorkspaceJoinRequestStatus } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceJoinRequestGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' import { withOperationLogging } from '@/observability/domain/businessLogging' const eventBus = getEventBus() diff --git a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts index a2134c582..4300baac1 100644 --- a/packages/server/modules/workspaces/graph/resolvers/workspaces.ts +++ b/packages/server/modules/workspaces/graph/resolvers/workspaces.ts @@ -1,8 +1,6 @@ import { db } from '@/db/knex' -import { - Resolvers, - TokenResourceIdentifierType -} from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { removePrivateFields } from '@/modules/core/helpers/userHelper' import { updateProjectFactory, @@ -113,11 +111,11 @@ import { getDiscoverableWorkspacesForUserFactory, getWorkspacesForUserFactory } from '@/modules/workspaces/services/retrieval' +import type { WorkspaceRoles } from '@speckle/shared' import { Roles, WorkspacePlanFeatures, WorkspacePlans, - WorkspaceRoles, removeNullOrUndefinedKeys, throwUncoveredError } from '@speckle/shared' @@ -181,7 +179,7 @@ import { getWorkspaceWithPlanFactory, upsertWorkspacePlanFactory } from '@/modules/gatekeeper/repositories/billing' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { getPaginatedItemsFactory } from '@/modules/shared/services/paginatedItems' import { BadRequestError, UnauthorizedError } from '@/modules/shared/errors' import { diff --git a/packages/server/modules/workspaces/helpers/roles.ts b/packages/server/modules/workspaces/helpers/roles.ts index 7e8d5843c..cec6c9fe3 100644 --- a/packages/server/modules/workspaces/helpers/roles.ts +++ b/packages/server/modules/workspaces/helpers/roles.ts @@ -1,5 +1,6 @@ -import { Roles, WorkspaceRoles } from '@speckle/shared' -import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' +import type { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' import { WorkspaceRole } from '@/modules/core/graph/generated/graphql' export const isUserLastWorkspaceAdmin = ( diff --git a/packages/server/modules/workspaces/helpers/sso.ts b/packages/server/modules/workspaces/helpers/sso.ts index 7e2c99bb2..2a92399ae 100644 --- a/packages/server/modules/workspaces/helpers/sso.ts +++ b/packages/server/modules/workspaces/helpers/sso.ts @@ -2,14 +2,14 @@ import { getEncryptionKeyPair } from '@/modules/automate/services/encryption' import { base64Decode } from '@/modules/shared/helpers/cryptoHelper' import { getFrontendOrigin, getServerOrigin } from '@/modules/shared/helpers/envHelper' import { buildDecryptor, buildEncryptor } from '@/modules/shared/utils/libsodium' -import { SsoSessionState } from '@/modules/workspaces/domain/sso/types' +import type { SsoSessionState } from '@/modules/workspaces/domain/sso/types' import { OidcStateInvalidError, OidcStateMissingError, SsoVerificationCodeMissingError } from '@/modules/workspaces/errors/sso' -import { OidcProvider } from '@/modules/workspaces/domain/sso/types' -import { Request } from 'express' +import type { OidcProvider } from '@/modules/workspaces/domain/sso/types' +import type { Request } from 'express' import { omit } from 'lodash-es' declare module 'express-session' { diff --git a/packages/server/modules/workspaces/index.ts b/packages/server/modules/workspaces/index.ts index b22d178bd..fd30c7392 100644 --- a/packages/server/modules/workspaces/index.ts +++ b/packages/server/modules/workspaces/index.ts @@ -1,9 +1,9 @@ -import cron from 'node-cron' +import type cron from 'node-cron' import { moduleLogger } from '@/observability/logging' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { registerOrUpdateScopeFactory } from '@/modules/shared/repositories/scopes' import db from '@/db/knex' -import { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { Optional, SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { workspaceRoles } from '@/modules/workspaces/roles' import { workspaceScopes } from '@/modules/workspaces/scopes' import { registerOrUpdateRole } from '@/modules/shared/repositories/roles' @@ -11,7 +11,7 @@ import { initializeEventListenersFactory } from '@/modules/workspaces/events/eve import { validateModuleLicense } from '@/modules/gatekeeper/services/validateLicense' import { getSsoRouter } from '@/modules/workspaces/rest/sso' import { InvalidLicenseError } from '@/modules/gatekeeper/errors/license' -import { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' +import type { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' import { scheduleExecutionFactory } from '@/modules/core/services/taskScheduler' import { acquireTaskLockFactory, diff --git a/packages/server/modules/workspaces/repositories/projectRegions.ts b/packages/server/modules/workspaces/repositories/projectRegions.ts index 6a3b73af6..5305896a0 100644 --- a/packages/server/modules/workspaces/repositories/projectRegions.ts +++ b/packages/server/modules/workspaces/repositories/projectRegions.ts @@ -20,10 +20,10 @@ import { Streams, StreamsMeta } from '@/modules/core/dbSchema' -import { Branch } from '@/modules/core/domain/branches/types' -import { Commit } from '@/modules/core/domain/commits/types' -import { Stream } from '@/modules/core/domain/streams/types' -import { +import type { Branch } from '@/modules/core/domain/branches/types' +import type { Commit } from '@/modules/core/domain/commits/types' +import type { Stream } from '@/modules/core/domain/streams/types' +import type { BranchCommitRecord, ObjectRecord, CommitRecord, @@ -32,7 +32,7 @@ import { StreamRecord } from '@/modules/core/helpers/types' import { executeBatchedSelect } from '@/modules/shared/helpers/dbHelper' -import { +import type { CopyProjectAutomations, CopyProjectBlobs, CopyProjectComments, @@ -50,11 +50,11 @@ import { CountProjectWebhooks } from '@/modules/workspaces/domain/operations' import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' -import { Knex } from 'knex' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Knex } from 'knex' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { Workspaces } from '@/modules/workspacesCore/helpers/db' -import { ObjectPreview } from '@/modules/previews/domain/types' -import { +import type { ObjectPreview } from '@/modules/previews/domain/types' +import type { AutomationFunctionRunRecord, AutomationRecord, AutomationRevisionFunctionRecord, @@ -64,17 +64,17 @@ import { AutomationTokenRecord, AutomationTriggerDefinitionRecord } from '@/modules/automate/helpers/types' -import { +import type { CommentLinkRecord, CommentRecord, CommentViewRecord } from '@/modules/comments/helpers/types' -import { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' -import { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' +import type { Webhook, WebhookEvent } from '@/modules/webhooks/domain/types' +import type { ObjectStorage } from '@/modules/blobstorage/clients/objectStorage' import { BlobStorage } from '@/modules/blobstorage/repositories' -import { BlobStorageItem } from '@/modules/blobstorage/domain/types' +import type { BlobStorageItem } from '@/modules/blobstorage/domain/types' import { GetObjectCommand, PutObjectCommand } from '@aws-sdk/client-s3' -import { FileUploadRecord } from '@/modules/fileuploads/helpers/types' +import type { FileUploadRecord } from '@/modules/fileuploads/helpers/types' import { getObjectKey } from '@/modules/blobstorage/helpers/blobs' const tables = { diff --git a/packages/server/modules/workspaces/repositories/projects.ts b/packages/server/modules/workspaces/repositories/projects.ts index 127afca06..c5dd9319f 100644 --- a/packages/server/modules/workspaces/repositories/projects.ts +++ b/packages/server/modules/workspaces/repositories/projects.ts @@ -1,13 +1,13 @@ import { StreamAcl, Streams, Users } from '@/modules/core/dbSchema' -import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' -import { UserRecord } from '@/modules/core/helpers/userHelper' -import { +import type { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/userHelper' +import type { GetProjectWorkspace, IntersectProjectCollaboratorsAndWorkspaceCollaborators } from '@/modules/workspaces/domain/operations' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { WorkspaceAcl, Workspaces } from '@/modules/workspacesCore/helpers/db' -import { Knex } from 'knex' +import type { Knex } from 'knex' const tables = { streamAcl: (db: Knex) => db.table(StreamAcl.name), diff --git a/packages/server/modules/workspaces/repositories/regions.ts b/packages/server/modules/workspaces/repositories/regions.ts index dc9563829..0b86065dc 100644 --- a/packages/server/modules/workspaces/repositories/regions.ts +++ b/packages/server/modules/workspaces/repositories/regions.ts @@ -1,12 +1,12 @@ import { buildTableHelper } from '@/modules/core/dbSchema' -import { RegionRecord } from '@/modules/multiregion/helpers/types' +import type { RegionRecord } from '@/modules/multiregion/helpers/types' import { Regions } from '@/modules/multiregion/repositories' -import { +import type { GetDefaultRegion, UpsertRegionAssignment } from '@/modules/workspaces/domain/operations' -import { WorkspaceRegionAssignment } from '@/modules/workspacesCore/domain/types' -import { Knex } from 'knex' +import type { WorkspaceRegionAssignment } from '@/modules/workspacesCore/domain/types' +import type { Knex } from 'knex' export const WorkspaceRegions = buildTableHelper('workspace_regions', [ 'workspaceId', diff --git a/packages/server/modules/workspaces/repositories/sso.ts b/packages/server/modules/workspaces/repositories/sso.ts index fa7ba052d..ff09614ed 100644 --- a/packages/server/modules/workspaces/repositories/sso.ts +++ b/packages/server/modules/workspaces/repositories/sso.ts @@ -1,5 +1,5 @@ import { oidcProvider } from '@/modules/workspaces/domain/sso/models' -import { +import type { AssociateSsoProviderWithWorkspace, GetOidcProviderData, GetWorkspaceSsoProvider, @@ -12,15 +12,15 @@ import { GetUserSsoSession, DeleteSsoProvider } from '@/modules/workspaces/domain/sso/operations' -import { +import type { SsoProviderRecord, UserSsoSessionRecord, WorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/types' import { SsoProviderTypeNotSupportedError } from '@/modules/workspaces/errors/sso' -import { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' -import Redis from 'ioredis' -import { Knex } from 'knex' +import type { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type Redis from 'ioredis' +import type { Knex } from 'knex' import { omit } from 'lodash-es' type Crypt = (input: string) => Promise diff --git a/packages/server/modules/workspaces/repositories/users.ts b/packages/server/modules/workspaces/repositories/users.ts index 3daa20972..cd950dcc6 100644 --- a/packages/server/modules/workspaces/repositories/users.ts +++ b/packages/server/modules/workspaces/repositories/users.ts @@ -5,18 +5,18 @@ import { UserEmails, Users } from '@/modules/core/dbSchema' -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { metaHelpers } from '@/modules/core/helpers/meta' -import { StreamAclRecord, UserRecord } from '@/modules/core/helpers/types' +import type { StreamAclRecord, UserRecord } from '@/modules/core/helpers/types' import { removePrivateFields } from '@/modules/core/helpers/userHelper' import { formatJsonArrayRecords } from '@/modules/shared/helpers/dbHelper' import { compositeCursorTools } from '@/modules/shared/helpers/dbHelper' -import { SetUserActiveWorkspace } from '@/modules/workspaces/domain/operations' -import { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' -import { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' +import type { SetUserActiveWorkspace } from '@/modules/workspaces/domain/operations' +import type { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' +import type { WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' import { WorkspaceAcl } from '@/modules/workspacesCore/helpers/db' -import { ServerRoles } from '@speckle/shared' -import { Knex } from 'knex' +import type { ServerRoles } from '@speckle/shared' +import type { Knex } from 'knex' const tables = { users: (db: Knex) => db(Users.name), diff --git a/packages/server/modules/workspaces/repositories/workspaceJoinRequests.ts b/packages/server/modules/workspaces/repositories/workspaceJoinRequests.ts index d81d454ef..e9fc53afb 100644 --- a/packages/server/modules/workspaces/repositories/workspaceJoinRequests.ts +++ b/packages/server/modules/workspaces/repositories/workspaceJoinRequests.ts @@ -1,11 +1,11 @@ import { UserEmails } from '@/modules/core/dbSchema' import { compositeCursorTools } from '@/modules/shared/helpers/dbHelper' -import { +import type { CreateWorkspaceJoinRequest, GetWorkspaceJoinRequest, UpdateWorkspaceJoinRequestStatus } from '@/modules/workspaces/domain/operations' -import { +import type { WorkspaceJoinRequest, WorkspaceJoinRequestStatus } from '@/modules/workspacesCore/domain/types' @@ -14,8 +14,8 @@ import { WorkspaceJoinRequests } from '@/modules/workspacesCore/helpers/db' import { Roles } from '@speckle/shared' -import { Knex } from 'knex' -import { SetRequired } from 'type-fest' +import type { Knex } from 'knex' +import type { SetRequired } from 'type-fest' const tables = { workspaceJoinRequests: (db: Knex) => diff --git a/packages/server/modules/workspaces/repositories/workspaces.ts b/packages/server/modules/workspaces/repositories/workspaces.ts index ec81d0597..50f52f83b 100644 --- a/packages/server/modules/workspaces/repositories/workspaces.ts +++ b/packages/server/modules/workspaces/repositories/workspaces.ts @@ -1,4 +1,4 @@ -import { +import type { LimitedWorkspace, Workspace, WorkspaceAcl, @@ -6,7 +6,7 @@ import { WorkspaceJoinRequest, WorkspaceWithOptionalRole } from '@/modules/workspacesCore/domain/types' -import { +import type { CountDomainsByWorkspaceId, CountWorkspaceRoleWithOptionalProjectRole, CountWorkspaces, @@ -45,15 +45,15 @@ import { UpsertWorkspaceCreationState, UpsertWorkspaceRole } from '@/modules/workspaces/domain/operations' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { isNullOrUndefined, Roles } from '@speckle/shared' -import { +import type { ServerAclRecord, BranchRecord, StreamAclRecord, - StreamRecord, - ProjectRecordVisibility + StreamRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { WorkspaceInvalidRoleError } from '@/modules/workspaces/errors/workspace' import { WorkspaceAcl as DbWorkspaceAcl, @@ -71,10 +71,11 @@ import { UserEmails, Users } from '@/modules/core/dbSchema' -import { removePrivateFields, UserRecord } from '@/modules/core/helpers/userHelper' +import type { UserRecord } from '@/modules/core/helpers/userHelper' +import { removePrivateFields } from '@/modules/core/helpers/userHelper' import { clamp, has, isObjectLike } from 'lodash-es' -import { +import type { WorkspaceCreationState, WorkspaceTeamMember } from '@/modules/workspaces/domain/types' diff --git a/packages/server/modules/workspaces/rest/sso.ts b/packages/server/modules/workspaces/rest/sso.ts index a25cb39a0..a7b8dfef5 100644 --- a/packages/server/modules/workspaces/rest/sso.ts +++ b/packages/server/modules/workspaces/rest/sso.ts @@ -2,7 +2,8 @@ import { db } from '@/db/knex' import { validateRequest } from 'zod-express' -import { Request, RequestHandler, Router } from 'express' +import type { Request, RequestHandler } from 'express' +import { Router } from 'express' import { z } from 'zod' import { createWorkspaceUserFromSsoProfileFactory, @@ -25,9 +26,10 @@ import { getWorkspaceSsoProviderFactory } from '@/modules/workspaces/repositories/sso' import { getGenericRedis } from '@/modules/shared/redis/redis' -import { generators, UserinfoResponse } from 'openid-client' +import type { UserinfoResponse } from 'openid-client' +import { generators } from 'openid-client' import { oidcProvider } from '@/modules/workspaces/domain/sso/models' -import { +import type { OidcProfile, OidcProvider, SsoSessionState, @@ -56,13 +58,13 @@ import { updateUserEmailFactory } from '@/modules/core/repositories/userEmails' import { withTransaction } from '@/modules/shared/helpers/dbHelper' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' import { countAdminUsersFactory, getUserFactory, legacyGetUserFactory, storeUserAclFactory, - storeUserFactory, - UserWithOptionalRole + storeUserFactory } from '@/modules/core/repositories/users' import { finalizeAuthMiddlewareFactory, @@ -89,16 +91,16 @@ import { isValidOidcProfile, getEmailFromOidcProfile } from '@/modules/workspaces/domain/sso/logic' -import { +import type { GetWorkspaceBySlug, GetWorkspaceRoles } from '@/modules/workspaces/domain/operations' -import { +import type { GetWorkspaceSsoProvider, UpsertUserSsoSession } from '@/modules/workspaces/domain/sso/operations' -import { GetUser } from '@/modules/core/domain/users/operations' -import { +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { FindEmail, FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' diff --git a/packages/server/modules/workspaces/roles.ts b/packages/server/modules/workspaces/roles.ts index 64f8f35e3..72a9c4061 100644 --- a/packages/server/modules/workspaces/roles.ts +++ b/packages/server/modules/workspaces/roles.ts @@ -1,4 +1,4 @@ -import { UserWorkspaceRole } from '@/modules/shared/domain/rolesAndScopes/types' +import type { UserWorkspaceRole } from '@/modules/shared/domain/rolesAndScopes/types' import { Roles, RoleInfo } from '@speckle/shared' import { pick } from 'lodash-es' diff --git a/packages/server/modules/workspaces/scopes.ts b/packages/server/modules/workspaces/scopes.ts index 41cf0db51..81b358a64 100644 --- a/packages/server/modules/workspaces/scopes.ts +++ b/packages/server/modules/workspaces/scopes.ts @@ -1,4 +1,4 @@ -import { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' +import type { TokenScopeData } from '@/modules/shared/domain/rolesAndScopes/types' import { Scopes } from '@speckle/shared' export const workspaceScopes: TokenScopeData[] = [ diff --git a/packages/server/modules/workspaces/services/domains.ts b/packages/server/modules/workspaces/services/domains.ts index e7e0046df..9530c98b2 100644 --- a/packages/server/modules/workspaces/services/domains.ts +++ b/packages/server/modules/workspaces/services/domains.ts @@ -1,6 +1,6 @@ -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' import { userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic' -import { +import type { DeleteWorkspaceDomain, CountDomainsByWorkspaceId, UpdateWorkspace, diff --git a/packages/server/modules/workspaces/services/invites.ts b/packages/server/modules/workspaces/services/invites.ts index 8baf0f614..5016dabe9 100644 --- a/packages/server/modules/workspaces/services/invites.ts +++ b/packages/server/modules/workspaces/services/invites.ts @@ -1,24 +1,24 @@ -import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' -import { +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import type { PendingWorkspaceCollaboratorsFilter, - TokenResourceIdentifierType, WorkspaceInviteCreateInput } from '@/modules/core/graph/generated/graphql' +import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { mapServerRoleToValue } from '@/modules/core/helpers/graphTypes' import { getWorkspaceRoute } from '@/modules/core/helpers/routeHelper' import { isResourceAllowed } from '@/modules/core/helpers/token' -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/types' import { removePrivateFields } from '@/modules/core/helpers/userHelper' import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { +import type { FindInvite, QueryAllResourceInvites, QueryAllUserResourceInvites } from '@/modules/serverinvites/domain/operations' -import { +import type { ExtendedInvite, InviteResourceTarget, PrimaryInviteResourceTarget, @@ -36,46 +36,43 @@ import { resolveInviteTargetTitle, resolveTarget } from '@/modules/serverinvites/helpers/core' -import { - buildCoreInviteEmailContentsFactory, - BuildInviteContentsFactoryDeps -} from '@/modules/serverinvites/services/coreEmailContents' -import { - collectAndValidateCoreTargetsFactory, - CollectAndValidateCoreTargetsFactoryDeps -} from '@/modules/serverinvites/services/coreResourceCollection' -import { +import type { BuildInviteContentsFactoryDeps } from '@/modules/serverinvites/services/coreEmailContents' +import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents' +import type { CollectAndValidateCoreTargetsFactoryDeps } from '@/modules/serverinvites/services/coreResourceCollection' +import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection' +import type { BuildInviteEmailContents, CollectAndValidateResourceTargets, CreateAndSendInvite, GetInvitationTargetUsers, - InviteFinalizationAction, ProcessFinalizedResourceInvite, ValidateResourceInviteBeforeFinalization } from '@/modules/serverinvites/services/operations' +import { InviteFinalizationAction } from '@/modules/serverinvites/services/operations' import { authorizeResolver } from '@/modules/shared' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' -import { +import type { GetWorkspace, GetWorkspaceBySlug, GetWorkspaceDomains, ValidateWorkspaceMemberProjectRole } from '@/modules/workspaces/domain/operations' -import { WorkspaceInviteResourceTarget } from '@/modules/workspaces/domain/types' +import type { WorkspaceInviteResourceTarget } from '@/modules/workspaces/domain/types' import { mapGqlWorkspaceRoleToMainRole } from '@/modules/workspaces/helpers/roles' -import { addOrUpdateWorkspaceRoleFactory } from '@/modules/workspaces/services/management' -import { PendingWorkspaceCollaboratorGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' -import { MaybeNullOrUndefined, Nullable, Roles } from '@speckle/shared' +import type { addOrUpdateWorkspaceRoleFactory } from '@/modules/workspaces/services/management' +import type { PendingWorkspaceCollaboratorGraphQLReturn } from '@/modules/workspacesCore/helpers/graphTypes' +import type { MaybeNullOrUndefined, Nullable } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { WorkspaceProtectedError } from '@/modules/workspaces/errors/workspace' -import { FindVerifiedEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { FindVerifiedEmailsByUserId } from '@/modules/core/domain/userEmails/operations' import { anyEmailCompliantWithWorkspaceDomains, userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic' -import { GetStream } from '@/modules/core/domain/streams/operations' -import { GetUser } from '@/modules/core/domain/users/operations' -import { GetWorkspaceRoleAndSeat } from '@/modules/workspacesCore/domain/operations' +import type { GetStream } from '@/modules/core/domain/streams/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' +import type { GetWorkspaceRoleAndSeat } from '@/modules/workspacesCore/domain/operations' import { LogicError } from '@/modules/shared/errors' import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' diff --git a/packages/server/modules/workspaces/services/management.ts b/packages/server/modules/workspaces/services/management.ts index e1bca988b..1abbcfa9d 100644 --- a/packages/server/modules/workspaces/services/management.ts +++ b/packages/server/modules/workspaces/services/management.ts @@ -1,5 +1,5 @@ import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { +import type { DeleteWorkspace, EmitWorkspaceEvent, GetWorkspace, @@ -14,20 +14,16 @@ import { EnsureValidWorkspaceRoleSeat, AssignWorkspaceSeat } from '@/modules/workspaces/domain/operations' -import { +import type { Workspace, WorkspaceAcl, WorkspaceDomain, WorkspaceWithDomains } from '@/modules/workspacesCore/domain/types' -import { - generateSlugFromName, - MaybeNullOrUndefined, - Roles, - validateWorkspaceSlug -} from '@speckle/shared' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { generateSlugFromName, Roles, validateWorkspaceSlug } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' -import { +import type { DeleteWorkspaceRole, GetWorkspaceRoleForUser, GetWorkspaceRoles @@ -44,32 +40,30 @@ import { WorkspaceInvalidUpdateError } from '@/modules/workspaces/errors/workspace' import { isUserLastWorkspaceAdmin } from '@/modules/workspaces/helpers/roles' -import { EventBus } from '@/modules/shared/services/eventBus' +import type { EventBus } from '@/modules/shared/services/eventBus' import { removeNullOrUndefinedKeys } from '@speckle/shared' import { isNewResourceAllowed } from '@/modules/core/helpers/token' -import { - TokenResourceIdentifier, - TokenResourceIdentifierType -} from '@/modules/core/domain/tokens/types' +import type { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types' +import { TokenResourceIdentifierType } from '@/modules/core/domain/tokens/types' import { ForbiddenError } from '@/modules/shared/errors' import { validateImageString } from '@/modules/workspaces/helpers/images' -import { +import type { FindEmailsByUserId, FindVerifiedEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { DeleteAllResourceInvites } from '@/modules/serverinvites/domain/operations' +import type { DeleteAllResourceInvites } from '@/modules/serverinvites/domain/operations' import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' import { ProjectInviteResourceType } from '@/modules/serverinvites/domain/constants' import { chunk, isEmpty, omit } from 'lodash-es' import { userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic' import { workspaceRoles as workspaceRoleDefinitions } from '@/modules/workspaces/roles' import { blockedDomains } from '@speckle/shared' -import { DeleteStreamRecord } from '@/modules/core/domain/streams/operations' -import { +import type { DeleteStreamRecord } from '@/modules/core/domain/streams/operations' +import type { DeleteSsoProvider, GetWorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/operations' -import { QueryAllProjects } from '@/modules/core/domain/projects/operations' +import type { QueryAllProjects } from '@/modules/core/domain/projects/operations' type WorkspaceCreateArgs = { userId: string diff --git a/packages/server/modules/workspaces/services/projectRegions.ts b/packages/server/modules/workspaces/services/projectRegions.ts index d24220bf5..d34a0f081 100644 --- a/packages/server/modules/workspaces/services/projectRegions.ts +++ b/packages/server/modules/workspaces/services/projectRegions.ts @@ -1,6 +1,6 @@ -import { GetProject } from '@/modules/core/domain/projects/operations' -import { UpdateProjectRegionKey } from '@/modules/multiregion/services/projectRegion' -import { +import type { GetProject } from '@/modules/core/domain/projects/operations' +import type { UpdateProjectRegionKey } from '@/modules/multiregion/services/projectRegion' +import type { CopyProjectAutomations, CopyProjectBlobs, CopyProjectComments, diff --git a/packages/server/modules/workspaces/services/projects.ts b/packages/server/modules/workspaces/services/projects.ts index 94cc021e2..eb444a2f0 100644 --- a/packages/server/modules/workspaces/services/projects.ts +++ b/packages/server/modules/workspaces/services/projects.ts @@ -1,5 +1,6 @@ -import { ProjectRecordVisibility, StreamRecord } from '@/modules/core/helpers/types' -import { +import type { StreamRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { GetDefaultRegion, GetWorkspaceDomains, GetWorkspaceRoleToDefaultProjectRoleMapping, @@ -14,15 +15,19 @@ import { WorkspaceInvalidRoleError, WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' -import { GetProject, UpdateProject } from '@/modules/core/domain/projects/operations' +import type { + GetProject, + UpdateProject +} from '@/modules/core/domain/projects/operations' import { chunk } from 'lodash-es' -import { Roles, WorkspaceRoles } from '@speckle/shared' -import { +import type { WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' +import type { GetStreamCollaborators, UpdateStreamRole } from '@/modules/core/domain/streams/operations' import { ProjectNotFoundError } from '@/modules/core/errors/projects' -import { WorkspaceProjectCreateInput } from '@/modules/core/graph/generated/graphql' +import type { WorkspaceProjectCreateInput } from '@/modules/core/graph/generated/graphql' import { getDb, getValidDefaultProjectRegionKey @@ -44,16 +49,16 @@ import { getWorkspaceFactory, upsertWorkspaceFactory } from '@/modules/workspaces/repositories/workspaces' -import { +import type { GetWorkspaceRoleAndSeat, GetWorkspaceRolesAndSeats, - GetWorkspaceWithPlan, - WorkspaceSeatType + GetWorkspaceWithPlan } from '@/modules/gatekeeper/domain/billing' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' import { userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic' -import { CreateWorkspaceSeat } from '@/modules/gatekeeper/domain/operations' -import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type { CreateWorkspaceSeat } from '@/modules/gatekeeper/domain/operations' +import type { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' type MoveProjectToWorkspaceArgs = { projectId: string diff --git a/packages/server/modules/workspaces/services/regions.ts b/packages/server/modules/workspaces/services/regions.ts index 88623c067..d0b42a588 100644 --- a/packages/server/modules/workspaces/services/regions.ts +++ b/packages/server/modules/workspaces/services/regions.ts @@ -1,6 +1,6 @@ -import { WorkspaceFeatureAccessFunction } from '@/modules/gatekeeper/domain/operations' -import { GetRegions } from '@/modules/multiregion/domain/operations' -import { +import type { WorkspaceFeatureAccessFunction } from '@/modules/gatekeeper/domain/operations' +import type { GetRegions } from '@/modules/multiregion/domain/operations' +import type { AssignWorkspaceRegion, GetAvailableRegions, GetDefaultRegion, diff --git a/packages/server/modules/workspaces/services/retrieval.ts b/packages/server/modules/workspaces/services/retrieval.ts index 8dc84fec3..a237aaf3a 100644 --- a/packages/server/modules/workspaces/services/retrieval.ts +++ b/packages/server/modules/workspaces/services/retrieval.ts @@ -1,12 +1,12 @@ -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { UserEmail } from '@/modules/core/domain/userEmails/types' -import { +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { GetUserDiscoverableWorkspaces, GetUsersCurrentAndEligibleToBecomeAMemberWorkspaces, GetWorkspaceRolesForUser, GetWorkspaces } from '@/modules/workspaces/domain/operations' -import { LimitedWorkspace, Workspace } from '@/modules/workspacesCore/domain/types' +import type { LimitedWorkspace, Workspace } from '@/modules/workspacesCore/domain/types' type GetDiscoverableWorkspaceForUserArgs = { userId: string diff --git a/packages/server/modules/workspaces/services/sso.ts b/packages/server/modules/workspaces/services/sso.ts index 5bc2962e3..57ca9ba9a 100644 --- a/packages/server/modules/workspaces/services/sso.ts +++ b/packages/server/modules/workspaces/services/sso.ts @@ -1,4 +1,4 @@ -import { +import type { GetOidcProviderAttributes, StoreOidcProviderValidationRequest, StoreProviderRecord, @@ -7,25 +7,28 @@ import { ListWorkspaceSsoMemberships, ListUserSsoSessions } from '@/modules/workspaces/domain/sso/operations' -import { +import type { OidcProvider, OidcProviderRecord, OidcProviderAttributes, OidcProfile } from '@/modules/workspaces/domain/sso/types' import cryptoRandomString from 'crypto-random-string' -import { UserinfoResponse } from 'openid-client' -import { +import type { UserinfoResponse } from 'openid-client' +import type { CreateUserEmail, FindEmail, FindEmailsByUserId, UpdateUserEmail } from '@/modules/core/domain/userEmails/operations' import { isWorkspaceRole, toLimitedWorkspace } from '@/modules/workspaces/domain/logic' -import { UserWithOptionalRole } from '@/modules/core/repositories/users' -import { DeleteInvite, FindInvite } from '@/modules/serverinvites/domain/operations' -import { AddOrUpdateWorkspaceRole } from '@/modules/workspaces/domain/operations' -import { CreateValidatedUser } from '@/modules/core/domain/users/operations' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import type { + DeleteInvite, + FindInvite +} from '@/modules/serverinvites/domain/operations' +import type { AddOrUpdateWorkspaceRole } from '@/modules/workspaces/domain/operations' +import type { CreateValidatedUser } from '@/modules/core/domain/users/operations' import { OidcProviderMissingGrantTypeError, SsoProviderExistsError, @@ -33,7 +36,7 @@ import { SsoUserInviteRequiredError } from '@/modules/workspaces/errors/sso' import { WorkspaceInvalidRoleError } from '@/modules/workspaces/errors/workspace' -import { LimitedWorkspace } from '@/modules/workspacesCore/domain/types' +import type { LimitedWorkspace } from '@/modules/workspacesCore/domain/types' import { getEmailFromOidcProfile, isValidSsoSession diff --git a/packages/server/modules/workspaces/services/tracking.ts b/packages/server/modules/workspaces/services/tracking.ts index b7c884bdb..13a1eb30a 100644 --- a/packages/server/modules/workspaces/services/tracking.ts +++ b/packages/server/modules/workspaces/services/tracking.ts @@ -1,15 +1,15 @@ -import { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' -import { - calculateSubscriptionSeats, +import type { ScheduleExecution } from '@/modules/core/domain/scheduledTasks/operations' +import type { GetWorkspacePlan, GetWorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' +import { calculateSubscriptionSeats } from '@/modules/gatekeeper/domain/billing' +import type { MixpanelClient } from '@/modules/shared/utils/mixpanel' import { getBaseTrackingProperties, - MixpanelClient, WORKSPACE_TRACKING_ID_KEY } from '@/modules/shared/utils/mixpanel' -import { +import type { CountWorkspaceRoleWithOptionalProjectRole, GetDefaultRegion, GetWorkspaceModelCount, @@ -17,9 +17,10 @@ import { GetWorkspaceSeatCount, GetAllWorkspaces } from '@/modules/workspaces/domain/operations' -import { Workspace } from '@/modules/workspacesCore/domain/types' -import { Logger } from '@/observability/logging' -import { Nullable, Roles, SeatTypes } from '@speckle/shared' +import type { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Logger } from '@/observability/logging' +import type { Nullable } from '@speckle/shared' +import { Roles, SeatTypes } from '@speckle/shared' import { countWorkspaceRoleWithOptionalProjectRoleFactory, getAllWorkspacesFactory, diff --git a/packages/server/modules/workspaces/services/workspaceCreationState.ts b/packages/server/modules/workspaces/services/workspaceCreationState.ts index a9d532443..1775a7b7d 100644 --- a/packages/server/modules/workspaces/services/workspaceCreationState.ts +++ b/packages/server/modules/workspaces/services/workspaceCreationState.ts @@ -1,5 +1,5 @@ -import { Logger } from '@/observability/logging' -import { +import type { Logger } from '@/observability/logging' +import type { DeleteWorkspace, GetWorkspacesNonComplete } from '@/modules/workspaces/domain/operations' diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts index 2180cba24..26ff5f757 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts @@ -1,8 +1,8 @@ -import { GetServerInfo } from '@/modules/core/domain/server/operations' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { SendWorkspaceJoinRequestApprovedEmail } from '@/modules/workspaces/domain/operations' +import type { SendWorkspaceJoinRequestApprovedEmail } from '@/modules/workspaces/domain/operations' type WorkspaceJoinRequestApprovedEmailArgs = { workspace: { id: string; name: string; slug: string } diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts index 8868f652e..298de875a 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts @@ -1,8 +1,8 @@ -import { GetServerInfo } from '@/modules/core/domain/server/operations' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { SendWorkspaceJoinRequestApprovedEmail } from '@/modules/workspaces/domain/operations' +import type { SendWorkspaceJoinRequestApprovedEmail } from '@/modules/workspaces/domain/operations' type WorkspaceJoinRequestDeniedEmailArgs = { workspace: { id: string; name: string; slug: string } diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts index 052b1e86e..1aa67fdd4 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts @@ -1,8 +1,8 @@ -import { GetServerInfo } from '@/modules/core/domain/server/operations' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' +import type { GetServerInfo } from '@/modules/core/domain/server/operations' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { RenderEmail, SendEmail } from '@/modules/emails/domain/operations' import { getFrontendOrigin } from '@/modules/shared/helpers/envHelper' -import { +import type { GetWorkspaceCollaborators, SendWorkspaceJoinRequestReceivedEmail } from '@/modules/workspaces/domain/operations' diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequests.ts b/packages/server/modules/workspaces/services/workspaceJoinRequests.ts index df91bd676..fd01e3796 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequests.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequests.ts @@ -4,9 +4,9 @@ import { WorkspaceNotJoinableError, WorkspaceProtectedError } from '@/modules/workspaces/errors/workspace' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import { NotFoundError } from '@/modules/shared/errors' -import { +import type { AddOrUpdateWorkspaceRole, ApproveWorkspaceJoinRequest, CreateWorkspaceJoinRequest, @@ -21,9 +21,9 @@ import { UpdateWorkspaceJoinRequestStatus } from '@/modules/workspaces/domain/operations' import { Roles } from '@speckle/shared' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' import { userEmailsCompliantWithWorkspaceDomains } from '@/modules/workspaces/domain/logic' -import { EventBus } from '@/modules/shared/services/eventBus' +import type { EventBus } from '@/modules/shared/services/eventBus' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' export const dismissWorkspaceJoinRequestFactory = diff --git a/packages/server/modules/workspaces/services/workspaceLimits.ts b/packages/server/modules/workspaces/services/workspaceLimits.ts index 380b3b98f..fc4e1c543 100644 --- a/packages/server/modules/workspaces/services/workspaceLimits.ts +++ b/packages/server/modules/workspaces/services/workspaceLimits.ts @@ -1,6 +1,6 @@ -import { GetPaginatedProjectModelsTotalCount } from '@/modules/core/domain/branches/operations' -import { QueryAllProjects } from '@/modules/core/domain/projects/operations' -import { GetWorkspaceModelCount } from '@/modules/workspaces/domain/operations' +import type { GetPaginatedProjectModelsTotalCount } from '@/modules/core/domain/branches/operations' +import type { QueryAllProjects } from '@/modules/core/domain/projects/operations' +import type { GetWorkspaceModelCount } from '@/modules/workspaces/domain/operations' // TODO: Optimize with single model count query per regional db export const getWorkspaceModelCountFactory = diff --git a/packages/server/modules/workspaces/services/workspaceSeat.ts b/packages/server/modules/workspaces/services/workspaceSeat.ts index 58623ea8e..86747db9d 100644 --- a/packages/server/modules/workspaces/services/workspaceSeat.ts +++ b/packages/server/modules/workspaces/services/workspaceSeat.ts @@ -1,12 +1,12 @@ import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' -import { +import type { CreateWorkspaceSeat, GetWorkspaceDefaultSeatType, GetWorkspaceUserSeat } from '@/modules/gatekeeper/domain/operations' import { NotFoundError } from '@/modules/shared/errors' -import { EventBusEmit } from '@/modules/shared/services/eventBus' -import { +import type { EventBusEmit } from '@/modules/shared/services/eventBus' +import type { AssignWorkspaceSeat, EnsureValidWorkspaceRoleSeat, GetWorkspace, @@ -15,7 +15,8 @@ import { import { InvalidWorkspaceSeatTypeError } from '@/modules/workspaces/errors/workspaceSeat' import { WorkspaceDefaultSeatType } from '@/modules/workspacesCore/domain/constants' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { Roles, WorkspaceRoles } from '@speckle/shared' +import type { WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { z } from 'zod' export const getWorkspaceDefaultSeatTypeFactory = diff --git a/packages/server/modules/workspaces/tests/helpers/creation.ts b/packages/server/modules/workspaces/tests/helpers/creation.ts index d49a3ff34..4db093316 100644 --- a/packages/server/modules/workspaces/tests/helpers/creation.ts +++ b/packages/server/modules/workspaces/tests/helpers/creation.ts @@ -45,18 +45,16 @@ import { validateSlugFactory, generateValidSlugFactory } from '@/modules/workspaces/services/management' -import { BasicTestUser } from '@/test/authHelper' -import { CreateWorkspaceInviteMutationVariables } from '@/modules/core/graph/generated/graphql' +import type { BasicTestUser } from '@/test/authHelper' +import type { CreateWorkspaceInviteMutationVariables } from '@/modules/core/graph/generated/graphql' import cryptoRandomString from 'crypto-random-string' -import { +import type { MaybeNullOrUndefined, - PaidWorkspacePlans, - Roles, WorkspacePlan, WorkspacePlans, - WorkspacePlanStatuses, WorkspaceRoles } from '@speckle/shared' +import { PaidWorkspacePlans, Roles, WorkspacePlanStatuses } from '@speckle/shared' import { getStreamFactory, getStreamRolesFactory, @@ -71,7 +69,7 @@ import { upsertUserSsoSessionFactory } from '@/modules/workspaces/repositories/sso' import { getEncryptor } from '@/modules/workspaces/helpers/sso' -import { OidcProvider } from '@/modules/workspaces/domain/sso/types' +import type { OidcProvider } from '@/modules/workspaces/domain/sso/types' import { getFeatureFlags, getFrontendOrigin } from '@/modules/shared/helpers/envHelper' import { getDefaultSsoSessionExpirationDate } from '@/modules/workspaces/domain/sso/logic' import { @@ -80,7 +78,7 @@ import { upsertWorkspacePlanFactory, upsertWorkspaceSubscriptionFactory } from '@/modules/gatekeeper/repositories/billing' -import { SetOptional } from 'type-fest' +import type { SetOptional } from 'type-fest' import { isMultiRegionTestMode } from '@/test/speckle-helpers/regions' import { assignWorkspaceRegionFactory, @@ -130,8 +128,8 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' -import { WorkspaceCreationState } from '@/modules/workspaces/domain/types' -import { +import type { WorkspaceCreationState } from '@/modules/workspaces/domain/types' +import type { WorkspaceSeat, WorkspaceWithOptionalRole } from '@/modules/workspacesCore/domain/types' diff --git a/packages/server/modules/workspaces/tests/helpers/invites.ts b/packages/server/modules/workspaces/tests/helpers/invites.ts index 1c0a2efa1..283564110 100644 --- a/packages/server/modules/workspaces/tests/helpers/invites.ts +++ b/packages/server/modules/workspaces/tests/helpers/invites.ts @@ -1,39 +1,41 @@ -import { ExecuteOperationOptions, TestApolloServer } from '@/test/graphqlHelper' +import type { ExecuteOperationOptions, TestApolloServer } from '@/test/graphqlHelper' -import { - BatchCreateWorkspaceInvitesDocument, +import type { BatchCreateWorkspaceInvitesMutationVariables, - CancelWorkspaceInviteDocument, CancelWorkspaceInviteMutationVariables, - CreateProjectInviteDocument, CreateProjectInviteMutationVariables, - CreateWorkspaceInviteDocument, CreateWorkspaceInviteMutationVariables, - CreateWorkspaceProjectInviteDocument, CreateWorkspaceProjectInviteMutationVariables, - GetMyWorkspaceInvitesDocument, - GetProjectDocument, GetProjectQueryVariables, - GetWorkspaceDocument, - GetWorkspaceInviteDocument, GetWorkspaceInviteQueryVariables, GetWorkspaceQueryVariables, - GetWorkspaceWithTeamDocument, GetWorkspaceWithTeamQueryVariables, - ResendWorkspaceInviteDocument, ResendWorkspaceInviteMutationVariables, - UseWorkspaceInviteDocument, UseWorkspaceInviteMutationVariables, - UseWorkspaceProjectInviteDocument, UseWorkspaceProjectInviteMutationVariables } from '@/modules/core/graph/generated/graphql' +import { + BatchCreateWorkspaceInvitesDocument, + CancelWorkspaceInviteDocument, + CreateProjectInviteDocument, + CreateWorkspaceInviteDocument, + CreateWorkspaceProjectInviteDocument, + GetMyWorkspaceInvitesDocument, + GetProjectDocument, + GetWorkspaceDocument, + GetWorkspaceInviteDocument, + GetWorkspaceWithTeamDocument, + ResendWorkspaceInviteDocument, + UseWorkspaceInviteDocument, + UseWorkspaceProjectInviteDocument +} from '@/modules/core/graph/generated/graphql' import { expect } from 'chai' -import { MaybeAsync, StreamRoles, WorkspaceRoles } from '@speckle/shared' +import type { MaybeAsync, StreamRoles, WorkspaceRoles } from '@speckle/shared' import { expectToThrow } from '@/test/assertionHelper' import { ForbiddenError } from '@/modules/shared/errors' import { isBoolean } from 'lodash-es' -import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' export const buildInvitesGraphqlOperations = (deps: { apollo: TestApolloServer }) => { const { apollo } = deps diff --git a/packages/server/modules/workspaces/tests/helpers/rolesGraphql.ts b/packages/server/modules/workspaces/tests/helpers/rolesGraphql.ts index c1b5cbba3..13997e6c8 100644 --- a/packages/server/modules/workspaces/tests/helpers/rolesGraphql.ts +++ b/packages/server/modules/workspaces/tests/helpers/rolesGraphql.ts @@ -1,6 +1,7 @@ import { basicWorkspaceFragment } from '@/modules/workspaces/tests/helpers/graphql' -import { ProjectImplicitRoleCheckFragment } from '@/modules/core/graph/generated/graphql' -import { MaybeNullOrUndefined, Roles } from '@speckle/shared' +import type { ProjectImplicitRoleCheckFragment } from '@/modules/core/graph/generated/graphql' +import type { MaybeNullOrUndefined } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { gql } from 'graphql-tag' export const fullPermissionCheckResultFragment = gql(` diff --git a/packages/server/modules/workspaces/tests/integration/invites.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/invites.graph.spec.ts index 4c634adfb..a9c376555 100644 --- a/packages/server/modules/workspaces/tests/integration/invites.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/invites.graph.spec.ts @@ -1,16 +1,14 @@ +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspaces, - BasicTestWorkspace, createTestWorkspaces, createWorkspaceInviteDirectly, unassignFromWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUsers } from '@/test/authHelper' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUsers } from '@/test/authHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext, truncateTables } from '@/test/hooks' import { WorkspaceRole } from '@/modules/core/graph/generated/graphql' import { expect } from 'chai' @@ -18,23 +16,21 @@ import { captureCreatedInvite, validateInviteExistanceFromEmail } from '@/test/speckle-helpers/inviteHelper' -import { Roles, StreamRoles, WorkspaceRoles } from '@speckle/shared' +import type { StreamRoles, WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { itEach } from '@/test/assertionHelper' import { ServerInvites } from '@/modules/core/dbSchema' import { TokenResourceIdentifierType } from '@/modules/core/graph/generated/graphql' import { times } from 'lodash-es' import { findInviteFactory } from '@/modules/serverinvites/repositories/serverInvites' import { db } from '@/db/knex' -import { - BasicTestStream, - createTestStreams, - leaveStream -} from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStreams, leaveStream } from '@/test/speckle-helpers/streamHelper' import { Workspaces } from '@/modules/workspaces/helpers/db' +import type { LocalAuthRestApiHelpers } from '@/modules/auth/tests/helpers/registration' import { generateRegistrationParams, - localAuthRestApi, - LocalAuthRestApiHelpers + localAuthRestApi } from '@/modules/auth/tests/helpers/registration' import type { Express } from 'express' import { AllScopes } from '@/modules/core/helpers/mainConstants' @@ -62,15 +58,14 @@ import { } from '@/modules/core/services/streams/access' import { authorizeResolver } from '@/modules/shared' import { getUserFactory } from '@/modules/core/repositories/users' -import { - TestInvitesGraphQLOperations, - buildInvitesGraphqlOperations -} from '@/modules/workspaces/tests/helpers/invites' +import type { TestInvitesGraphQLOperations } from '@/modules/workspaces/tests/helpers/invites' +import { buildInvitesGraphqlOperations } from '@/modules/workspaces/tests/helpers/invites' import { getEventBus } from '@/modules/shared/services/eventBus' import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' -import { createEmailListener, TestEmailListener } from '@/test/speckle-helpers/email' +import type { TestEmailListener } from '@/test/speckle-helpers/email' +import { createEmailListener } from '@/test/speckle-helpers/email' enum InviteByTarget { Email = 'email', diff --git a/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts index 17ff664fc..b0e7fc8b2 100644 --- a/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts @@ -1,6 +1,7 @@ import { db } from '@/db/knex' import { StreamAcl, Streams } from '@/modules/core/dbSchema' -import { ProjectRecordVisibility, StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' +import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { deleteProjectFactory, getProjectFactory @@ -11,19 +12,19 @@ import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { getWorkspaceUserSeatsFactory } from '@/modules/gatekeeper/repositories/workspaceSeat' import { getRegionDb } from '@/modules/multiregion/utils/dbSelector' import { WorkspaceInvalidRoleError } from '@/modules/workspaces/errors/workspace' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, assignToWorkspaces, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { describeEach, itEach } from '@/test/assertionHelper' -import { - BasicTestUser, - createTestUser, - createTestUsers, - login -} from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers, login } from '@/test/authHelper' +import type { + GetWorkspaceProjectsQuery, + ProjectUpdateRoleInput +} from '@/modules/core/graph/generated/graphql' import { ActiveUserProjectsDocument, ActiveUserProjectsWorkspaceDocument, @@ -31,33 +32,27 @@ import { GetProjectDocument, GetWorkspaceDocument, GetWorkspaceProjectsDocument, - GetWorkspaceProjectsQuery, GetWorkspaceTeamDocument, MoveProjectToWorkspaceDocument, - ProjectUpdateRoleInput, ProjectVisibility, UpdateProjectDocument, UpdateProjectRoleDocument, UpdateWorkspaceProjectRoleDocument } from '@/modules/core/graph/generated/graphql' -import { - ExecuteOperationResponse, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { ExecuteOperationResponse, TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' import { mockAdminOverride } from '@/test/mocks/global' import { isMultiRegionTestMode } from '@/test/speckle-helpers/regions' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { addToStream, - BasicTestStream, createTestStream, getUserStreamRole } from '@/test/speckle-helpers/streamHelper' +import type { Nullable, Optional } from '@speckle/shared' import { isNonNullable, - Nullable, - Optional, PaidWorkspacePlans, Roles, WorkspacePlans @@ -65,7 +60,7 @@ import { import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' import dayjs from 'dayjs' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { times } from 'lodash-es' const grantStreamPermissions = grantStreamPermissionsFactory({ db }) diff --git a/packages/server/modules/workspaces/tests/integration/regions.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/regions.graph.spec.ts index 726501b17..c82e16dde 100644 --- a/packages/server/modules/workspaces/tests/integration/regions.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/regions.graph.spec.ts @@ -3,18 +3,20 @@ import { isMultiRegionEnabled } from '@/modules/multiregion/helpers' import { setMultiRegionConfig } from '@/modules/multiregion/regionConfig' import { storeRegionFactory } from '@/modules/multiregion/repositories' import { WorkspaceRegions } from '@/modules/workspaces/repositories/regions' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { GetAvailableRegionsDocument, GetWorkspaceDefaultRegionDocument, SetWorkspaceDefaultRegionDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext, getRegionKeys } from '@/test/hooks' import { truncateRegionsSafely } from '@/test/speckle-helpers/regions' import { PaidWorkspacePlans, Roles } from '@speckle/shared' diff --git a/packages/server/modules/workspaces/tests/integration/repositories.spec.ts b/packages/server/modules/workspaces/tests/integration/repositories.spec.ts index cb83136ae..469f7369d 100644 --- a/packages/server/modules/workspaces/tests/integration/repositories.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/repositories.spec.ts @@ -19,16 +19,12 @@ import { import db from '@/db/knex' import cryptoRandomString from 'crypto-random-string' import { expect } from 'chai' -import { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { buildBasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { - BasicTestUser, - buildBasicTestUser, - createTestUser, - createTestUsers -} from '@/test/authHelper' -import { - BasicTestWorkspace, assignToWorkspace, buildBasicTestWorkspace, createTestWorkspace, diff --git a/packages/server/modules/workspaces/tests/integration/repositories/projects.spec.ts b/packages/server/modules/workspaces/tests/integration/repositories/projects.spec.ts index a4a98c2d4..c1ff15880 100644 --- a/packages/server/modules/workspaces/tests/integration/repositories/projects.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/repositories/projects.spec.ts @@ -1,16 +1,14 @@ import { createRandomEmail } from '@/modules/core/helpers/testHelpers' import { intersectProjectCollaboratorsAndWorkspaceCollaboratorsFactory } from '@/modules/workspaces/repositories/projects' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspaces, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' -import { - addAllToStream, - BasicTestStream, - createTestStream -} from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { addAllToStream, createTestStream } from '@/test/speckle-helpers/streamHelper' import cryptoRandomString from 'crypto-random-string' import { db } from '@/db/knex' import { expect } from 'chai' diff --git a/packages/server/modules/workspaces/tests/integration/repositories/users.spec.ts b/packages/server/modules/workspaces/tests/integration/repositories/users.spec.ts index a9ccbf0ea..65cdf7686 100644 --- a/packages/server/modules/workspaces/tests/integration/repositories/users.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/repositories/users.spec.ts @@ -4,13 +4,15 @@ import { createRandomString } from '@/modules/core/helpers/testHelpers' import { getInvitableCollaboratorsByProjectIdFactory } from '@/modules/workspaces/repositories/users' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import { pick } from 'lodash-es' diff --git a/packages/server/modules/workspaces/tests/integration/roles.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/roles.graph.spec.ts index 78af0129c..598422269 100644 --- a/packages/server/modules/workspaces/tests/integration/roles.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/roles.graph.spec.ts @@ -1,27 +1,22 @@ import { Streams } from '@/modules/core/dbSchema' import { AllScopes } from '@/modules/core/helpers/mainConstants' import { ProjectRecordVisibility } from '@/modules/core/helpers/types' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace, unassignFromWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { - ProjectImplicitRoleCheck, - projectImplicitRoleCheck -} from '@/modules/workspaces/tests/helpers/rolesGraphql' +import type { ProjectImplicitRoleCheck } from '@/modules/workspaces/tests/helpers/rolesGraphql' +import { projectImplicitRoleCheck } from '@/modules/workspaces/tests/helpers/rolesGraphql' import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { WorkspaceAcl, Workspaces, WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { - BasicTestUser, - createAuthTokenForUser, - createTestUsers -} from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createAuthTokenForUser, createTestUsers } from '@/test/authHelper' import { ActiveUserLeaveWorkspaceDocument, GetUserProjectsWithAccessChecksDocument, @@ -31,17 +26,11 @@ import { UpdateWorkspaceRoleDocument, UpdateWorkspaceSeatTypeDocument } from '@/modules/core/graph/generated/graphql' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext, truncateTables } from '@/test/hooks' -import { - addToStream, - BasicTestStream, - createTestStream -} from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { addToStream, createTestStream } from '@/test/speckle-helpers/streamHelper' import { Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/workspaces/tests/integration/sso.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/sso.graph.spec.ts index abd634de0..80dc16543 100644 --- a/packages/server/modules/workspaces/tests/integration/sso.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/sso.graph.spec.ts @@ -1,17 +1,14 @@ import { ProjectRecordVisibility } from '@/modules/core/helpers/types' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspaces, - BasicTestWorkspace, createTestOidcProvider, createTestSsoSession, createTestWorkspaces } from '@/modules/workspaces/tests/helpers/creation' -import { - BasicTestUser, - createAuthTokenForUser, - createTestUsers -} from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createAuthTokenForUser, createTestUsers } from '@/test/authHelper' import { ActiveUserExpiredSsoSessionsDocument, GetActiveUserWorkspacesDocument, @@ -20,13 +17,11 @@ import { GetWorkspaceProjectsDocument, GetWorkspaceSsoDocument } from '@/modules/core/graph/generated/graphql' -import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { truncateTables } from '@/test/hooks' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { AllScopes, Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/workspaces/tests/integration/sso.spec.ts b/packages/server/modules/workspaces/tests/integration/sso.spec.ts index 1708b0ef4..09bcb981d 100644 --- a/packages/server/modules/workspaces/tests/integration/sso.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/sso.spec.ts @@ -7,21 +7,22 @@ import { listWorkspaceSsoMembershipsFactory, upsertUserSsoSessionFactory } from '@/modules/workspaces/repositories/sso' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestOidcProvider, createTestSsoSession, createTestWorkspace, createTestWorkspaces } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' import { Roles, wait } from '@speckle/shared' import db from '@/db/knex' import { getDecryptor } from '@/modules/workspaces/helpers/sso' import cryptoRandomString from 'crypto-random-string' import { expect } from 'chai' -import { UserSsoSessionRecord } from '@/modules/workspaces/domain/sso/types' +import type { UserSsoSessionRecord } from '@/modules/workspaces/domain/sso/types' import { truncateTables } from '@/test/hooks' import { isValidSsoSession } from '@/modules/workspaces/domain/sso/logic' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' diff --git a/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts index f22c65b84..eb7c0757f 100644 --- a/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/subs.graph.spec.ts @@ -13,29 +13,27 @@ import { validateSlugFactory } from '@/modules/workspaces/services/management' import { createWorkspaceProjectFactory } from '@/modules/workspaces/services/projects' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { - BasicTestWorkspace, createTestWorkspace, unassignFromWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { - buildInvitesGraphqlOperations, - TestInvitesGraphQLOperations -} from '@/modules/workspaces/tests/helpers/invites' +import type { TestInvitesGraphQLOperations } from '@/modules/workspaces/tests/helpers/invites' +import { buildInvitesGraphqlOperations } from '@/modules/workspaces/tests/helpers/invites' import { itEach } from '@/test/assertionHelper' -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { OnWorkspaceProjectsUpdatedDocument, OnWorkspaceUpdatedDocument, WorkspaceProjectsUpdatedMessageType } from '@/modules/core/graph/generated/graphql' -import { - testApolloServer, +import type { TestApolloServer, TestApolloSubscriptionClient, - testApolloSubscriptionServer, TestApolloSubscriptionServer } from '@/test/graphqlHelper' +import { testApolloServer, testApolloSubscriptionServer } from '@/test/graphqlHelper' import { beforeEachContext, truncateTables } from '@/test/hooks' import { captureCreatedInvite } from '@/test/speckle-helpers/inviteHelper' import { diff --git a/packages/server/modules/workspaces/tests/integration/tracking.spec.ts b/packages/server/modules/workspaces/tests/integration/tracking.spec.ts index 25682ab67..de7d9e316 100644 --- a/packages/server/modules/workspaces/tests/integration/tracking.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/tracking.spec.ts @@ -1,4 +1,5 @@ -import { BasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser } from '@/test/authHelper' import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { createRandomEmail, diff --git a/packages/server/modules/workspaces/tests/integration/users.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/users.graph.spec.ts index e535afda8..440904602 100644 --- a/packages/server/modules/workspaces/tests/integration/users.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/users.graph.spec.ts @@ -2,17 +2,13 @@ import { createRandomEmail, createRandomString } from '@/modules/core/helpers/testHelpers' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { - BasicTestUser, - createTestUser, - createTestUsers, - login -} from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers, login } from '@/test/authHelper' import { ActiveUserUpdateMutationDocument, GetActiveUserDocument, @@ -20,9 +16,11 @@ import { SetUserActiveWorkspaceDocument, UserActiveResourcesDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/workspaces/tests/integration/workspaceJoinRequests.spec.ts b/packages/server/modules/workspaces/tests/integration/workspaceJoinRequests.spec.ts index 8ca750645..b5bd4d48f 100644 --- a/packages/server/modules/workspaces/tests/integration/workspaceJoinRequests.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/workspaceJoinRequests.spec.ts @@ -16,8 +16,9 @@ import { getWorkspaceWithDomainsFactory, upsertWorkspaceRoleFactory } from '@/modules/workspaces/repositories/workspaces' -import { getUserFactory, UserWithOptionalRole } from '@/modules/core/repositories/users' -import { +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' +import { getUserFactory } from '@/modules/core/repositories/users' +import type { AddOrUpdateWorkspaceRole, CreateWorkspaceJoinRequest, SendWorkspaceJoinRequestApprovedEmail, @@ -31,18 +32,17 @@ import { dismissWorkspaceJoinRequestFactory, requestToJoinWorkspaceFactory } from '@/modules/workspaces/services/workspaceJoinRequests' -import { - BasicTestWorkspace, - createTestWorkspace -} from '@/modules/workspaces/tests/helpers/creation' -import { +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import { createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' +import type { Workspace, WorkspaceJoinRequest, WorkspaceWithDomains } from '@/modules/workspacesCore/domain/types' import { WorkspaceJoinRequests } from '@/modules/workspacesCore/helpers/db' import { expectToThrow } from '@/test/assertionHelper' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' import { Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' @@ -50,7 +50,7 @@ import { createWorkspaceJoinRequestFactory, updateWorkspaceJoinRequestStatusFactory } from '@/modules/workspaces/repositories/workspaceJoinRequests' -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { findEmailsByUserIdFactory, findVerifiedEmailsByUserIdFactory diff --git a/packages/server/modules/workspaces/tests/integration/workspaceSeat.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/workspaceSeat.graph.spec.ts index d24763441..fa04ac2e8 100644 --- a/packages/server/modules/workspaces/tests/integration/workspaceSeat.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/workspaceSeat.graph.spec.ts @@ -7,24 +7,23 @@ import { import { setStripeClient } from '@/modules/gatekeeper/clients/stripe' import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { getWorkspaceUserSeatFactory } from '@/modules/gatekeeper/repositories/workspaceSeat' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' +import type { WorkspaceUpdateSeatTypeInput } from '@/modules/core/graph/generated/graphql' import { GetProjectCollaboratorsDocument, - UpdateWorkspaceSeatTypeDocument, - WorkspaceUpdateSeatTypeInput + UpdateWorkspaceSeatTypeDocument } from '@/modules/core/graph/generated/graphql' -import { testApolloServer, TestApolloServer } from '@/test/graphqlHelper' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { testApolloServer } from '@/test/graphqlHelper' import { beforeEachContext } from '@/test/hooks' -import { - addToStream, - BasicTestStream, - createTestStream -} from '@/test/speckle-helpers/streamHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { addToStream, createTestStream } from '@/test/speckle-helpers/streamHelper' import { Roles } from '@speckle/shared' import { expect } from 'chai' import dayjs from 'dayjs' diff --git a/packages/server/modules/workspaces/tests/integration/workspaceSeat.spec.ts b/packages/server/modules/workspaces/tests/integration/workspaceSeat.spec.ts index 65d2dc3ae..67174e0c2 100644 --- a/packages/server/modules/workspaces/tests/integration/workspaceSeat.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/workspaceSeat.spec.ts @@ -14,13 +14,14 @@ import { ensureValidWorkspaceRoleSeatFactory, getWorkspaceDefaultSeatTypeFactory } from '@/modules/workspaces/services/workspaceSeat' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, createTestWorkspace, unassignFromWorkspace } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestUser, createTestUser, createTestUsers } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { createTestUser, createTestUsers } from '@/test/authHelper' import { beforeEachContext } from '@/test/hooks' import { Roles } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/workspaces/tests/integration/workspaces.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/workspaces.graph.spec.ts index fcf93075e..e2e5293bd 100644 --- a/packages/server/modules/workspaces/tests/integration/workspaces.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/workspaces.graph.spec.ts @@ -1,19 +1,17 @@ import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' +import type { TestApolloServer } from '@/test/graphqlHelper' +import { createTestContext, testApolloServer } from '@/test/graphqlHelper' +import type { BasicTestUser } from '@/test/authHelper' import { - createTestContext, - testApolloServer, - TestApolloServer -} from '@/test/graphqlHelper' -import { - BasicTestUser, buildBasicTestUser, createAuthTokenForUser, createTestUser, createTestUsers, login } from '@/test/authHelper' -import { Roles, wait, WorkspaceRoles } from '@speckle/shared' +import type { WorkspaceRoles } from '@speckle/shared' +import { Roles, wait } from '@speckle/shared' import { CreateProjectInviteDocument, CreateWorkspaceDocument, @@ -38,15 +36,17 @@ import { } from '@/modules/core/graph/generated/graphql' import { beforeEachContext, truncateTables } from '@/test/hooks' import { AllScopes } from '@/modules/core/helpers/mainConstants' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { assignToWorkspace, - BasicTestWorkspace, buildBasicTestWorkspace, createTestWorkspace, createWorkspaceInviteDirectly } from '@/modules/workspaces/tests/helpers/creation' -import { BasicTestCommit, createTestCommit } from '@/test/speckle-helpers/commitHelper' -import { BasicTestStream, createTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestCommit } from '@/test/speckle-helpers/commitHelper' +import { createTestCommit } from '@/test/speckle-helpers/commitHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import { createTestStream } from '@/test/speckle-helpers/streamHelper' import { shuffle } from 'lodash-es' import knex, { db } from '@/db/knex' import { diff --git a/packages/server/modules/workspaces/tests/integration/workspacesCreationState.spec.ts b/packages/server/modules/workspaces/tests/integration/workspacesCreationState.spec.ts index 7021e72f5..52d0551f2 100644 --- a/packages/server/modules/workspaces/tests/integration/workspacesCreationState.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/workspacesCreationState.spec.ts @@ -1,7 +1,8 @@ import { db } from '@/db/knex' -import { BasicTestUser, buildBasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' +import { buildBasicTestUser, createTestUser } from '@/test/authHelper' +import type { BasicTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' import { - BasicTestWorkspace, buildBasicTestWorkspace, createTestWorkspace } from '@/modules/workspaces/tests/helpers/creation' diff --git a/packages/server/modules/workspaces/tests/unit/domain/logic.spec.ts b/packages/server/modules/workspaces/tests/unit/domain/logic.spec.ts index 381f7cf2b..93f1a852a 100644 --- a/packages/server/modules/workspaces/tests/unit/domain/logic.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/domain/logic.spec.ts @@ -1,4 +1,4 @@ -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { anyEmailCompliantWithWorkspaceDomains, isWorkspaceRole, @@ -9,7 +9,7 @@ import { isValidSsoSession } from '@/modules/workspaces/domain/sso/logic' import { WorkspaceDomainsInvalidState } from '@/modules/workspaces/errors/workspace' -import { WorkspaceDomain } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceDomain } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' import { Roles } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/workspaces/tests/unit/events/eventListener.spec.ts b/packages/server/modules/workspaces/tests/unit/events/eventListener.spec.ts index 3107edd93..42afcbff7 100644 --- a/packages/server/modules/workspaces/tests/unit/events/eventListener.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/events/eventListener.spec.ts @@ -4,7 +4,7 @@ import { buildTestWorkspaceSeat, buildTestWorkspaceWithOptionalRole } from '@/modules/workspaces/tests/helpers/creation' -import { +import type { CountWorkspaceRoleWithOptionalProjectRole, GetDefaultRegion, GetWorkspace, @@ -16,16 +16,14 @@ import { buildTestWorkspacePlan, buildTestWorkspaceSubscription } from '@/modules/gatekeeper/tests/helpers/workspacePlan' -import { +import type { GetWorkspacePlan, - GetWorkspaceSubscription, - WorkspaceSeatType + GetWorkspaceSubscription } from '@/modules/gatekeeper/domain/billing' -import { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' -import { - buildMixpanelFake, - MixpanelFakeEventRecord -} from '@/modules/shared/test/helpers/mixpanel' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { FindEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { MixpanelFakeEventRecord } from '@/modules/shared/test/helpers/mixpanel' +import { buildMixpanelFake } from '@/modules/shared/test/helpers/mixpanel' import { getFeatureFlags } from '@speckle/shared/environment' import { GatekeeperEvents } from '@/modules/gatekeeperCore/domain/events' import { @@ -35,7 +33,7 @@ import { import { expect } from 'chai' import { WorkspacePlans, WorkspacePlanStatuses } from '@speckle/shared' import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' -import { GetUser } from '@/modules/core/domain/users/operations' +import type { GetUser } from '@/modules/core/domain/users/operations' import cryptoRandomString from 'crypto-random-string' import { BillingInterval } from '@/modules/core/graph/generated/graphql' diff --git a/packages/server/modules/workspaces/tests/unit/services/domains.spec.ts b/packages/server/modules/workspaces/tests/unit/services/domains.spec.ts index 5c1cd2b5e..4eb7233a2 100644 --- a/packages/server/modules/workspaces/tests/unit/services/domains.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/services/domains.spec.ts @@ -1,6 +1,6 @@ import { WorkspaceNotFoundError } from '@/modules/workspaces/errors/workspace' import { isUserWorkspaceDomainPolicyCompliantFactory } from '@/modules/workspaces/services/domains' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' diff --git a/packages/server/modules/workspaces/tests/unit/services/management.spec.ts b/packages/server/modules/workspaces/tests/unit/services/management.spec.ts index 8a2332c5c..c325b8909 100644 --- a/packages/server/modules/workspaces/tests/unit/services/management.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/services/management.spec.ts @@ -1,10 +1,10 @@ -import { +import type { Workspace, WorkspaceAcl, WorkspaceDomain, - WorkspaceSeatType, WorkspaceWithDomains } from '@/modules/workspacesCore/domain/types' +import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { addDomainToWorkspaceFactory, createWorkspaceFactory, @@ -17,11 +17,9 @@ import { import { Roles, validateWorkspaceSlug } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' -import { - WorkspaceEvents, - WorkspaceEventsPayloads -} from '@/modules/workspacesCore/domain/events' -import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' +import type { WorkspaceEventsPayloads } from '@/modules/workspacesCore/domain/events' +import { WorkspaceEvents } from '@/modules/workspacesCore/domain/events' +import type { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' import { expectToThrow } from '@/test/assertionHelper' import { createRandomPassword } from '@/modules/core/helpers/testHelpers' import { @@ -34,13 +32,13 @@ import { WorkspaceSlugTakenError, WorkspaceUnverifiedDomainError } from '@/modules/workspaces/errors/workspace' -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { merge, omit } from 'lodash-es' -import { +import type { GetWorkspaceWithDomains, UpsertWorkspaceArgs } from '@/modules/workspaces/domain/operations' -import { FindVerifiedEmailsByUserId } from '@/modules/core/domain/userEmails/operations' +import type { FindVerifiedEmailsByUserId } from '@/modules/core/domain/userEmails/operations' type WorkspaceTestContext = { storedWorkspaces: UpsertWorkspaceArgs['workspace'][] diff --git a/packages/server/modules/workspaces/tests/unit/services/projects.spec.ts b/packages/server/modules/workspaces/tests/unit/services/projects.spec.ts index df5b1f931..785c202c7 100644 --- a/packages/server/modules/workspaces/tests/unit/services/projects.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/services/projects.spec.ts @@ -1,21 +1,23 @@ -import { ProjectTeamMember } from '@/modules/core/domain/projects/types' +import type { ProjectTeamMember } from '@/modules/core/domain/projects/types' import { ProjectNotFoundError } from '@/modules/core/errors/projects' -import { StreamRecord } from '@/modules/core/helpers/types' +import type { StreamRecord } from '@/modules/core/helpers/types' import { queryAllProjectsFactory } from '@/modules/core/services/projects' -import { WorkspaceSeat, WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' +import type { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' +import { WorkspaceSeatType } from '@/modules/gatekeeper/domain/billing' import { WorkspaceInvalidProjectError } from '@/modules/workspaces/errors/workspace' import { moveProjectToWorkspaceFactory } from '@/modules/workspaces/services/projects' -import { +import type { Workspace, WorkspaceAcl, WorkspaceDomain } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' -import { ProjectUpdateRoleInput } from '@/modules/core/graph/generated/graphql' -import { Roles, StreamRoles, WorkspaceRoles } from '@speckle/shared' +import type { ProjectUpdateRoleInput } from '@/modules/core/graph/generated/graphql' +import type { StreamRoles, WorkspaceRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { expect } from 'chai' import cryptoRandomString from 'crypto-random-string' -import { StreamWithOptionalRole } from '@/modules/core/repositories/streams' +import type { StreamWithOptionalRole } from '@/modules/core/repositories/streams' describe('Project retrieval services', () => { describe('queryAllWorkspaceProjectFactory returns a generator, that', () => { diff --git a/packages/server/modules/workspaces/tests/unit/services/sso.spec.ts b/packages/server/modules/workspaces/tests/unit/services/sso.spec.ts index 9ce3ef3ad..5da73c30f 100644 --- a/packages/server/modules/workspaces/tests/unit/services/sso.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/services/sso.spec.ts @@ -1,8 +1,8 @@ /* eslint-disable camelcase */ -import { UserEmail } from '@/modules/core/domain/userEmails/types' +import type { UserEmail } from '@/modules/core/domain/userEmails/types' import { getDefaultSsoSessionExpirationDate } from '@/modules/workspaces/domain/sso/logic' -import { +import type { OidcProvider, UserSsoSessionRecord, WorkspaceSsoProvider, @@ -22,7 +22,7 @@ import { saveSsoProviderRegistrationFactory, startOidcSsoProviderValidationFactory } from '@/modules/workspaces/services/sso' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import { expectToThrow } from '@/test/assertionHelper' import { wait } from '@speckle/shared' import { assert, expect } from 'chai' diff --git a/packages/server/modules/workspaces/tests/unit/services/workspaceSeat.spec.ts b/packages/server/modules/workspaces/tests/unit/services/workspaceSeat.spec.ts index 230a16b1b..aba4c5ea9 100644 --- a/packages/server/modules/workspaces/tests/unit/services/workspaceSeat.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/services/workspaceSeat.spec.ts @@ -2,7 +2,8 @@ import { getWorkspaceDefaultSeatTypeFactory, isWorkspaceRoleWorkspaceSeatTypeValid } from '@/modules/workspaces/services/workspaceSeat' -import { Workspace, WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' +import type { Workspace } from '@/modules/workspacesCore/domain/types' +import { WorkspaceSeatType } from '@/modules/workspacesCore/domain/types' import { Roles } from '@speckle/shared' import { expect } from 'chai' diff --git a/packages/server/modules/workspaces/tests/unit/utils/roles.spec.ts b/packages/server/modules/workspaces/tests/unit/utils/roles.spec.ts index 86d9dd638..55ebeedfa 100644 --- a/packages/server/modules/workspaces/tests/unit/utils/roles.spec.ts +++ b/packages/server/modules/workspaces/tests/unit/utils/roles.spec.ts @@ -1,4 +1,4 @@ -import { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceAcl } from '@/modules/workspacesCore/domain/types' import { expect } from 'chai' import { Roles } from '@speckle/shared' import { isUserLastWorkspaceAdmin } from '@/modules/workspaces/helpers/roles' diff --git a/packages/server/modules/workspacesCore/domain/events.ts b/packages/server/modules/workspacesCore/domain/events.ts index 0988724cf..ac576c3cc 100644 --- a/packages/server/modules/workspacesCore/domain/events.ts +++ b/packages/server/modules/workspacesCore/domain/events.ts @@ -1,5 +1,5 @@ -import { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' -import { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceSeat } from '@/modules/gatekeeper/domain/billing' +import type { Workspace, WorkspaceAcl } from '@/modules/workspacesCore/domain/types' export const workspaceEventNamespace = 'workspace' as const diff --git a/packages/server/modules/workspacesCore/domain/operations.ts b/packages/server/modules/workspacesCore/domain/operations.ts index 83849718b..4826ee433 100644 --- a/packages/server/modules/workspacesCore/domain/operations.ts +++ b/packages/server/modules/workspacesCore/domain/operations.ts @@ -1,4 +1,4 @@ -import { WorkspaceAcl, WorkspaceSeat } from '@/modules/workspacesCore/domain/types' +import type { WorkspaceAcl, WorkspaceSeat } from '@/modules/workspacesCore/domain/types' export type GetWorkspaceRolesAndSeats = (params: { workspaceId: string diff --git a/packages/server/modules/workspacesCore/domain/types.ts b/packages/server/modules/workspacesCore/domain/types.ts index cda4800f7..51ab5fb6a 100644 --- a/packages/server/modules/workspacesCore/domain/types.ts +++ b/packages/server/modules/workspacesCore/domain/types.ts @@ -1,6 +1,6 @@ -import { InviteResourceTarget } from '@/modules/serverinvites/domain/types' -import { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' -import { WorkspaceRoles } from '@speckle/shared' +import type { InviteResourceTarget } from '@/modules/serverinvites/domain/types' +import type { WorkspaceInviteResourceType } from '@/modules/workspacesCore/domain/constants' +import type { WorkspaceRoles } from '@speckle/shared' declare module '@/modules/serverinvites/domain/types' { interface InviteResourceTargetTypeMap { diff --git a/packages/server/modules/workspacesCore/graph/resolvers/workspaceJoinRequests.ts b/packages/server/modules/workspacesCore/graph/resolvers/workspaceJoinRequests.ts index 9c234dc5d..e5d7d448f 100644 --- a/packages/server/modules/workspacesCore/graph/resolvers/workspaceJoinRequests.ts +++ b/packages/server/modules/workspacesCore/graph/resolvers/workspaceJoinRequests.ts @@ -1,5 +1,5 @@ import { WorkspacesModuleDisabledError } from '@/modules/core/errors/workspaces' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' const { FF_WORKSPACES_MODULE_ENABLED } = getFeatureFlags() diff --git a/packages/server/modules/workspacesCore/graph/resolvers/workspacesCore.ts b/packages/server/modules/workspacesCore/graph/resolvers/workspacesCore.ts index 7adf2566d..62d9e8389 100644 --- a/packages/server/modules/workspacesCore/graph/resolvers/workspacesCore.ts +++ b/packages/server/modules/workspacesCore/graph/resolvers/workspacesCore.ts @@ -1,5 +1,5 @@ import { WorkspacesModuleDisabledError } from '@/modules/core/errors/workspaces' -import { Resolvers } from '@/modules/core/graph/generated/graphql' +import type { Resolvers } from '@/modules/core/graph/generated/graphql' import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { filteredSubscribe, diff --git a/packages/server/modules/workspacesCore/helpers/graphTypes.ts b/packages/server/modules/workspacesCore/helpers/graphTypes.ts index 073e3bf19..07887e66e 100644 --- a/packages/server/modules/workspacesCore/helpers/graphTypes.ts +++ b/packages/server/modules/workspacesCore/helpers/graphTypes.ts @@ -1,13 +1,13 @@ -import { MutationsObjectGraphQLReturn } from '@/modules/core/helpers/graphTypes' -import { LimitedUserRecord } from '@/modules/core/helpers/types' -import { WorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/types' -import { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' -import { +import type { MutationsObjectGraphQLReturn } from '@/modules/core/helpers/graphTypes' +import type { LimitedUserRecord } from '@/modules/core/helpers/types' +import type { WorkspaceSsoProviderRecord } from '@/modules/workspaces/domain/sso/types' +import type { WorkspaceTeamMember } from '@/modules/workspaces/domain/types' +import type { LimitedWorkspace, Workspace, WorkspaceJoinRequest } from '@/modules/workspacesCore/domain/types' -import { WorkspaceRoles } from '@speckle/shared' +import type { WorkspaceRoles } from '@speckle/shared' export type WorkspaceGraphQLReturn = Workspace export type WorkspaceJoinRequestGraphQLReturn = WorkspaceJoinRequest diff --git a/packages/server/modules/workspacesCore/index.ts b/packages/server/modules/workspacesCore/index.ts index e1ddc7ded..7f13db1d7 100644 --- a/packages/server/modules/workspacesCore/index.ts +++ b/packages/server/modules/workspacesCore/index.ts @@ -1,4 +1,4 @@ -import { SpeckleModule } from '@/modules/shared/helpers/typeHelper' +import type { SpeckleModule } from '@/modules/shared/helpers/typeHelper' import { moduleLogger } from '@/observability/logging' export const init: SpeckleModule['init'] = () => { diff --git a/packages/server/modules/workspacesCore/migrations/20240621174016_workspaces.ts b/packages/server/modules/workspacesCore/migrations/20240621174016_workspaces.ts index 509ab8733..44d7b8ef6 100644 --- a/packages/server/modules/workspacesCore/migrations/20240621174016_workspaces.ts +++ b/packages/server/modules/workspacesCore/migrations/20240621174016_workspaces.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240628112300_dropCreatorId.ts b/packages/server/modules/workspacesCore/migrations/20240628112300_dropCreatorId.ts index 05b5b115c..786166875 100644 --- a/packages/server/modules/workspacesCore/migrations/20240628112300_dropCreatorId.ts +++ b/packages/server/modules/workspacesCore/migrations/20240628112300_dropCreatorId.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240801000000_logos.ts b/packages/server/modules/workspacesCore/migrations/20240801000000_logos.ts index 6ccb2c2c5..830b469fa 100644 --- a/packages/server/modules/workspacesCore/migrations/20240801000000_logos.ts +++ b/packages/server/modules/workspacesCore/migrations/20240801000000_logos.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240802212846_cascadeDeleteWorkspaceProjects.ts b/packages/server/modules/workspacesCore/migrations/20240802212846_cascadeDeleteWorkspaceProjects.ts index 8e03eb3df..a9d39bc7e 100644 --- a/packages/server/modules/workspacesCore/migrations/20240802212846_cascadeDeleteWorkspaceProjects.ts +++ b/packages/server/modules/workspacesCore/migrations/20240802212846_cascadeDeleteWorkspaceProjects.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('streams', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240806160740_workspace_domains.ts b/packages/server/modules/workspacesCore/migrations/20240806160740_workspace_domains.ts index 426caa154..4a7494927 100644 --- a/packages/server/modules/workspacesCore/migrations/20240806160740_workspace_domains.ts +++ b/packages/server/modules/workspacesCore/migrations/20240806160740_workspace_domains.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('workspace_domains', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240807174901_add_column_domainBasedMembershipProtection.ts b/packages/server/modules/workspacesCore/migrations/20240807174901_add_column_domainBasedMembershipProtection.ts index 3861125eb..9873f62f9 100644 --- a/packages/server/modules/workspacesCore/migrations/20240807174901_add_column_domainBasedMembershipProtection.ts +++ b/packages/server/modules/workspacesCore/migrations/20240807174901_add_column_domainBasedMembershipProtection.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240808091944_add_workspace_discovery_flag.ts b/packages/server/modules/workspacesCore/migrations/20240808091944_add_workspace_discovery_flag.ts index dd43040b4..01313e1ba 100644 --- a/packages/server/modules/workspacesCore/migrations/20240808091944_add_workspace_discovery_flag.ts +++ b/packages/server/modules/workspacesCore/migrations/20240808091944_add_workspace_discovery_flag.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240813125251_workspaceAclWithTimestamps.ts b/packages/server/modules/workspacesCore/migrations/20240813125251_workspaceAclWithTimestamps.ts index 1f7c3de6c..aea06423d 100644 --- a/packages/server/modules/workspacesCore/migrations/20240813125251_workspaceAclWithTimestamps.ts +++ b/packages/server/modules/workspacesCore/migrations/20240813125251_workspaceAclWithTimestamps.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspace_acl', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240820131619_fallbackWorkspaceLogo.ts b/packages/server/modules/workspacesCore/migrations/20240820131619_fallbackWorkspaceLogo.ts index f332b862e..ddb8483d2 100644 --- a/packages/server/modules/workspacesCore/migrations/20240820131619_fallbackWorkspaceLogo.ts +++ b/packages/server/modules/workspacesCore/migrations/20240820131619_fallbackWorkspaceLogo.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240910163614_add_column_defaultProjectRole.ts b/packages/server/modules/workspacesCore/migrations/20240910163614_add_column_defaultProjectRole.ts index 1fa3fbe41..be3b67534 100644 --- a/packages/server/modules/workspacesCore/migrations/20240910163614_add_column_defaultProjectRole.ts +++ b/packages/server/modules/workspacesCore/migrations/20240910163614_add_column_defaultProjectRole.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240912134548_add_workspace_slug.ts b/packages/server/modules/workspacesCore/migrations/20240912134548_add_workspace_slug.ts index c5ccac9cd..eb661abc8 100644 --- a/packages/server/modules/workspacesCore/migrations/20240912134548_add_workspace_slug.ts +++ b/packages/server/modules/workspacesCore/migrations/20240912134548_add_workspace_slug.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20240926112407_copy_workspace_slug.ts b/packages/server/modules/workspacesCore/migrations/20240926112407_copy_workspace_slug.ts index 769106f55..33f08a29e 100644 --- a/packages/server/modules/workspacesCore/migrations/20240926112407_copy_workspace_slug.ts +++ b/packages/server/modules/workspacesCore/migrations/20240926112407_copy_workspace_slug.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.raw('update workspaces set slug = id') diff --git a/packages/server/modules/workspacesCore/migrations/20240930141322_workspace_sso.ts b/packages/server/modules/workspacesCore/migrations/20240930141322_workspace_sso.ts index 062cf9999..e6dfba4e8 100644 --- a/packages/server/modules/workspacesCore/migrations/20240930141322_workspace_sso.ts +++ b/packages/server/modules/workspacesCore/migrations/20240930141322_workspace_sso.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('sso_providers', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20241014092507_workspace_sso_expiration.ts b/packages/server/modules/workspacesCore/migrations/20241014092507_workspace_sso_expiration.ts index fa0a6352a..660de50e4 100644 --- a/packages/server/modules/workspacesCore/migrations/20241014092507_workspace_sso_expiration.ts +++ b/packages/server/modules/workspacesCore/migrations/20241014092507_workspace_sso_expiration.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('user_sso_sessions', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20241105070219_create_workspace_regions_table.ts b/packages/server/modules/workspacesCore/migrations/20241105070219_create_workspace_regions_table.ts index 6e839923f..af8ff2df4 100644 --- a/packages/server/modules/workspacesCore/migrations/20241105070219_create_workspace_regions_table.ts +++ b/packages/server/modules/workspacesCore/migrations/20241105070219_create_workspace_regions_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const WORKSPACES_TABLE = 'workspaces' const REGIONS_TABLE = 'regions' diff --git a/packages/server/modules/workspacesCore/migrations/20241128153315_workspace_creation_state.ts b/packages/server/modules/workspacesCore/migrations/20241128153315_workspace_creation_state.ts index 1cf1cccf0..c07b765c4 100644 --- a/packages/server/modules/workspacesCore/migrations/20241128153315_workspace_creation_state.ts +++ b/packages/server/modules/workspacesCore/migrations/20241128153315_workspace_creation_state.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.createTable('workspace_creation_state', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20241202183039_workspace_start_trial.ts b/packages/server/modules/workspacesCore/migrations/20241202183039_workspace_start_trial.ts index 84dfb96c8..326250a82 100644 --- a/packages/server/modules/workspacesCore/migrations/20241202183039_workspace_start_trial.ts +++ b/packages/server/modules/workspacesCore/migrations/20241202183039_workspace_start_trial.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { // there aren't that many workspaces. diff --git a/packages/server/modules/workspacesCore/migrations/20241220093308_create_workspace_join_requests_table.ts b/packages/server/modules/workspacesCore/migrations/20241220093308_create_workspace_join_requests_table.ts index ce94b464a..aaac79252 100644 --- a/packages/server/modules/workspacesCore/migrations/20241220093308_create_workspace_join_requests_table.ts +++ b/packages/server/modules/workspacesCore/migrations/20241220093308_create_workspace_join_requests_table.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const USERS_TABLE = 'users' const WORKSPACES_TABLE = 'workspaces' diff --git a/packages/server/modules/workspacesCore/migrations/20250127110735_drop_default_logo_index.ts b/packages/server/modules/workspacesCore/migrations/20250127110735_drop_default_logo_index.ts index f7549e10a..4b6a9234f 100644 --- a/packages/server/modules/workspacesCore/migrations/20250127110735_drop_default_logo_index.ts +++ b/packages/server/modules/workspacesCore/migrations/20250127110735_drop_default_logo_index.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20250219100906_index_user_id_workspace_join_requests.ts b/packages/server/modules/workspacesCore/migrations/20250219100906_index_user_id_workspace_join_requests.ts index c89649386..68062d092 100644 --- a/packages/server/modules/workspacesCore/migrations/20250219100906_index_user_id_workspace_join_requests.ts +++ b/packages/server/modules/workspacesCore/migrations/20250219100906_index_user_id_workspace_join_requests.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const WORKSPACE_JOIN_REQUESTS_TABLE = 'workspace_join_requests' diff --git a/packages/server/modules/workspacesCore/migrations/20250319092538_remove_defaultProjectRole.ts b/packages/server/modules/workspacesCore/migrations/20250319092538_remove_defaultProjectRole.ts index d7e55cd07..af1410a9d 100644 --- a/packages/server/modules/workspacesCore/migrations/20250319092538_remove_defaultProjectRole.ts +++ b/packages/server/modules/workspacesCore/migrations/20250319092538_remove_defaultProjectRole.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' const TABLE_NAME = 'workspaces' const COLUMN_NAME = 'defaultProjectRole' diff --git a/packages/server/modules/workspacesCore/migrations/20250514092509_add_missing_seats.ts b/packages/server/modules/workspacesCore/migrations/20250514092509_add_missing_seats.ts index a7d8233ef..79b006c2e 100644 --- a/packages/server/modules/workspacesCore/migrations/20250514092509_add_missing_seats.ts +++ b/packages/server/modules/workspacesCore/migrations/20250514092509_add_missing_seats.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' import { chunk } from 'lodash-es' type WorkspaceAcl = { diff --git a/packages/server/modules/workspacesCore/migrations/20250516130608_add_workspace_embed_options.ts b/packages/server/modules/workspacesCore/migrations/20250516130608_add_workspace_embed_options.ts index 7aba2e1b5..7522ec20d 100644 --- a/packages/server/modules/workspacesCore/migrations/20250516130608_add_workspace_embed_options.ts +++ b/packages/server/modules/workspacesCore/migrations/20250516130608_add_workspace_embed_options.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20250521100349_add_discoverable_workspace_auto_join.ts b/packages/server/modules/workspacesCore/migrations/20250521100349_add_discoverable_workspace_auto_join.ts index 9a2372a67..ad6cd9fb3 100644 --- a/packages/server/modules/workspacesCore/migrations/20250521100349_add_discoverable_workspace_auto_join.ts +++ b/packages/server/modules/workspacesCore/migrations/20250521100349_add_discoverable_workspace_auto_join.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/migrations/20250606043717_add_exclusive_workspace_option.ts b/packages/server/modules/workspacesCore/migrations/20250606043717_add_exclusive_workspace_option.ts index 6e78485f5..95e7d2cf9 100644 --- a/packages/server/modules/workspacesCore/migrations/20250606043717_add_exclusive_workspace_option.ts +++ b/packages/server/modules/workspacesCore/migrations/20250606043717_add_exclusive_workspace_option.ts @@ -1,4 +1,4 @@ -import { Knex } from 'knex' +import type { Knex } from 'knex' export async function up(knex: Knex): Promise { await knex.schema.alterTable('workspaces', (table) => { diff --git a/packages/server/modules/workspacesCore/repositories/rolesSeats.ts b/packages/server/modules/workspacesCore/repositories/rolesSeats.ts index ccb0c3883..e58104468 100644 --- a/packages/server/modules/workspacesCore/repositories/rolesSeats.ts +++ b/packages/server/modules/workspacesCore/repositories/rolesSeats.ts @@ -1,14 +1,14 @@ import { formatJsonArrayRecords } from '@/modules/shared/helpers/dbHelper' -import { +import type { GetWorkspaceRoleAndSeat, GetWorkspaceRolesAndSeats } from '@/modules/workspacesCore/domain/operations' -import { +import type { WorkspaceSeat, WorkspaceAcl as WorkspaceAclRecord } from '@/modules/workspacesCore/domain/types' import { WorkspaceAcl, WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { Knex } from 'knex' +import type { Knex } from 'knex' const tables = { workspaceSeats: (db: Knex) => db(WorkspaceSeats.name), diff --git a/packages/server/modules/workspacesCore/repositories/workspaces.ts b/packages/server/modules/workspacesCore/repositories/workspaces.ts index 5b6eb01b0..cf8e9f37d 100644 --- a/packages/server/modules/workspacesCore/repositories/workspaces.ts +++ b/packages/server/modules/workspacesCore/repositories/workspaces.ts @@ -1,9 +1,9 @@ -import { +import type { GetTotalWorkspaceCountFactory, GetUserWorkspaceCountFactory, GetUserWorkspaceSeatsFactory } from '@/modules/workspacesCore/domain/operations' -import { +import type { Workspace, WorkspaceAcl, WorkspaceSeat @@ -13,7 +13,7 @@ import { Workspaces, WorkspaceSeats } from '@/modules/workspacesCore/helpers/db' -import { Knex } from 'knex' +import type { Knex } from 'knex' const tables = { workspaces: (db: Knex) => db(Workspaces.name), diff --git a/packages/server/nodemon.json b/packages/server/nodemon.json new file mode 100644 index 000000000..0a0892099 --- /dev/null +++ b/packages/server/nodemon.json @@ -0,0 +1,21 @@ +{ + "signal": "SIGKILL", + "watch": [ + "./modules", + "./assets", + "./db", + "./healthchecks", + "./observability", + "./app.ts", + "./bootstrap.ts", + "./knexfile.ts", + "./root.js", + ".env", + "multiregion.json" + ], + "ext": "js,ts,graphql,env,gql", + "execMap": { + "ts": "node --experimental-strip-types --experimental-transform-types --import ./esmLoader.js" + }, + "delay": 1000 +} diff --git a/packages/server/observability/components/apollo/apolloSubscriptions.ts b/packages/server/observability/components/apollo/apolloSubscriptions.ts index 28845462f..5fa539a3b 100644 --- a/packages/server/observability/components/apollo/apolloSubscriptions.ts +++ b/packages/server/observability/components/apollo/apolloSubscriptions.ts @@ -3,7 +3,7 @@ import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' import type { ExecutionParams } from 'subscriptions-transport-ws' import { logWithErr } from '@/observability/utils/logLevels' import { BaseError } from '@/modules/shared/errors' -import { GraphQLError } from 'graphql' +import type { GraphQLError } from 'graphql' import { redactSensitiveVariables } from '@/observability/utils/redact' import type { Counter } from 'prom-client' import { diff --git a/packages/server/observability/components/apollo/metrics/apolloSubscriptionMonitoring.ts b/packages/server/observability/components/apollo/metrics/apolloSubscriptionMonitoring.ts index ced3453f8..c3d097f39 100644 --- a/packages/server/observability/components/apollo/metrics/apolloSubscriptionMonitoring.ts +++ b/packages/server/observability/components/apollo/metrics/apolloSubscriptionMonitoring.ts @@ -1,4 +1,5 @@ -import { Counter, Gauge, Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import { Counter, Gauge } from 'prom-client' let apolloSubscriptionMonitoringIsInitialized = false diff --git a/packages/server/observability/components/highFrequencyMetrics/heapSizeAndUsed.ts b/packages/server/observability/components/highFrequencyMetrics/heapSizeAndUsed.ts index 4d09bcdce..c977df648 100644 --- a/packages/server/observability/components/highFrequencyMetrics/heapSizeAndUsed.ts +++ b/packages/server/observability/components/highFrequencyMetrics/heapSizeAndUsed.ts @@ -16,7 +16,8 @@ limitations under the License. */ -import { Histogram, Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import { Histogram } from 'prom-client' import type { Metric } from '@/observability/components/highFrequencyMetrics/highfrequencyMonitoring' const NODEJS_HEAP_SIZE_TOTAL = 'nodejs_heap_size_total_bytes_high_frequency' diff --git a/packages/server/observability/components/highFrequencyMetrics/highfrequencyMonitoring.ts b/packages/server/observability/components/highFrequencyMetrics/highfrequencyMonitoring.ts index 48e69fda1..35dc1b380 100644 --- a/packages/server/observability/components/highFrequencyMetrics/highfrequencyMonitoring.ts +++ b/packages/server/observability/components/highFrequencyMetrics/highfrequencyMonitoring.ts @@ -4,7 +4,8 @@ * available to Prometheus via an histogram. */ -import { Histogram, Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import { Histogram } from 'prom-client' import { processCpuTotal } from '@/observability/components/highFrequencyMetrics/processCPUTotal' import { heapSizeAndUsed } from '@/observability/components/highFrequencyMetrics/heapSizeAndUsed' import { knexConnections } from '@/observability/components/highFrequencyMetrics/knexConnectionPool' diff --git a/packages/server/observability/components/highFrequencyMetrics/knexConnectionPool.ts b/packages/server/observability/components/highFrequencyMetrics/knexConnectionPool.ts index d0c28981e..686b94439 100644 --- a/packages/server/observability/components/highFrequencyMetrics/knexConnectionPool.ts +++ b/packages/server/observability/components/highFrequencyMetrics/knexConnectionPool.ts @@ -1,4 +1,5 @@ -import { Histogram, Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import { Histogram } from 'prom-client' import type { Metric } from '@/observability/components/highFrequencyMetrics/highfrequencyMonitoring' import type { Knex } from 'knex' import { numberOfFreeConnections } from '@/modules/shared/helpers/dbHelper' diff --git a/packages/server/observability/components/highFrequencyMetrics/processCPUTotal.ts b/packages/server/observability/components/highFrequencyMetrics/processCPUTotal.ts index 5e1fa9119..55e970b16 100644 --- a/packages/server/observability/components/highFrequencyMetrics/processCPUTotal.ts +++ b/packages/server/observability/components/highFrequencyMetrics/processCPUTotal.ts @@ -16,7 +16,8 @@ limitations under the License. */ -import { Histogram, Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import { Histogram } from 'prom-client' import type { Metric } from '@/observability/components/highFrequencyMetrics/highfrequencyMonitoring' const PROCESS_CPU_USER_SECONDS = 'process_cpu_user_seconds_total_high_frequency' diff --git a/packages/server/observability/components/httpServer/httpServerMonitoring.ts b/packages/server/observability/components/httpServer/httpServerMonitoring.ts index e084d6888..950b69499 100644 --- a/packages/server/observability/components/httpServer/httpServerMonitoring.ts +++ b/packages/server/observability/components/httpServer/httpServerMonitoring.ts @@ -1,6 +1,7 @@ /* istanbul ignore file */ import type { Nullable } from '@speckle/shared' -import { Registry, Gauge } from 'prom-client' +import type { Registry } from 'prom-client' +import { Gauge } from 'prom-client' import type { Server } from 'http' // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/packages/server/observability/components/knex/knexMonitoring.ts b/packages/server/observability/components/knex/knexMonitoring.ts index 004a3e827..e9bfffba2 100644 --- a/packages/server/observability/components/knex/knexMonitoring.ts +++ b/packages/server/observability/components/knex/knexMonitoring.ts @@ -1,7 +1,7 @@ import { type Registry, Summary, Counter, Gauge, Histogram } from 'prom-client' import { numberOfFreeConnections } from '@/modules/shared/helpers/dbHelper' import { type Knex } from 'knex' -import { Logger } from 'pino' +import type { Logger } from 'pino' import { toNDecimalPlaces } from '@/modules/core/utils/formatting' import { omit } from 'lodash-es' import { diff --git a/packages/server/observability/index.ts b/packages/server/observability/index.ts index e5f93e0a6..b3363d0d4 100644 --- a/packages/server/observability/index.ts +++ b/packages/server/observability/index.ts @@ -1,5 +1,6 @@ /* istanbul ignore file */ -import prometheusClient, { Registry } from 'prom-client' +import type { Registry } from 'prom-client' +import prometheusClient from 'prom-client' import promBundle from 'express-prom-bundle' import { initKnexPrometheusMetrics } from '@/observability/components/knex/knexMonitoring' diff --git a/packages/server/package.json b/packages/server/package.json index 09840606f..51d0701a5 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -18,8 +18,10 @@ "scripts": { "build": "tsc -p ./tsconfig.build.json", "build:watch": "tsc -p ./tsconfig.build.json -w", - "run:watch": "cross-env NODE_ENV=development LOG_PRETTY=true nodemon --signal SIGKILL --import=./esmLoader.js ./bin/www --watch ./dist --watch ./assets --watch ./bin/www --watch .env --watch multiregion.json -e js,ts,graphql,env,gql", - "dev": "concurrently \"npm:build:watch\" \"npm:run:watch\" \"yarn gqlgen:watch\" -n tsc,server,gqlgen", + "run:watch": "cross-env NODE_ENV=development LOG_PRETTY=true TSX=true nodemon ./run.ts", + "run:watch:js": "cross-env NODE_ENV=development LOG_PRETTY=true nodemon --import=./esmLoader.js ./bin/www --watch ./dist", + "dev": "concurrently \"npm:run:watch\" \"yarn gqlgen:watch\" -n server,gqlgen", + "dev:js": "concurrently \"npm:build:watch\" \"npm:run:watch:js\" \"yarn gqlgen:watch\" -n tsc,server,gqlgen", "build:clean": "rimraf ./dist && yarn build", "dev:clean": "yarn build:clean && yarn dev", "ts-mocha": "tsx ./bin/mocha", diff --git a/packages/server/run.ts b/packages/server/run.ts new file mode 100644 index 000000000..a97effaeb --- /dev/null +++ b/packages/server/run.ts @@ -0,0 +1,17 @@ +/* eslint-disable no-restricted-imports */ +import './bootstrap' +import { init, startHttp } from './app' +import { logger } from './observability/logging' + +init() + .then(({ app, graphqlServer, registers, server, readinessCheck }) => + startHttp({ app, graphqlServer, registers, server, readinessCheck }) + ) + .catch((err) => { + logger.error(err, 'Failed to start server. Exiting with non-zero exit code...') + + // kill it with fire 🔥 + process.exit(1) + }) + +// 💥 diff --git a/packages/server/scripts/moveProjectsBetweenServers.ts b/packages/server/scripts/moveProjectsBetweenServers.ts index f6fae3ddb..c06391996 100644 --- a/packages/server/scripts/moveProjectsBetweenServers.ts +++ b/packages/server/scripts/moveProjectsBetweenServers.ts @@ -46,7 +46,8 @@ import { getWorkspaceRolesFactory } from '@/modules/workspaces/repositories/workspaces' import { retry } from '@lifeomic/attempt' -import { Roles, StreamRoles } from '@speckle/shared' +import type { StreamRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import knex from 'knex' import { omit } from 'lodash-es' diff --git a/packages/server/test/assertionHelper.ts b/packages/server/test/assertionHelper.ts index 9cd83d11e..42e31d981 100644 --- a/packages/server/test/assertionHelper.ts +++ b/packages/server/test/assertionHelper.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { MaybeAsync, ensureError } from '@speckle/shared' +import type { MaybeAsync } from '@speckle/shared' +import { ensureError } from '@speckle/shared' import { AssertionError } from 'chai' export const expectToThrow = async (fn: () => MaybeAsync) => { diff --git a/packages/server/test/authHelper.ts b/packages/server/test/authHelper.ts index fe07edf17..4fdd16283 100644 --- a/packages/server/test/authHelper.ts +++ b/packages/server/test/authHelper.ts @@ -1,7 +1,8 @@ import { db } from '@/db/knex' -import { AllScopes, ServerRoles } from '@/modules/core/helpers/mainConstants' +import type { ServerRoles } from '@/modules/core/helpers/mainConstants' +import { AllScopes } from '@/modules/core/helpers/mainConstants' import { createRandomEmail } from '@/modules/core/helpers/testHelpers' -import { UserRecord } from '@/modules/core/helpers/types' +import type { UserRecord } from '@/modules/core/helpers/types' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { storeApiTokenFactory, @@ -14,12 +15,12 @@ import { ensureNoPrimaryEmailForUserFactory, findEmailFactory } from '@/modules/core/repositories/userEmails' +import type { UserWithOptionalRole } from '@/modules/core/repositories/users' import { countAdminUsersFactory, getUserFactory, storeUserAclFactory, - storeUserFactory, - UserWithOptionalRole + storeUserFactory } from '@/modules/core/repositories/users' import { createPersonalAccessTokenFactory } from '@/modules/core/services/tokens' import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails' @@ -36,7 +37,8 @@ import { finalizeInvitedServerRegistrationFactory } from '@/modules/serverinvite import { getEventBus } from '@/modules/shared/services/eventBus' import { createTestContext, testApolloServer } from '@/test/graphqlHelper' import { faker } from '@faker-js/faker' -import { ServerScope, wait } from '@speckle/shared' +import type { ServerScope } from '@speckle/shared' +import { wait } from '@speckle/shared' import cryptoRandomString from 'crypto-random-string' import { assign, isArray, isNumber, omit, times } from 'lodash-es' diff --git a/packages/server/test/blobHelper.ts b/packages/server/test/blobHelper.ts index 9e10ffecb..32c91fee6 100644 --- a/packages/server/test/blobHelper.ts +++ b/packages/server/test/blobHelper.ts @@ -1,5 +1,5 @@ import request from 'supertest' -import { Express } from 'express' +import type { Express } from 'express' /** * Upload a blob from a test runner diff --git a/packages/server/test/graphql/accessRequests.ts b/packages/server/test/graphql/accessRequests.ts index 9f8653999..7c1aa70d1 100644 --- a/packages/server/test/graphql/accessRequests.ts +++ b/packages/server/test/graphql/accessRequests.ts @@ -1,4 +1,4 @@ -import { +import type { CreateStreamAccessRequestMutation, CreateStreamAccessRequestMutationVariables, GetFullStreamAccessRequestQuery, @@ -10,7 +10,8 @@ import { UseStreamAccessRequestMutation, UseStreamAccessRequestMutationVariables } from '@/modules/core/graph/generated/graphql' -import { executeOperation, ExecuteOperationServer } from '@/test/graphqlHelper' +import type { ExecuteOperationServer } from '@/test/graphqlHelper' +import { executeOperation } from '@/test/graphqlHelper' import { gql } from 'graphql-tag' const basicStreamAccessRequestFragment = gql` diff --git a/packages/server/test/graphql/comments.ts b/packages/server/test/graphql/comments.ts index 4d21bc8dc..ace04cb33 100644 --- a/packages/server/test/graphql/comments.ts +++ b/packages/server/test/graphql/comments.ts @@ -1,4 +1,4 @@ -import { +import type { CreateCommentMutation, CreateCommentMutationVariables, CreateReplyMutation, @@ -8,7 +8,8 @@ import { GetCommentsQuery, GetCommentsQueryVariables } from '@/modules/core/graph/generated/graphql' -import { executeOperation, ExecuteOperationServer } from '@/test/graphqlHelper' +import type { ExecuteOperationServer } from '@/test/graphqlHelper' +import { executeOperation } from '@/test/graphqlHelper' import { gql } from 'graphql-tag' const commentWithRepliesFragment = gql` diff --git a/packages/server/test/graphql/commits.ts b/packages/server/test/graphql/commits.ts index cfea76d6a..ca3ed132c 100644 --- a/packages/server/test/graphql/commits.ts +++ b/packages/server/test/graphql/commits.ts @@ -1,4 +1,4 @@ -import { +import type { DeleteCommitsMutation, DeleteCommitsMutationVariables, MoveCommitsMutation, @@ -10,7 +10,8 @@ import { ReadStreamBranchCommitsQuery, ReadStreamBranchCommitsQueryVariables } from '@/modules/core/graph/generated/graphql' -import { executeOperation, ExecuteOperationServer } from '@/test/graphqlHelper' +import type { ExecuteOperationServer } from '@/test/graphqlHelper' +import { executeOperation } from '@/test/graphqlHelper' import gql from 'graphql-tag' const baseCommitFieldsFragment = gql` diff --git a/packages/server/test/graphql/streams.ts b/packages/server/test/graphql/streams.ts index c63456d6f..d5c125387 100644 --- a/packages/server/test/graphql/streams.ts +++ b/packages/server/test/graphql/streams.ts @@ -1,4 +1,4 @@ -import { +import type { LeaveStreamMutation, LeaveStreamMutationVariables, CreateStreamMutation, @@ -14,7 +14,8 @@ import { GetLimitedUserStreamsQuery, GetLimitedUserStreamsQueryVariables } from '@/modules/core/graph/generated/graphql' -import { executeOperation, ExecuteOperationServer } from '@/test/graphqlHelper' +import type { ExecuteOperationServer } from '@/test/graphqlHelper' +import { executeOperation } from '@/test/graphqlHelper' import gql from 'graphql-tag' export const basicStreamFieldsFragment = gql` diff --git a/packages/server/test/graphql/users.ts b/packages/server/test/graphql/users.ts index e4905beeb..4a5879b9e 100644 --- a/packages/server/test/graphql/users.ts +++ b/packages/server/test/graphql/users.ts @@ -1,4 +1,4 @@ -import { +import type { GetActiveUserQuery, GetActiveUserQueryVariables, GetAdminUsersQuery, @@ -10,7 +10,8 @@ import { RequestVerificationMutation, RequestVerificationMutationVariables } from '@/modules/core/graph/generated/graphql' -import { executeOperation, ExecuteOperationServer } from '@/test/graphqlHelper' +import type { ExecuteOperationServer } from '@/test/graphqlHelper' +import { executeOperation } from '@/test/graphqlHelper' import gql from 'graphql-tag' const baseUserFieldsFragment = gql` diff --git a/packages/server/test/graphqlHelper.ts b/packages/server/test/graphqlHelper.ts index 482300d52..0b3f8735b 100644 --- a/packages/server/test/graphqlHelper.ts +++ b/packages/server/test/graphqlHelper.ts @@ -1,22 +1,19 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import { DocumentNode, FormattedExecutionResult } from 'graphql' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' -import { TypedDocumentNode } from '@graphql-typed-document-node/core' +import type { DocumentNode, FormattedExecutionResult } from 'graphql' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { TypedDocumentNode } from '@graphql-typed-document-node/core' import { buildApolloServer, buildApolloSubscriptionServer } from '@/app' import { buildContext } from '@/modules/shared/middleware' import { Roles } from '@/modules/core/helpers/mainConstants' -import { - AllScopes, - buildManualPromise, - ensureError, +import type { MaybeAsync, MaybeNullOrUndefined, Optional, - ServerScope, - timeoutAt + ServerScope } from '@speckle/shared' +import { AllScopes, buildManualPromise, ensureError, timeoutAt } from '@speckle/shared' import { expect } from 'chai' -import { ApolloServer, GraphQLResponse } from '@apollo/server' +import type { ApolloServer, GraphQLResponse } from '@apollo/server' import { getUserFactory } from '@/modules/core/repositories/users' import { db } from '@/db/knex' import { get, pick, set } from 'lodash-es' diff --git a/packages/server/test/hooks.ts b/packages/server/test/hooks.ts index b482f70c3..03f4aa0f9 100644 --- a/packages/server/test/hooks.ts +++ b/packages/server/test/hooks.ts @@ -17,15 +17,8 @@ import { once } from 'events' import type http from 'http' import type express from 'express' import type net from 'net' -import { - ensureError, - MaybeAsync, - MaybeNullOrUndefined, - Nullable, - retry, - TIME_MS, - wait -} from '@speckle/shared' +import type { MaybeAsync, MaybeNullOrUndefined, Nullable } from '@speckle/shared' +import { ensureError, retry, TIME_MS, wait } from '@speckle/shared' import { getAvailableRegionKeysFactory, getFreeRegionKeysFactory @@ -42,12 +35,12 @@ import { getRegisteredRegionClients, initializeRegion } from '@/modules/multiregion/utils/dbSelector' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { isMultiRegionTestMode } from '@/test/speckle-helpers/regions' import { isMultiRegionEnabled } from '@/modules/multiregion/helpers' -import { GraphQLContext } from '@/modules/shared/helpers/typeHelper' -import { ApolloServer } from '@apollo/server' -import { ReadinessHandler } from '@/healthchecks/types' +import type { GraphQLContext } from '@/modules/shared/helpers/typeHelper' +import type { ApolloServer } from '@apollo/server' +import type { ReadinessHandler } from '@/healthchecks/types' import { set } from 'lodash-es' import { fixStackTrace } from '@/test/speckle-helpers/error' import { EnvironmentResourceError } from '@/modules/shared/errors' diff --git a/packages/server/test/notificationsHelper.ts b/packages/server/test/notificationsHelper.ts index ffcff590e..74ade674d 100644 --- a/packages/server/test/notificationsHelper.ts +++ b/packages/server/test/notificationsHelper.ts @@ -1,12 +1,13 @@ import { notificationsLogger as logger } from '@/observability/logging' -import { getQueue, NotificationJobResult } from '@/modules/notifications/services/queue' +import type { NotificationJobResult } from '@/modules/notifications/services/queue' +import { getQueue } from '@/modules/notifications/services/queue' import { EventEmitter } from 'events' -import { CompletedEventCallback, FailedEventCallback, JobId } from 'bull' +import type { CompletedEventCallback, FailedEventCallback, JobId } from 'bull' import { pick } from 'lodash-es' -import { Nullable } from '@speckle/shared' +import type { Nullable } from '@speckle/shared' import { getEventBus } from '@/modules/shared/services/eventBus' import { NotificationsEvents } from '@/modules/notifications/domain/events' -import { NotificationMessage } from '@/modules/notifications/helpers/types' +import type { NotificationMessage } from '@/modules/notifications/helpers/types' type AckEvent = { result?: NotificationJobResult diff --git a/packages/server/test/plugins/graphql.ts b/packages/server/test/plugins/graphql.ts index d568a0e6d..0a381728c 100644 --- a/packages/server/test/plugins/graphql.ts +++ b/packages/server/test/plugins/graphql.ts @@ -1,5 +1,5 @@ -import { Optional } from '@/modules/shared/helpers/typeHelper' -import { ExecuteOperationResponse } from '@/test/graphqlHelper' +import type { Optional } from '@/modules/shared/helpers/typeHelper' +import type { ExecuteOperationResponse } from '@/test/graphqlHelper' import { AssertionError } from 'chai' import { isString } from 'lodash-es' diff --git a/packages/server/test/redisHelper.ts b/packages/server/test/redisHelper.ts index fecb27940..39a78541d 100644 --- a/packages/server/test/redisHelper.ts +++ b/packages/server/test/redisHelper.ts @@ -1,6 +1,6 @@ import { redisCacheProviderFactory } from '@/modules/shared/utils/caching' -import { Optional } from '@speckle/shared' -import Redis from 'ioredis' +import type { Optional } from '@speckle/shared' +import type Redis from 'ioredis' import MockRedis from 'ioredis-mock' let client: Optional = undefined diff --git a/packages/server/test/speckle-helpers/activityStreamHelper.ts b/packages/server/test/speckle-helpers/activityStreamHelper.ts index 6cac01be8..348f1bcfd 100644 --- a/packages/server/test/speckle-helpers/activityStreamHelper.ts +++ b/packages/server/test/speckle-helpers/activityStreamHelper.ts @@ -1,4 +1,4 @@ -import { StreamActivityRecord } from '@/modules/activitystream/helpers/types' +import type { StreamActivityRecord } from '@/modules/activitystream/helpers/types' import { StreamActivity } from '@/modules/core/dbSchema' export async function getStreamActivities( diff --git a/packages/server/test/speckle-helpers/automationHelper.ts b/packages/server/test/speckle-helpers/automationHelper.ts index 52e1cde53..5cb96abb1 100644 --- a/packages/server/test/speckle-helpers/automationHelper.ts +++ b/packages/server/test/speckle-helpers/automationHelper.ts @@ -8,26 +8,26 @@ import { storeAutomationTokenFactory, upsertAutomationRunFactory } from '@/modules/automate/repositories/automations' +import type { CreateAutomationRevisionDeps } from '@/modules/automate/services/automationManagement' import { - CreateAutomationRevisionDeps, createAutomationFactory, createAutomationRevisionFactory } from '@/modules/automate/services/automationManagement' import { createStoredAuthCodeFactory } from '@/modules/automate/services/authCode' import { getInmemoryRedisClient } from '@/test/redisHelper' import cryptoRandomString from 'crypto-random-string' -import { createAutomation as clientCreateAutomation } from '@/modules/automate/clients/executionEngine' +import type { createAutomation as clientCreateAutomation } from '@/modules/automate/clients/executionEngine' import { getBranchesByIdsFactory, getBranchLatestCommitsFactory, getLatestStreamBranchFactory } from '@/modules/core/repositories/branches' -import { +import type { ProjectAutomationCreateInput, ProjectAutomationRevisionCreateInput } from '@/modules/core/graph/generated/graphql' -import { Automate } from '@speckle/shared' +import type { Automate } from '@speckle/shared' import { truncateTables } from '@/test/hooks' import { AutomationRevisions, @@ -49,7 +49,7 @@ import { validateStreamAccessFactory } from '@/modules/core/services/streams/acc import { authorizeResolver } from '@/modules/shared' import { getEventBus } from '@/modules/shared/services/eventBus' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' -import { Knex } from 'knex' +import type { Knex } from 'knex' import { createTestAutomationRunFactory } from '@/modules/automate/services/trigger' const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver }) diff --git a/packages/server/test/speckle-helpers/branchHelper.ts b/packages/server/test/speckle-helpers/branchHelper.ts index 51b0bb2b6..84c862b03 100644 --- a/packages/server/test/speckle-helpers/branchHelper.ts +++ b/packages/server/test/speckle-helpers/branchHelper.ts @@ -5,8 +5,8 @@ import { import { createBranchAndNotifyFactory } from '@/modules/core/services/branch/management' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser } from '@/test/authHelper' -import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { omit } from 'lodash-es' export type BasicTestBranch = { diff --git a/packages/server/test/speckle-helpers/commentHelper.ts b/packages/server/test/speckle-helpers/commentHelper.ts index c99cd0106..b4ec09002 100644 --- a/packages/server/test/speckle-helpers/commentHelper.ts +++ b/packages/server/test/speckle-helpers/commentHelper.ts @@ -1,5 +1,5 @@ import { getBlobsFactory } from '@/modules/blobstorage/repositories' -import { CommentRecord } from '@/modules/comments/helpers/types' +import type { CommentRecord } from '@/modules/comments/helpers/types' import { insertCommentLinksFactory, insertCommentsFactory, diff --git a/packages/server/test/speckle-helpers/commitHelper.ts b/packages/server/test/speckle-helpers/commitHelper.ts index 15d9004e0..f8c6298f0 100644 --- a/packages/server/test/speckle-helpers/commitHelper.ts +++ b/packages/server/test/speckle-helpers/commitHelper.ts @@ -20,8 +20,8 @@ import { import { createObjectFactory } from '@/modules/core/services/objects/management' import { getProjectDbClient } from '@/modules/multiregion/utils/dbSelector' import { getEventBus } from '@/modules/shared/services/eventBus' -import { BasicTestUser } from '@/test/authHelper' -import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import cryptoRandomString from 'crypto-random-string' export type BasicTestCommit = { diff --git a/packages/server/test/speckle-helpers/email.ts b/packages/server/test/speckle-helpers/email.ts index 4f4863fb4..0bfea9025 100644 --- a/packages/server/test/speckle-helpers/email.ts +++ b/packages/server/test/speckle-helpers/email.ts @@ -1,6 +1,6 @@ import { EmailsEvents } from '@/modules/emails/domain/events' import { getEventBus } from '@/modules/shared/services/eventBus' -import { MaybeAsync } from '@speckle/shared' +import type { MaybeAsync } from '@speckle/shared' import type Mail from 'nodemailer/lib/mailer' type ListenOptions = { diff --git a/packages/server/test/speckle-helpers/inviteHelper.ts b/packages/server/test/speckle-helpers/inviteHelper.ts index be2ecd212..2f65fe1cd 100644 --- a/packages/server/test/speckle-helpers/inviteHelper.ts +++ b/packages/server/test/speckle-helpers/inviteHelper.ts @@ -1,4 +1,5 @@ -import { MaybeAsync, Roles, StreamRoles } from '@speckle/shared' +import type { MaybeAsync, StreamRoles } from '@speckle/shared' +import { Roles } from '@speckle/shared' import { buildUserTarget } from '@/modules/serverinvites/helpers/core' import { @@ -11,8 +12,8 @@ import { updateAllInviteTargetsFactory } from '@/modules/serverinvites/repositories/serverInvites' import { createAndSendInviteFactory } from '@/modules/serverinvites/services/creation' -import { BasicTestUser } from '@/test/authHelper' -import { BasicTestStream } from '@/test/speckle-helpers/streamHelper' +import type { BasicTestUser } from '@/test/authHelper' +import type { BasicTestStream } from '@/test/speckle-helpers/streamHelper' import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection' import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents' import { getEventBus } from '@/modules/shared/services/eventBus' @@ -20,10 +21,11 @@ import { ProjectInviteResourceType, ServerInviteResourceType } from '@/modules/serverinvites/domain/constants' -import { sendEmail, SendEmailParams } from '@/modules/emails/services/sending' +import type { SendEmailParams } from '@/modules/emails/services/sending' +import { sendEmail } from '@/modules/emails/services/sending' import { db } from '@/db/knex' import { expect } from 'chai' -import { +import type { PrimaryInviteResourceTarget, ServerInviteRecord, ServerInviteResourceTarget diff --git a/packages/server/test/speckle-helpers/regions.ts b/packages/server/test/speckle-helpers/regions.ts index aedf4c210..af552f20d 100644 --- a/packages/server/test/speckle-helpers/regions.ts +++ b/packages/server/test/speckle-helpers/regions.ts @@ -6,7 +6,7 @@ import { isTestEnv, shouldRunTestsInMultiregionMode } from '@/modules/shared/helpers/envHelper' -import { BasicTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' import { getRegionKeys, getMainTestRegionClient, diff --git a/packages/server/test/speckle-helpers/streamHelper.ts b/packages/server/test/speckle-helpers/streamHelper.ts index 57a79b789..1cab20d75 100644 --- a/packages/server/test/speckle-helpers/streamHelper.ts +++ b/packages/server/test/speckle-helpers/streamHelper.ts @@ -1,7 +1,7 @@ import { db } from '@/db/knex' import { StreamAcl } from '@/modules/core/dbSchema' import { mapDbToGqlProjectVisibility } from '@/modules/core/helpers/project' -import { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' +import type { StreamAclRecord, StreamRecord } from '@/modules/core/helpers/types' import { createBranchFactory } from '@/modules/core/repositories/branches' import { getServerInfoFactory } from '@/modules/core/repositories/server' import { @@ -54,14 +54,15 @@ import { } from '@/modules/serverinvites/services/processing' import { inviteUsersToProjectFactory } from '@/modules/serverinvites/services/projectInviteManagement' import { authorizeResolver } from '@/modules/shared' -import { Nullable } from '@/modules/shared/helpers/typeHelper' +import type { Nullable } from '@/modules/shared/helpers/typeHelper' import { getEventBus } from '@/modules/shared/services/eventBus' import { getDefaultRegionFactory } from '@/modules/workspaces/repositories/regions' import { createWorkspaceProjectFactory } from '@/modules/workspaces/services/projects' -import { BasicTestUser } from '@/test/authHelper' +import type { BasicTestUser } from '@/test/authHelper' import { ProjectVisibility } from '@/modules/core/graph/generated/graphql' import { faker } from '@faker-js/faker' -import { ensureError, Roles, StreamRoles } from '@speckle/shared' +import type { StreamRoles } from '@speckle/shared' +import { ensureError, Roles } from '@speckle/shared' import { omit } from 'lodash-es' const getServerInfo = getServerInfoFactory({ db }) diff --git a/packages/server/test/speckle-helpers/workspaces.ts b/packages/server/test/speckle-helpers/workspaces.ts index 3fc32cb0c..ccbfbd0db 100644 --- a/packages/server/test/speckle-helpers/workspaces.ts +++ b/packages/server/test/speckle-helpers/workspaces.ts @@ -1,5 +1,5 @@ -import { UpsertWorkspace } from '@/modules/workspaces/domain/operations' -import { Workspace } from '@/modules/workspacesCore/domain/types' +import type { UpsertWorkspace } from '@/modules/workspaces/domain/operations' +import type { Workspace } from '@/modules/workspacesCore/domain/types' import cryptoRandomString from 'crypto-random-string' export const createAndStoreTestWorkspaceFactory = diff --git a/packages/server/tsconfig.json b/packages/server/tsconfig.json index 025f58aad..2c2d459c3 100644 --- a/packages/server/tsconfig.json +++ b/packages/server/tsconfig.json @@ -115,6 +115,7 @@ "test/**/*", "type-augmentations/**/*", "app.ts", + "run.ts", "bootstrap.js", "knexfile.ts", "codegen.ts" diff --git a/packages/server/type-augmentations/express.d.ts b/packages/server/type-augmentations/express.d.ts index f8c75c9e0..041ce8d83 100644 --- a/packages/server/type-augmentations/express.d.ts +++ b/packages/server/type-augmentations/express.d.ts @@ -1,5 +1,5 @@ -import { AuthContext } from '@/modules/shared/authz' -import { mixpanel } from '@/modules/shared/utils/mixpanel' +import type { AuthContext } from '@/modules/shared/authz' +import type { mixpanel } from '@/modules/shared/utils/mixpanel' declare module 'express' { interface Request {