diff --git a/.eslintrc.global.cjs b/.eslintrc.global.cjs index daf5656e217..e6243d1a0d8 100644 --- a/.eslintrc.global.cjs +++ b/.eslintrc.global.cjs @@ -94,15 +94,7 @@ module.exports = { ], '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-empty-function': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', - { - vars: 'all', - varsIgnorePattern: '^_', - args: 'after-used', - argsIgnorePattern: '^_', - }, - ], + '@typescript-eslint/no-unused-vars': 'off', }, }, { diff --git a/packages/twenty-front/src/modules/command-menu/pages/message-thread/components/CommandMenuMessageThreadPage.tsx b/packages/twenty-front/src/modules/command-menu/pages/message-thread/components/CommandMenuMessageThreadPage.tsx index ac36744987a..cd999500ab5 100644 --- a/packages/twenty-front/src/modules/command-menu/pages/message-thread/components/CommandMenuMessageThreadPage.tsx +++ b/packages/twenty-front/src/modules/command-menu/pages/message-thread/components/CommandMenuMessageThreadPage.tsx @@ -10,9 +10,8 @@ import { useEmailThreadInCommandMenu } from '@/command-menu/pages/message-thread import { messageThreadComponentState } from '@/command-menu/pages/message-thread/states/messageThreadComponentState'; import { useIsMobile } from '@/ui/utilities/responsive/hooks/useIsMobile'; import { useSetRecoilComponentState } from '@/ui/utilities/state/component-state/hooks/useSetRecoilComponentState'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { ConnectedAccountProvider } from 'twenty-shared/types'; -import { isDefined } from 'twenty-shared/utils'; +import { assertUnreachable, isDefined } from 'twenty-shared/utils'; import { IconArrowBackUp } from 'twenty-ui/display'; import { Button } from 'twenty-ui/input'; diff --git a/packages/twenty-front/src/modules/object-record/cache/utils/isObjectRecordConnection.ts b/packages/twenty-front/src/modules/object-record/cache/utils/isObjectRecordConnection.ts index a61501a7995..5a21274ecf1 100644 --- a/packages/twenty-front/src/modules/object-record/cache/utils/isObjectRecordConnection.ts +++ b/packages/twenty-front/src/modules/object-record/cache/utils/isObjectRecordConnection.ts @@ -1,6 +1,6 @@ import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { RecordGqlConnection } from '@/object-record/graphql/types/RecordGqlConnection'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; +import { assertUnreachable } from 'twenty-shared/utils'; import { RelationType } from '~/generated-metadata/graphql'; export const isObjectRecordConnection = ( diff --git a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts index de113906ed6..f1a3c6754c6 100644 --- a/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts +++ b/packages/twenty-front/src/modules/object-record/utils/generateEmptyFieldValue.ts @@ -1,6 +1,6 @@ import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; import { FieldActorValue } from '@/object-record/record-field/types/FieldMetadata'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; +import { assertUnreachable } from 'twenty-shared/utils'; import { FieldMetadataType, RelationType } from '~/generated-metadata/graphql'; export type GenerateEmptyFieldValueArgs = { diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsContainer.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsContainer.tsx index 5a6403d3f10..daad77c8034 100644 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsContainer.tsx +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsCalendarChannelsContainer.tsx @@ -7,7 +7,6 @@ import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMembe import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { SettingsAccountsCalendarChannelDetails } from '@/settings/accounts/components/SettingsAccountsCalendarChannelDetails'; -import { SettingsAccountsCalendarChannelsGeneral } from '@/settings/accounts/components/SettingsAccountsCalendarChannelsGeneral'; import { SettingsNewAccountSection } from '@/settings/accounts/components/SettingsNewAccountSection'; import { SETTINGS_ACCOUNT_CALENDAR_CHANNELS_TAB_LIST_COMPONENT_ID } from '@/settings/accounts/constants/SettingsAccountCalendarChannelsTabListComponentId'; import { TabList } from '@/ui/layout/tab-list/components/TabList'; @@ -82,9 +81,10 @@ export const SettingsAccountsCalendarChannelsContainer = () => { )} ))} - {false && activeTabId === 'general' && ( + {/* TODO: remove or keep? */} + {/* {activeTabId === 'general' && ( - )} + )} */} ); }; diff --git a/packages/twenty-front/src/modules/workflow/utils/__tests__/assertUnreachable.test.ts b/packages/twenty-front/src/modules/workflow/utils/__tests__/assertUnreachable.test.ts deleted file mode 100644 index 7c800a24783..00000000000 --- a/packages/twenty-front/src/modules/workflow/utils/__tests__/assertUnreachable.test.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; - -it('throws when argument is not never', () => { - expect(() => { - assertUnreachable(42 as never); - }).toThrow(); -}); - -it('throws with the provided error message when argument is not never', () => { - expect(() => { - assertUnreachable(42 as never, 'Custom error!'); - }).toThrow('Custom error!'); -}); diff --git a/packages/twenty-front/src/modules/workflow/utils/assertUnreachable.ts b/packages/twenty-front/src/modules/workflow/utils/assertUnreachable.ts deleted file mode 100644 index 042337aeebf..00000000000 --- a/packages/twenty-front/src/modules/workflow/utils/assertUnreachable.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const assertUnreachable = (x: never, errorMessage?: string): never => { - throw new Error(errorMessage ?? "Didn't expect to get here."); -}; diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeIcon.tsx b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeIcon.tsx index d7dd470c0c9..aefeb6a1fe9 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeIcon.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/components/WorkflowDiagramStepNodeIcon.tsx @@ -1,8 +1,8 @@ -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { WorkflowDiagramStepNodeData } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; import { getWorkflowNodeIconKey } from '@/workflow/workflow-diagram/utils/getWorkflowNodeIconKey'; import { useTheme } from '@emotion/react'; import styled from '@emotion/styled'; +import { assertUnreachable } from 'twenty-shared/utils'; import { useIcons } from 'twenty-ui/display'; const StyledStepNodeLabelIconContainer = styled.div` diff --git a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts index 3826807d68f..b30a3ef0347 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-diagram/utils/getWorkflowDiagramTriggerNode.ts @@ -1,12 +1,11 @@ import { WorkflowTrigger } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { splitWorkflowTriggerEventName } from '@/workflow/utils/splitWorkflowTriggerEventName'; import { WorkflowDiagramStepNodeData } from '@/workflow/workflow-diagram/types/WorkflowDiagram'; import { DATABASE_TRIGGER_TYPES } from '@/workflow/workflow-trigger/constants/DatabaseTriggerTypes'; import { TRIGGER_STEP_ID } from '@/workflow/workflow-trigger/constants/TriggerStepId'; import { getTriggerIcon } from '@/workflow/workflow-trigger/utils/getTriggerIcon'; import { Node } from '@xyflow/react'; -import { isDefined } from 'twenty-shared/utils'; +import { assertUnreachable, isDefined } from 'twenty-shared/utils'; export const getWorkflowDiagramTriggerNode = ({ trigger, diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx index afa3a02e9d4..0fd9d0daa2f 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowRunStepNodeDetail.tsx @@ -3,7 +3,6 @@ import { WorkflowRunStepStatus, WorkflowTrigger, } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { getStepDefinitionOrThrow } from '@/workflow/utils/getStepDefinitionOrThrow'; import { WorkflowEditActionAiAgent } from '@/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent'; import { WorkflowActionServerlessFunction } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction'; @@ -19,7 +18,7 @@ import { WorkflowEditTriggerCronForm } from '@/workflow/workflow-trigger/compone import { WorkflowEditTriggerDatabaseEventForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm'; import { WorkflowEditTriggerManualForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerManualForm'; import { WorkflowEditTriggerWebhookForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm'; -import { isDefined } from 'twenty-shared/utils'; +import { assertUnreachable, isDefined } from 'twenty-shared/utils'; type WorkflowRunStepNodeDetailProps = { stepId: string; diff --git a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx index 8d0285b50d0..5c1e7803e75 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx +++ b/packages/twenty-front/src/modules/workflow/workflow-steps/components/WorkflowStepDetail.tsx @@ -1,5 +1,4 @@ import { WorkflowAction, WorkflowTrigger } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { getStepDefinitionOrThrow } from '@/workflow/utils/getStepDefinitionOrThrow'; import { WorkflowEditActionAiAgent } from '@/workflow/workflow-steps/workflow-actions/ai-agent-action/components/WorkflowEditActionAiAgent'; import { WorkflowActionServerlessFunction } from '@/workflow/workflow-steps/workflow-actions/code-action/components/WorkflowActionServerlessFunction'; @@ -15,7 +14,7 @@ import { WorkflowEditTriggerCronForm } from '@/workflow/workflow-trigger/compone import { WorkflowEditTriggerDatabaseEventForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerDatabaseEventForm'; import { WorkflowEditTriggerManualForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerManualForm'; import { WorkflowEditTriggerWebhookForm } from '@/workflow/workflow-trigger/components/WorkflowEditTriggerWebhookForm'; -import { isDefined } from 'twenty-shared/utils'; +import { assertUnreachable, isDefined } from 'twenty-shared/utils'; type WorkflowStepDetailProps = { stepId: string; diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getCronTriggerDefaultSettings.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getCronTriggerDefaultSettings.ts index b6ece559d64..5d087a2f5f0 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getCronTriggerDefaultSettings.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getCronTriggerDefaultSettings.ts @@ -1,6 +1,6 @@ -import { CronTriggerInterval } from '@/workflow/workflow-trigger/constants/CronTriggerIntervalOptions'; import { WorkflowCronTrigger } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; +import { CronTriggerInterval } from '@/workflow/workflow-trigger/constants/CronTriggerIntervalOptions'; +import { assertUnreachable } from 'twenty-shared/utils'; const DEFAULT_CRON_PATTERN = '0 */1 * * *'; // Every hour diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts index f0f33f26a59..f868cb1cada 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings.ts @@ -3,8 +3,8 @@ import { WorkflowManualTriggerAvailability, WorkflowManualTriggerSettings, } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { COMMAND_MENU_DEFAULT_ICON } from '@/workflow/workflow-trigger/constants/CommandMenuDefaultIcon'; +import { assertUnreachable } from 'twenty-shared/utils'; export const getManualTriggerDefaultSettings = ({ availability, diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts index 594d210cdfe..9125089c56e 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getTriggerDefaultDefinition.ts @@ -4,11 +4,10 @@ import { WorkflowTrigger, WorkflowTriggerType, } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { DATABASE_TRIGGER_TYPES } from '@/workflow/workflow-trigger/constants/DatabaseTriggerTypes'; import { getManualTriggerDefaultSettings } from '@/workflow/workflow-trigger/utils/getManualTriggerDefaultSettings'; -import { isDefined } from 'twenty-shared/utils'; import { getRootStepIds } from '@/workflow/workflow-trigger/utils/getRootStepIds'; +import { assertUnreachable, isDefined } from 'twenty-shared/utils'; // TODO: This needs to be migrated to the server export const getTriggerDefaultDefinition = ({ diff --git a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getWebhookTriggerDefaultSettings.ts b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getWebhookTriggerDefaultSettings.ts index 26b48ce2b00..4f1edd47d4e 100644 --- a/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getWebhookTriggerDefaultSettings.ts +++ b/packages/twenty-front/src/modules/workflow/workflow-trigger/utils/getWebhookTriggerDefaultSettings.ts @@ -1,6 +1,6 @@ import { WorkflowWebhookTrigger } from '@/workflow/types/Workflow'; -import { assertUnreachable } from '@/workflow/utils/assertUnreachable'; import { WebhookHttpMethods } from '@/workflow/workflow-trigger/constants/WebhookTriggerHttpMethodOptions'; +import { assertUnreachable } from 'twenty-shared/utils'; export const getWebhookTriggerDefaultSettings = ( webhookHttpMethods: WebhookHttpMethods, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/graphql-query-runner-exception-handler.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/graphql-query-runner-exception-handler.util.ts index 4a9590c7b99..f98ffc39d0a 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/graphql-query-runner-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/graphql-query-runner-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { type GraphqlQueryRunnerException, GraphqlQueryRunnerExceptionCode, @@ -31,9 +33,7 @@ export const graphqlQueryRunnerExceptionHandler = ( case GraphqlQueryRunnerExceptionCode.MISSING_SYSTEM_FIELD: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } }; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-exception-handler.util.ts b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-exception-handler.util.ts index c9d4291d48d..2360b65fb8d 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-query-runner/utils/workspace-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { type WorkspaceQueryRunnerException, WorkspaceQueryRunnerExceptionCode, @@ -27,9 +29,7 @@ export const workspaceExceptionHandler = ( case WorkspaceQueryRunnerExceptionCode.INTERNAL_SERVER_ERROR: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } }; diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts index b5d2c06668d..8670a8ef522 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-many-resolver.factory.ts @@ -26,7 +26,7 @@ export class DeleteManyResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts index ce6b779220b..ab781f2dee3 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/delete-one-resolver.factory.ts @@ -25,7 +25,7 @@ export class DeleteOneResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-many-resolver.factory.ts index d3fa3a1cc4e..386e715997a 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-many-resolver.factory.ts @@ -26,7 +26,7 @@ export class DestroyManyResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-one-resolver.factory.ts index 3a539373603..dd30495e227 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/destroy-one-resolver.factory.ts @@ -26,7 +26,7 @@ export class DestroyOneResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts index f5be8aab968..1c2f1fd01aa 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/find-duplicates-resolver.factory.ts @@ -26,7 +26,7 @@ export class FindDuplicatesResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-many-resolver.factory.ts index a97eaa6d4b2..1f847411954 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-many-resolver.factory.ts @@ -26,7 +26,7 @@ export class RestoreManyResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-one-resolver.factory.ts index e984bd1b8da..3ee00f92389 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/restore-one-resolver.factory.ts @@ -26,7 +26,7 @@ export class RestoreOneResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts index d0d44c55c88..c13edb3d7f5 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-many-resolver.factory.ts @@ -24,7 +24,7 @@ export class UpdateManyResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts index 4012d3dfa21..76869410065 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-resolver-builder/factories/update-one-resolver.factory.ts @@ -26,7 +26,7 @@ export class UpdateOneResolverFactory ): Resolver { const internalContext = context; - return async (_source, args, context, info) => { + return async (_source, args, _context, info) => { const options: WorkspaceQueryRunnerOptions = { authContext: internalContext.authContext, info, diff --git a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts index 690eb3f9a66..960c1c26546 100644 --- a/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts +++ b/packages/twenty-server/src/engine/api/graphql/workspace-schema-builder/type-definitions.generator.ts @@ -8,7 +8,6 @@ import { CompositeObjectTypeDefinitionFactory } from 'src/engine/api/graphql/wor import { EnumTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/enum-type-definition.factory'; import { ExtendObjectTypeDefinitionV2Factory } from 'src/engine/api/graphql/workspace-schema-builder/factories/extend-object-type-definition-v2.factory'; import { RelationConnectInputTypeDefinitionFactory } from 'src/engine/api/graphql/workspace-schema-builder/factories/relation-connect-input-type-definition.factory'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @@ -42,7 +41,6 @@ export class TypeDefinitionsGenerator { private readonly connectionTypeDefinitionFactory: ConnectionTypeDefinitionFactory, private readonly extendObjectTypeDefinitionV2Factory: ExtendObjectTypeDefinitionV2Factory, private readonly relationConnectInputTypeDefinitionFactory: RelationConnectInputTypeDefinitionFactory, - private readonly featureFlagService: FeatureFlagService, ) {} async generate( diff --git a/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts b/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts index 45888bb1349..d79e0f3cd19 100644 --- a/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts +++ b/packages/twenty-server/src/engine/core-modules/ai/services/tool.service.ts @@ -504,7 +504,7 @@ export class ToolService { } } - private async destroyRecord( + private async _destroyRecord( objectName: string, parameters: Record, workspaceId: string, @@ -618,7 +618,7 @@ export class ToolService { } } - private async destroyManyRecords( + private async _destroyManyRecords( objectName: string, parameters: Record, workspaceId: string, diff --git a/packages/twenty-server/src/engine/core-modules/api-key/api-key-role.service.ts b/packages/twenty-server/src/engine/core-modules/api-key/api-key-role.service.ts index 52c92c9a4b9..08206327015 100644 --- a/packages/twenty-server/src/engine/core-modules/api-key/api-key-role.service.ts +++ b/packages/twenty-server/src/engine/core-modules/api-key/api-key-role.service.ts @@ -8,7 +8,6 @@ import { ApiKeyException, ApiKeyExceptionCode, } from 'src/engine/core-modules/api-key/api-key.exception'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { type RoleDTO } from 'src/engine/metadata-modules/role/dtos/role.dto'; import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; @@ -22,8 +21,7 @@ export class ApiKeyRoleService { private readonly roleTargetsRepository: Repository, @InjectRepository(RoleEntity, 'core') private readonly roleRepository: Repository, - @InjectRepository(Workspace, 'core') - private readonly workspaceRepository: Repository, + @InjectRepository(ApiKey, 'core') private readonly apiKeyRepository: Repository, private readonly workspacePermissionsCacheService: WorkspacePermissionsCacheService, diff --git a/packages/twenty-server/src/engine/core-modules/api-key/utils/api-key-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/core-modules/api-key/utils/api-key-graphql-api-exception-handler.util.ts index 3908324f69c..e8a173d88b9 100644 --- a/packages/twenty-server/src/engine/core-modules/api-key/utils/api-key-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/core-modules/api-key/utils/api-key-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ApiKeyException, ApiKeyExceptionCode, @@ -26,9 +28,7 @@ export const apiKeyGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.spec.ts index 2284c344e87..7fa803ab7d6 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/google-apis.service.spec.ts @@ -81,7 +81,7 @@ describe('GoogleAPIsService', () => { useValue: { getRepositoryForWorkspace: jest .fn() - .mockImplementation((workspaceId, entity) => { + .mockImplementation((_workspaceId, entity) => { if (entity === 'connectedAccount') return mockConnectedAccountRepository; if (entity === 'calendarChannel') diff --git a/packages/twenty-server/src/engine/core-modules/auth/services/microsoft-apis.service.spec.ts b/packages/twenty-server/src/engine/core-modules/auth/services/microsoft-apis.service.spec.ts index 6191f3d5540..64eb7ed173c 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/services/microsoft-apis.service.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/services/microsoft-apis.service.spec.ts @@ -82,7 +82,7 @@ describe('MicrosoftAPIsService', () => { useValue: { getRepositoryForWorkspace: jest .fn() - .mockImplementation((workspaceId, entity) => { + .mockImplementation((_workspaceId, entity) => { if (entity === 'connectedAccount') return mockConnectedAccountRepository; if (entity === 'calendarChannel') diff --git a/packages/twenty-server/src/engine/core-modules/billing/commands/billing-sync-plans-data.command.ts b/packages/twenty-server/src/engine/core-modules/billing/commands/billing-sync-plans-data.command.ts index d0b9f2a15cc..8e76fb12a86 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/commands/billing-sync-plans-data.command.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/commands/billing-sync-plans-data.command.ts @@ -137,7 +137,7 @@ export class BillingSyncPlansDataCommand extends MigrationCommandRunner { } override async runMigrationCommand( - passedParams: string[], + _passedParams: string[], options: MigrationCommandOptions, ): Promise { const billingMeters = await this.stripeBillingMeterService.getAllMeters(); diff --git a/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe-sdk/mocks/stripe-sdk.mock.ts b/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe-sdk/mocks/stripe-sdk.mock.ts index 408bd1ecbef..99376521324 100644 --- a/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe-sdk/mocks/stripe-sdk.mock.ts +++ b/packages/twenty-server/src/engine/core-modules/billing/stripe/stripe-sdk/mocks/stripe-sdk.mock.ts @@ -3,7 +3,7 @@ import type Stripe from 'stripe'; export class StripeSDKMock { - constructor(private readonly apiKey: string) {} + constructor(private readonly _apiKey: string) {} customers = { update: (_id: string, _params?: Stripe.CustomerUpdateParams) => { diff --git a/packages/twenty-server/src/engine/core-modules/cache-lock/with-lock.decorator.ts b/packages/twenty-server/src/engine/core-modules/cache-lock/with-lock.decorator.ts index 5f25ca0d9d1..b9f8a81c8a0 100644 --- a/packages/twenty-server/src/engine/core-modules/cache-lock/with-lock.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/cache-lock/with-lock.decorator.ts @@ -11,7 +11,7 @@ export const WithLock = ( ): MethodDecorator => { const injectCacheLockService = Inject(CacheLockService); - return function (target, propertyKey, descriptor: PropertyDescriptor) { + return function (target, _propertyKey, descriptor: PropertyDescriptor) { injectCacheLockService(target, 'cacheLockService'); const originalMethod = descriptor.value; diff --git a/packages/twenty-server/src/engine/core-modules/cache-storage/commands/flush-cache.command.ts b/packages/twenty-server/src/engine/core-modules/cache-storage/commands/flush-cache.command.ts index 98b9717cf9a..11fbd016547 100644 --- a/packages/twenty-server/src/engine/core-modules/cache-storage/commands/flush-cache.command.ts +++ b/packages/twenty-server/src/engine/core-modules/cache-storage/commands/flush-cache.command.ts @@ -21,7 +21,7 @@ export class FlushCacheCommand extends CommandRunner { } async run( - passedParams: string[], + _passedParams: string[], // eslint-disable-next-line @typescript-eslint/no-explicit-any options?: Record, ): Promise { diff --git a/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts index 113f93f053d..396b8e7da23 100644 --- a/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/google-recaptcha.driver.ts @@ -9,12 +9,12 @@ import { } from 'src/engine/core-modules/captcha/interfaces'; export class GoogleRecaptchaDriver implements CaptchaDriver { - private readonly siteKey: string; + private readonly _siteKey: string; private readonly secretKey: string; private readonly httpService: AxiosInstance; - constructor(private options: CaptchaDriverOptions) { - this.siteKey = options.siteKey; - this.secretKey = options.secretKey; + constructor(private _options: CaptchaDriverOptions) { + this._siteKey = _options.siteKey; + this.secretKey = _options.secretKey; this.httpService = axios.create({ baseURL: 'https://www.google.com/recaptcha/api/siteverify', }); diff --git a/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts index 7fde26920bc..fb65844c6d9 100644 --- a/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/captcha/drivers/turnstile.driver.ts @@ -9,12 +9,12 @@ import { } from 'src/engine/core-modules/captcha/interfaces'; export class TurnstileDriver implements CaptchaDriver { - private readonly siteKey: string; + private readonly _siteKey: string; private readonly secretKey: string; private readonly httpService: AxiosInstance; - constructor(private options: CaptchaDriverOptions) { - this.siteKey = options.siteKey; - this.secretKey = options.secretKey; + constructor(private _options: CaptchaDriverOptions) { + this._siteKey = _options.siteKey; + this.secretKey = _options.secretKey; this.httpService = axios.create({ baseURL: 'https://challenges.cloudflare.com/turnstile/v0/siteverify', }); diff --git a/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts b/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts index 86baba96c8b..0fe54013d53 100644 --- a/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts +++ b/packages/twenty-server/src/engine/core-modules/cron/sentry-cron-monitor.decorator.ts @@ -3,8 +3,8 @@ import * as Sentry from '@sentry/node'; export function SentryCronMonitor(monitorSlug: string, schedule: string) { return function ( // eslint-disable-next-line @typescript-eslint/no-explicit-any - target: any, - propertyKey: string, + _target: any, + _propertyKey: string, descriptor: PropertyDescriptor, ) { const originalMethod = descriptor.value; diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts index d752f8b395f..2598901a2d1 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/services/feature-flag.service.ts @@ -15,7 +15,6 @@ import { import { featureFlagValidator } from 'src/engine/core-modules/feature-flag/validates/feature-flag.validate'; import { publicFeatureFlagValidator } from 'src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate'; import { WorkspaceFeatureFlagsMapCacheService } from 'src/engine/metadata-modules/workspace-feature-flags-map-cache/workspace-feature-flags-map-cache.service'; -import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/workspace-permissions-cache/workspace-permissions-cache.service'; @Injectable() export class FeatureFlagService { @@ -23,7 +22,6 @@ export class FeatureFlagService { @InjectRepository(FeatureFlag, 'core') private readonly featureFlagRepository: Repository, private readonly workspaceFeatureFlagsMapCacheService: WorkspaceFeatureFlagsMapCacheService, - private readonly workspacePermissionsCacheService: WorkspacePermissionsCacheService, ) {} public async isFeatureEnabled( diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate.spec.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate.spec.ts index 5917b58856e..09c5b49113b 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/validates/is-public-feature-flag.validate.spec.ts @@ -98,7 +98,6 @@ describe('publicFeatureFlagValidator', () => { flag, mockException, ); - const _test: PublicFeatureFlag['key'] = flag; return true; }; diff --git a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts index 559b0663a16..4f09dfc45c1 100644 --- a/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts +++ b/packages/twenty-server/src/engine/core-modules/file/controllers/file.controller.ts @@ -34,7 +34,7 @@ export class FileController { @Get('*/:filename') @UseGuards(PublicEndpointGuard) async getFile( - @Param() params: string[], + @Param() _params: string[], @Res() res: Response, @Req() req: Request, ) { diff --git a/packages/twenty-server/src/engine/core-modules/file/services/file-metadata.service.ts b/packages/twenty-server/src/engine/core-modules/file/services/file-metadata.service.ts index 533533a49c4..9f963abd05d 100644 --- a/packages/twenty-server/src/engine/core-modules/file/services/file-metadata.service.ts +++ b/packages/twenty-server/src/engine/core-modules/file/services/file-metadata.service.ts @@ -5,7 +5,6 @@ import { Repository } from 'typeorm'; import { FileFolder } from 'src/engine/core-modules/file/interfaces/file-folder.interface'; -import { FileStorageService } from 'src/engine/core-modules/file-storage/file-storage.service'; import { type FileDTO } from 'src/engine/core-modules/file/dtos/file.dto'; import { FileEntity } from 'src/engine/core-modules/file/entities/file.entity'; import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service'; @@ -19,7 +18,6 @@ export class FileMetadataService { @InjectRepository(FileEntity, 'core') private readonly fileRepository: Repository, private readonly fileService: FileService, - private readonly fileStorageService: FileStorageService, private readonly fileUploadService: FileUploadService, ) {} diff --git a/packages/twenty-server/src/engine/core-modules/i18n/i18n.middleware.ts b/packages/twenty-server/src/engine/core-modules/i18n/i18n.middleware.ts index 938891bfbf0..071477bfe60 100644 --- a/packages/twenty-server/src/engine/core-modules/i18n/i18n.middleware.ts +++ b/packages/twenty-server/src/engine/core-modules/i18n/i18n.middleware.ts @@ -7,7 +7,7 @@ import { APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared/translations'; // TODO: this should be deprecated as singleton pattern won't work: user will keep changing locales for eachothers @Injectable() export class I18nMiddleware implements NestMiddleware { - use(req: Request, res: Response, next: NextFunction) { + use(req: Request, _res: Response, next: NextFunction) { const locale = req.locale; if (locale && Object.values(APP_LOCALES).includes(locale)) { diff --git a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts index fc34e66d888..3b566863c58 100644 --- a/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts +++ b/packages/twenty-server/src/engine/core-modules/message-queue/message-queue.module-factory.ts @@ -12,7 +12,7 @@ import { type TwentyConfigService } from 'src/engine/core-modules/twenty-config/ * @param twentyConfigService */ export const messageQueueModuleFactory = async ( - twentyConfigService: TwentyConfigService, + _twentyConfigService: TwentyConfigService, redisClientService: RedisClientService, ): Promise => { const driverType = MessageQueueDriverType.BullMQ; diff --git a/packages/twenty-server/src/engine/core-modules/serverless/commands/add-packages.command.ts b/packages/twenty-server/src/engine/core-modules/serverless/commands/add-packages.command.ts index 818eeb50c48..e3bc6145055 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/commands/add-packages.command.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/commands/add-packages.command.ts @@ -27,7 +27,7 @@ export class AddPackagesCommand extends CommandRunner { } async run( - passedParams: string[], + _passedParams: string[], // eslint-disable-next-line @typescript-eslint/no-explicit-any options: Record, ): Promise { diff --git a/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts index a897e86c928..270ec25c2e2 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/constants/base-typescript-project/src/index.ts @@ -4,7 +4,9 @@ export const main = async (params: { }): Promise => { const { a, b } = params; - // Your code here + // Rename the parameters and code below with your own logic + // This is just an example + const message = `Hello, input: ${a} and ${b}`; - return {}; -}; + return { message }; +}; \ No newline at end of file diff --git a/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts b/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts index 703634f28a0..49507efa182 100644 --- a/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts +++ b/packages/twenty-server/src/engine/core-modules/serverless/drivers/local.driver.ts @@ -138,7 +138,7 @@ export class LocalDriver implements ServerlessDriver { return JSON.stringify( arg, - (key, value) => { + (_key, value) => { if (typeof value === 'object' && value !== null) { if (seen.has(value)) { return '[Circular]'; // Handle circular references diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/conversion/config-value-converter.service.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/conversion/config-value-converter.service.ts index f5c92609ee2..fc5ab5868a8 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/conversion/config-value-converter.service.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/conversion/config-value-converter.service.ts @@ -1,4 +1,4 @@ -import { Inject, Injectable, Logger } from '@nestjs/common'; +import { Inject, Injectable } from '@nestjs/common'; import { ConfigVariables } from 'src/engine/core-modules/twenty-config/config-variables'; import { CONFIG_VARIABLES_INSTANCE_TOKEN } from 'src/engine/core-modules/twenty-config/constants/config-variables-instance-tokens.constants'; @@ -13,8 +13,6 @@ import { TypedReflect } from 'src/utils/typed-reflect'; @Injectable() export class ConfigValueConverterService { - private readonly logger = new Logger(ConfigValueConverterService.name); - constructor( @Inject(CONFIG_VARIABLES_INSTANCE_TOKEN) private readonly configVariables: ConfigVariables, diff --git a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/__tests__/assert-or-warn.decorator.spec.ts b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/__tests__/assert-or-warn.decorator.spec.ts index c123aea8724..3d7347385df 100644 --- a/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/__tests__/assert-or-warn.decorator.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/twenty-config/decorators/__tests__/assert-or-warn.decorator.spec.ts @@ -7,7 +7,7 @@ import { AssertOrWarn } from 'src/engine/core-modules/twenty-config/decorators/a describe('AssertOrWarn Decorator', () => { it('should pass validation if the condition is met', () => { class ConfigVariables { - @AssertOrWarn((object, value) => value > 10, { + @AssertOrWarn((_object, value) => value > 10, { message: 'Value should be higher than 10', }) someProperty!: number; @@ -24,7 +24,7 @@ describe('AssertOrWarn Decorator', () => { it('should provide a warning message if the condition is not met', () => { class ConfigVariables { - @AssertOrWarn((object, value) => value > 10, { + @AssertOrWarn((_object, value) => value > 10, { message: 'Value should be higher than 10', }) someProperty!: number; diff --git a/packages/twenty-server/src/engine/core-modules/two-factor-authentication/strategies/otp/totp/totp.strategy.ts b/packages/twenty-server/src/engine/core-modules/two-factor-authentication/strategies/otp/totp/totp.strategy.ts index c06c3606cfe..aa83a8dd956 100644 --- a/packages/twenty-server/src/engine/core-modules/two-factor-authentication/strategies/otp/totp/totp.strategy.ts +++ b/packages/twenty-server/src/engine/core-modules/two-factor-authentication/strategies/otp/totp/totp.strategy.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { authenticator } from 'otplib'; import { TwoFactorAuthenticationStrategy } from 'twenty-shared/types'; @@ -23,8 +23,6 @@ import { export class TotpStrategy implements OTPAuthenticationStrategyInterface { public readonly name = TwoFactorAuthenticationStrategy.TOTP; - private readonly logger = new Logger(TotpStrategy.name); - constructor(options?: TOTPStrategyConfig) { let result: SafeParseReturnType | undefined; diff --git a/packages/twenty-server/src/engine/core-modules/two-factor-authentication/utils/simple-secret-encryption.util.spec.ts b/packages/twenty-server/src/engine/core-modules/two-factor-authentication/utils/simple-secret-encryption.util.spec.ts index 8fbe9bb213e..e45cb60609e 100644 --- a/packages/twenty-server/src/engine/core-modules/two-factor-authentication/utils/simple-secret-encryption.util.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/two-factor-authentication/utils/simple-secret-encryption.util.spec.ts @@ -20,10 +20,12 @@ describe('SimpleSecretEncryptionUtil', () => { { provide: JwtWrapperService, useValue: { - generateAppSecret: jest.fn().mockImplementation((type, purpose) => { - // Return different secrets for different purposes to simulate real behavior - return `${mockAppSecret}-${purpose}`; - }), + generateAppSecret: jest + .fn() + .mockImplementation((_type, purpose) => { + // Return different secrets for different purposes to simulate real behavior + return `${mockAppSecret}-${purpose}`; + }), }, }, ], diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.module.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.module.ts index 4e0fa7e6499..234c416addd 100644 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.module.ts +++ b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.module.ts @@ -4,11 +4,12 @@ import { NestjsQueryGraphQLModule } from '@ptc-org/nestjs-query-graphql'; import { NestjsQueryTypeOrmModule } from '@ptc-org/nestjs-query-typeorm'; import { TypeORMModule } from 'src/database/typeorm/typeorm.module'; +import { ApprovedAccessDomainModule } from 'src/engine/core-modules/approved-access-domain/approved-access-domain.module'; +import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; import { DomainManagerModule } from 'src/engine/core-modules/domain-manager/domain-manager.module'; import { FileUploadModule } from 'src/engine/core-modules/file/file-upload/file-upload.module'; import { FileModule } from 'src/engine/core-modules/file/file.module'; import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; -import { UserWorkspaceResolver } from 'src/engine/core-modules/user-workspace/user-workspace.resolver'; import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; import { User } from 'src/engine/core-modules/user/user.entity'; import { WorkspaceInvitationModule } from 'src/engine/core-modules/workspace-invitation/workspace-invitation.module'; @@ -18,8 +19,6 @@ import { ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadat import { UserRoleModule } from 'src/engine/metadata-modules/user-role/user-role.module'; import { TwentyORMModule } from 'src/engine/twenty-orm/twenty-orm.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; -import { ApprovedAccessDomainModule } from 'src/engine/core-modules/approved-access-domain/approved-access-domain.module'; -import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; @Module({ imports: [ @@ -46,6 +45,6 @@ import { TokenModule } from 'src/engine/core-modules/auth/token/token.module'; }), ], exports: [UserWorkspaceService], - providers: [UserWorkspaceService, UserWorkspaceResolver], + providers: [UserWorkspaceService], }) export class UserWorkspaceModule {} diff --git a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.resolver.ts b/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.resolver.ts deleted file mode 100644 index e119aba98ee..00000000000 --- a/packages/twenty-server/src/engine/core-modules/user-workspace/user-workspace.resolver.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { UseFilters, UseGuards, UsePipes } from '@nestjs/common'; -import { Resolver } from '@nestjs/graphql'; -import { InjectRepository } from '@nestjs/typeorm'; - -import { Repository } from 'typeorm'; - -import { PreventNestToAutoLogGraphqlErrorsFilter } from 'src/engine/core-modules/graphql/filters/prevent-nest-to-auto-log-graphql-errors.filter'; -import { ResolverValidationPipe } from 'src/engine/core-modules/graphql/pipes/resolver-validation.pipe'; -import { UserWorkspace } from 'src/engine/core-modules/user-workspace/user-workspace.entity'; -import { UserWorkspaceService } from 'src/engine/core-modules/user-workspace/user-workspace.service'; -import { WorkspaceInvitationService } from 'src/engine/core-modules/workspace-invitation/services/workspace-invitation.service'; -import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; -import { WorkspaceAuthGuard } from 'src/engine/guards/workspace-auth.guard'; - -@UseGuards(WorkspaceAuthGuard) -@Resolver(() => UserWorkspace) -@UsePipes(ResolverValidationPipe) -@UseFilters(PreventNestToAutoLogGraphqlErrorsFilter) -export class UserWorkspaceResolver { - constructor( - @InjectRepository(Workspace, 'core') - private readonly workspaceRepository: Repository, - private readonly userWorkspaceService: UserWorkspaceService, - private readonly workspaceInvitationService: WorkspaceInvitationService, - ) {} -} diff --git a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts index 14bddc2f800..8ae983ff342 100644 --- a/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts +++ b/packages/twenty-server/src/engine/core-modules/user/user.resolver.ts @@ -25,7 +25,6 @@ import { AuthExceptionCode, } from 'src/engine/core-modules/auth/auth.exception'; import { AvailableWorkspaces } from 'src/engine/core-modules/auth/dto/available-workspaces.output'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { SignedFileDTO } from 'src/engine/core-modules/file/file-upload/dtos/signed-file.dto'; import { FileUploadService } from 'src/engine/core-modules/file/file-upload/services/file-upload.service'; import { OnboardingStatus } from 'src/engine/core-modules/onboarding/enums/onboarding-status.enum'; @@ -85,7 +84,7 @@ export class UserResolver { private readonly userWorkspaceRepository: Repository, private readonly userRoleService: UserRoleService, private readonly permissionsService: PermissionsService, - private readonly featureFlagService: FeatureFlagService, + private readonly workspaceMemberTranspiler: WorkspaceMemberTranspiler, private readonly userWorkspaceService: UserWorkspaceService, ) {} diff --git a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts index 9ac0eafc889..16849a4f0bb 100644 --- a/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/core-modules/view/utils/view-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { NotFoundError, UserInputError, @@ -37,9 +39,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } @@ -53,9 +53,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } @@ -69,9 +67,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } @@ -85,9 +81,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } @@ -101,9 +95,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } @@ -117,9 +109,7 @@ export const viewGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/core-modules/webhook/utils/webhook-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/core-modules/webhook/utils/webhook-graphql-api-exception-handler.util.ts index cbd46f100ef..4290ec30034 100644 --- a/packages/twenty-server/src/engine/core-modules/webhook/utils/webhook-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/core-modules/webhook/utils/webhook-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { NotFoundError, UserInputError, @@ -17,9 +19,7 @@ export const webhookGraphqlApiExceptionHandler = (error: Error) => { userFriendlyMessage: error.userFriendlyMessage, }); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/core-modules/workspace/utils/__tests__/workspace-graphql-api-exception-handler.util.spec.ts b/packages/twenty-server/src/engine/core-modules/workspace/utils/__tests__/workspace-graphql-api-exception-handler.util.spec.ts index 8105c4f5d9f..8f94adcc51f 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/utils/__tests__/workspace-graphql-api-exception-handler.util.spec.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/utils/__tests__/workspace-graphql-api-exception-handler.util.spec.ts @@ -42,15 +42,6 @@ describe('workspaceGraphqlApiExceptionHandler', () => { ); }); - it('should throw InternalServerError for unknown WorkspaceExceptionCode', () => { - // @ts-expect-error - should never happen but it allow to test the default case - const error = new WorkspaceException('Unknown error', 'UNKNOWN_CODE'); - - expect(() => workspaceGraphqlApiExceptionHandler(error)).toThrow( - WorkspaceException, - ); - }); - it('should throw the original error if it is not a WorkspaceException', () => { const genericError = new Error('Generic error'); diff --git a/packages/twenty-server/src/engine/core-modules/workspace/utils/workspace-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/core-modules/workspace/utils/workspace-graphql-api-exception-handler.util.ts index 6d3ef80e35e..7235bf51a30 100644 --- a/packages/twenty-server/src/engine/core-modules/workspace/utils/workspace-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/core-modules/workspace/utils/workspace-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, ForbiddenError, @@ -21,9 +23,7 @@ export const workspaceGraphqlApiExceptionHandler = (error: Error) => { case WorkspaceExceptionCode.WORKSPACE_CUSTOM_DOMAIN_DISABLED: throw new ForbiddenError(error); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/decorators/auth/auth-api-key.decorator.ts b/packages/twenty-server/src/engine/decorators/auth/auth-api-key.decorator.ts index 399ad8bb672..8d018b4cc9f 100644 --- a/packages/twenty-server/src/engine/decorators/auth/auth-api-key.decorator.ts +++ b/packages/twenty-server/src/engine/decorators/auth/auth-api-key.decorator.ts @@ -3,7 +3,7 @@ import { createParamDecorator, type ExecutionContext } from '@nestjs/common'; import { getRequest } from 'src/utils/extract-request'; export const AuthApiKey = createParamDecorator( - (data: unknown, ctx: ExecutionContext) => { + (_data: unknown, ctx: ExecutionContext) => { const request = getRequest(ctx); return request.apiKey; diff --git a/packages/twenty-server/src/engine/decorators/auth/auth-user-workspace-id.decorator.ts b/packages/twenty-server/src/engine/decorators/auth/auth-user-workspace-id.decorator.ts index 4cbdc4b49fb..e0d625a2df0 100644 --- a/packages/twenty-server/src/engine/decorators/auth/auth-user-workspace-id.decorator.ts +++ b/packages/twenty-server/src/engine/decorators/auth/auth-user-workspace-id.decorator.ts @@ -3,7 +3,7 @@ import { type ExecutionContext, createParamDecorator } from '@nestjs/common'; import { getRequest } from 'src/utils/extract-request'; export const AuthUserWorkspaceId = createParamDecorator( - (data: unknown, ctx: ExecutionContext) => { + (_data: unknown, ctx: ExecutionContext) => { const request = getRequest(ctx); return request.userWorkspaceId; diff --git a/packages/twenty-server/src/engine/decorators/auth/auth-workspace-member-id.decorator.ts b/packages/twenty-server/src/engine/decorators/auth/auth-workspace-member-id.decorator.ts index 89e152acde5..8f0e6f30f35 100644 --- a/packages/twenty-server/src/engine/decorators/auth/auth-workspace-member-id.decorator.ts +++ b/packages/twenty-server/src/engine/decorators/auth/auth-workspace-member-id.decorator.ts @@ -3,7 +3,7 @@ import { type ExecutionContext, createParamDecorator } from '@nestjs/common'; import { getRequest } from 'src/utils/extract-request'; export const AuthWorkspaceMemberId = createParamDecorator( - (data: unknown, ctx: ExecutionContext) => { + (_data: unknown, ctx: ExecutionContext) => { const request = getRequest(ctx); return request.workspaceMemberId; diff --git a/packages/twenty-server/src/engine/guards/feature-flag.guard.ts b/packages/twenty-server/src/engine/guards/feature-flag.guard.ts index 47ee83bdcee..93cec85f348 100644 --- a/packages/twenty-server/src/engine/guards/feature-flag.guard.ts +++ b/packages/twenty-server/src/engine/guards/feature-flag.guard.ts @@ -15,7 +15,7 @@ export const FEATURE_FLAG_KEY = 'feature-flag-metadata-args'; export function RequireFeatureFlag(featureFlag: FeatureFlagKey) { return ( target: object, - propertyKey?: string, + _propertyKey?: string, descriptor?: PropertyDescriptor, ) => { TypedReflect.defineMetadata( diff --git a/packages/twenty-server/src/engine/metadata-modules/agent/agent-title-generation.service.ts b/packages/twenty-server/src/engine/metadata-modules/agent/agent-title-generation.service.ts index 7934f419456..f4c31734d5d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/agent/agent-title-generation.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/agent/agent-title-generation.service.ts @@ -3,7 +3,6 @@ import { Injectable, Logger } from '@nestjs/common'; import { generateText } from 'ai'; import { AiModelRegistryService } from 'src/engine/core-modules/ai/services/ai-model-registry.service'; -import { TwentyConfigService } from 'src/engine/core-modules/twenty-config/twenty-config.service'; @Injectable() export class AgentTitleGenerationService { @@ -11,7 +10,6 @@ export class AgentTitleGenerationService { constructor( private readonly aiModelRegistryService: AiModelRegistryService, - private readonly twentyConfigService: TwentyConfigService, ) {} async generateThreadTitle(messageContent: string): Promise { diff --git a/packages/twenty-server/src/engine/metadata-modules/agent/agent.service.ts b/packages/twenty-server/src/engine/metadata-modules/agent/agent.service.ts index cdcca921d70..97b5bcf00ff 100644 --- a/packages/twenty-server/src/engine/metadata-modules/agent/agent.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/agent/agent.service.ts @@ -5,7 +5,6 @@ import { isDefined } from 'twenty-shared/utils'; import { Repository } from 'typeorm'; import { AgentRoleService } from 'src/engine/metadata-modules/agent-role/agent-role.service'; -import { AgentChatService } from 'src/engine/metadata-modules/agent/agent-chat.service'; import { type CreateAgentInput } from 'src/engine/metadata-modules/agent/dtos/create-agent.input'; import { type UpdateAgentInput } from 'src/engine/metadata-modules/agent/dtos/update-agent.input'; import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity'; @@ -21,7 +20,6 @@ export class AgentService { private readonly agentRepository: Repository, @InjectRepository(RoleTargetsEntity, 'core') private readonly roleTargetsRepository: Repository, - private readonly agentChatService: AgentChatService, private readonly agentRoleService: AgentRoleService, ) {} diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/default-value.input.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/default-value.input.ts index 4479d0260e0..91f99c75d17 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/default-value.input.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/dtos/default-value.input.ts @@ -24,7 +24,7 @@ export type FieldMetadataDefaultValueFunctionNames = (typeof fieldMetadataDefaultValueFunctionName)[keyof typeof fieldMetadataDefaultValueFunctionName]; export class FieldMetadataDefaultValueString { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() value: string | null; } @@ -36,11 +36,11 @@ export class FieldMetadataDefaultValueRawJson { } export class FieldMetadataDefaultValueRichTextV2 { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() blocknote: string | null; - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() markdown: string | null; } @@ -52,52 +52,52 @@ export class FieldMetadataDefaultValueRichText { } export class FieldMetadataDefaultValueNumber { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsNumber() value: number | null; } export class FieldMetadataDefaultValueBoolean { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsBoolean() value: boolean | null; } export class FieldMetadataDefaultValueStringArray { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsArray() @IsQuotedString({ each: true }) value: string[] | null; } export class FieldMetadataDefaultValueDateTime { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsDate() value: Date | null; } export class FieldMetadataDefaultValueDate { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsDate() value: Date | null; } export class FieldMetadataDefaultValueCurrency { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsNumberString() amountMicros: string | null; - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() currencyCode: string | null; } export class FieldMetadataDefaultValueFullName { - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() firstName: string | null; - @ValidateIf((object, value) => value !== null) + @ValidateIf((_object, value) => value !== null) @IsQuotedString() lastName: string | null; } diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/field-metadata-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/field-metadata-graphql-api-exception-handler.util.ts index 527311430d6..c50187de6b2 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/field-metadata-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/utils/field-metadata-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, ForbiddenError, @@ -33,9 +35,7 @@ export const fieldMetadataGraphqlApiExceptionHandler = (error: Error) => { case FieldMetadataExceptionCode.LABEL_IDENTIFIER_FIELD_METADATA_ID_NOT_FOUND: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook.ts index bc8d2ad2b16..14a82068cc9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/hooks/before-update-one-object.hook.ts @@ -3,7 +3,6 @@ import { Injectable, UnauthorizedException, } from '@nestjs/common'; -import { InjectRepository } from '@nestjs/typeorm'; import { i18n } from '@lingui/core'; import { @@ -12,10 +11,8 @@ import { } from '@ptc-org/nestjs-query-graphql'; import { type APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared/translations'; import { isDefined } from 'twenty-shared/utils'; -import { Repository } from 'typeorm'; import { generateMessageId } from 'src/engine/core-modules/i18n/utils/generateMessageId'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type ObjectStandardOverridesDTO } from 'src/engine/metadata-modules/object-metadata/dtos/object-standard-overrides.dto'; import { type UpdateObjectPayload } from 'src/engine/metadata-modules/object-metadata/dtos/update-object.input'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; @@ -29,12 +26,7 @@ interface StandardObjectUpdate extends Partial { export class BeforeUpdateOneObject implements BeforeUpdateOneHook { - constructor( - readonly objectMetadataService: ObjectMetadataService, - // TODO: Should not use the repository here - @InjectRepository(FieldMetadataEntity, 'core') - private readonly fieldMetadataRepository: Repository, - ) {} + constructor(readonly objectMetadataService: ObjectMetadataService) {} // TODO: this logic could be moved to a policy guard async run( diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts index a51cef5c950..708b43696e9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata-v2.service.ts @@ -4,12 +4,12 @@ import { InjectRepository } from '@nestjs/typeorm'; import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm'; import { Repository } from 'typeorm'; +import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type'; import { fromCreateObjectInputToFlatObjectMetadata } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-create-object-input-to-flat-object-metadata.util'; +import { fromFlatObjectMetadataMapsToFlatObjectMetadatas } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-maps-to-flat-object-metadatas.util'; import { WorkspaceMetadataCacheService } from 'src/engine/metadata-modules/workspace-metadata-cache/services/workspace-metadata-cache.service'; import { WorkspaceMigrationBuilderV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-builder-v2/workspace-migration-builder-v2.service'; import { WorkspaceMigrationRunnerV2Service } from 'src/engine/workspace-manager/workspace-migration-v2/workspace-migration-runner-v2/workspace-migration-runner-v2.service'; -import { type FlatObjectMetadataMaps } from 'src/engine/metadata-modules/flat-object-metadata-maps/types/flat-object-metadata-maps.type'; -import { fromFlatObjectMetadataMapsToFlatObjectMetadatas } from 'src/engine/metadata-modules/flat-object-metadata/utils/from-flat-object-metadata-maps-to-flat-object-metadatas.util'; import { ObjectMetadataEntity } from './object-metadata.entity'; @@ -20,7 +20,6 @@ export class ObjectMetadataServiceV2 extends TypeOrmQueryService, - private readonly workspaceMetadataCacheService: WorkspaceMetadataCacheService, private readonly workspaceMigrationBuilderV2: WorkspaceMigrationBuilderV2Service, private readonly workspaceMigrationRunnerV2Service: WorkspaceMigrationRunnerV2Service, diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util.ts index 8d952ee14ce..fcda156ce3f 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/utils/object-metadata-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, ForbiddenError, @@ -31,9 +33,7 @@ export const objectMetadataGraphqlApiExceptionHandler = (error: Error) => { case ObjectMetadataExceptionCode.MISSING_CUSTOM_OBJECT_DEFAULT_LABEL_IDENTIFIER_FIELD: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.service.ts b/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.service.ts index 4dd632f5e52..012819df99b 100644 --- a/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/permission-flag/permission-flag.service.ts @@ -16,8 +16,6 @@ import { WorkspacePermissionsCacheService } from 'src/engine/metadata-modules/wo export class PermissionFlagService { constructor( - @InjectRepository(PermissionFlagEntity, 'core') - private readonly permissionFlagRepository: Repository, @InjectRepository(RoleEntity, 'core') private readonly roleRepository: Repository, @InjectDataSource('core') diff --git a/packages/twenty-server/src/engine/metadata-modules/permissions/utils/permission-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/permissions/utils/permission-graphql-api-exception-handler.util.ts index 1d85f0d230a..c0c924c9dd3 100644 --- a/packages/twenty-server/src/engine/metadata-modules/permissions/utils/permission-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/permissions/utils/permission-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ForbiddenError, NotFoundError, @@ -66,9 +68,7 @@ export const permissionGraphqlApiExceptionHandler = ( case PermissionsExceptionCode.COMPOSITE_TYPE_NOT_FOUND: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } }; diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts index d73e63b8925..6acd8e9646d 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/foreign-table/foreign-table.service.ts @@ -34,7 +34,7 @@ export class ForeignTableService { ) {} public async fetchForeignTableNamesWithinWorkspace( - workspaceId: string, + _workspaceId: string, foreignDataWrapperId: string, ): Promise { const mainDataSource = diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/remote-table-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/remote-table-graphql-api-exception-handler.util.ts index 1ea1f6fc844..85243b8b684 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/remote-table-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/remote-table/utils/remote-table-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, NotFoundError, @@ -21,9 +23,7 @@ export const remoteTableGraphqlApiExceptionHandler = (error: Error) => { case RemoteTableExceptionCode.REMOTE_TABLE_ALREADY_EXISTS: throw new ConflictError(error.message); default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts b/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts index 629c4f2096e..ba29d0677c9 100644 --- a/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts +++ b/packages/twenty-server/src/engine/metadata-modules/remote-server/utils/remote-server-graphql-api-exception-handler.util.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, ForbiddenError, @@ -24,9 +26,7 @@ export const remoteServerGraphqlApiExceptionHandler = (error: any) => { case RemoteServerExceptionCode.REMOTE_SERVER_CONNECTION_ERROR: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts index cd6eda8b065..af059d6fc78 100644 --- a/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts +++ b/packages/twenty-server/src/engine/metadata-modules/role/role.service.ts @@ -17,7 +17,6 @@ import { type UpdateRoleInput, type UpdateRolePayload, } from 'src/engine/metadata-modules/role/dtos/update-role-input.dto'; -import { RoleTargetsEntity } from 'src/engine/metadata-modules/role/role-targets.entity'; import { RoleEntity } from 'src/engine/metadata-modules/role/role.entity'; import { UserRoleService } from 'src/engine/metadata-modules/user-role/user-role.service'; import { isArgDefinedIfProvidedOrThrow } from 'src/engine/metadata-modules/utils/is-arg-defined-if-provided-or-throw.util'; @@ -29,8 +28,6 @@ export class RoleService { private readonly workspaceRepository: Repository, @InjectRepository(RoleEntity, 'core') private readonly roleRepository: Repository, - @InjectRepository(RoleTargetsEntity, 'core') - private readonly roleTargetsRepository: Repository, private readonly userRoleService: UserRoleService, private readonly workspacePermissionsCacheService: WorkspacePermissionsCacheService, ) {} diff --git a/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils.ts b/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils.ts index cdcc86aeb8b..0138307b71c 100644 --- a/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils.ts +++ b/packages/twenty-server/src/engine/metadata-modules/serverless-function/utils/serverless-function-graphql-api-exception-handler.utils.ts @@ -1,3 +1,5 @@ +import { assertUnreachable } from 'twenty-shared/utils'; + import { ConflictError, ForbiddenError, @@ -24,9 +26,7 @@ export const serverlessFunctionGraphQLApiExceptionHandler = (error: any) => { case ServerlessFunctionExceptionCode.SERVERLESS_FUNCTION_CODE_UNCHANGED: throw error; default: { - const _exhaustiveCheck: never = error.code; - - throw error; + return assertUnreachable(error.code); } } } diff --git a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts index 4832d26c729..fe017a5c7e4 100644 --- a/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts +++ b/packages/twenty-server/src/engine/twenty-orm/factories/entity-schema.factory.ts @@ -2,7 +2,6 @@ import { Injectable } from '@nestjs/common'; import { EntitySchema } from 'typeorm'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { type ObjectMetadataItemWithFieldMaps } from 'src/engine/metadata-modules/types/object-metadata-item-with-field-maps'; import { type ObjectMetadataMaps } from 'src/engine/metadata-modules/types/object-metadata-maps'; import { EntitySchemaColumnFactory } from 'src/engine/twenty-orm/factories/entity-schema-column.factory'; @@ -15,7 +14,6 @@ export class EntitySchemaFactory { constructor( private readonly entitySchemaColumnFactory: EntitySchemaColumnFactory, private readonly entitySchemaRelationFactory: EntitySchemaRelationFactory, - private readonly featureFlagService: FeatureFlagService, ) {} async create( diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts index f9699f5b2bb..6f4938420f2 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/services/dev-seeder.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { TypeORMService } from 'src/database/typeorm/typeorm.service'; import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; @@ -14,8 +14,6 @@ import { WorkspaceSyncMetadataService } from 'src/engine/workspace-manager/works @Injectable() export class DevSeederService { - private readonly logger = new Logger(DevSeederService.name); - constructor( private readonly typeORMService: TypeORMService, private readonly workspaceCacheStorageService: WorkspaceCacheStorageService, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/delete-workspaces.command.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/delete-workspaces.command.ts index ffa4c387d92..47127e950a5 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/delete-workspaces.command.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-cleaner/commands/delete-workspaces.command.ts @@ -4,7 +4,6 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Command, CommandRunner, Option } from 'nest-commander'; import { In, Repository } from 'typeorm'; -import { WorkspaceService } from 'src/engine/core-modules/workspace/services/workspace.service'; import { Workspace } from 'src/engine/core-modules/workspace/workspace.entity'; import { DataSourceService } from 'src/engine/metadata-modules/data-source/data-source.service'; import { getDryRunLogHeader } from 'src/utils/get-dry-run-log-header'; @@ -22,7 +21,6 @@ export class DeleteWorkspacesCommand extends CommandRunner { private readonly logger = new Logger(DeleteWorkspacesCommand.name); constructor( - private readonly workspaceService: WorkspaceService, @InjectRepository(Workspace, 'core') private readonly workspaceRepository: Repository, private readonly dataSourceService: DataSourceService, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts index 0c36e00764d..3e3514a2dbe 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-default-value.fixer.ts @@ -2,21 +2,21 @@ import { Injectable } from '@nestjs/common'; import { type EntityManager } from 'typeorm'; +import { type FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface'; import { type WorkspaceHealthColumnIssue, WorkspaceHealthIssueType, } from 'src/engine/workspace-manager/workspace-health/interfaces/workspace-health-issue.interface'; import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { type FieldMetadataDefaultValue } from 'src/engine/metadata-modules/field-metadata/interfaces/field-metadata-default-value.interface'; -import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; -import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; -import { WorkspaceMigrationFieldFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type FieldMetadataDefaultValueFunctionNames, fieldMetadataDefaultValueFunctionName, } from 'src/engine/metadata-modules/field-metadata/dtos/default-value.input'; +import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; +import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; +import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; +import { WorkspaceMigrationFieldFactory } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; import { AbstractWorkspaceFixer, @@ -39,8 +39,8 @@ export class WorkspaceDefaultValueFixer extends AbstractWorkspaceFixer[], ): Promise[]> { if (issues.length <= 0) { @@ -52,14 +52,14 @@ export class WorkspaceDefaultValueFixer extends AbstractWorkspaceFixer[], ); } async createMetadataUpdates( - manager: EntityManager, - objectMetadataCollection: ObjectMetadataEntity[], + _manager: EntityManager, + _objectMetadataCollection: ObjectMetadataEntity[], issues: WorkspaceHealthColumnIssue[], ): Promise[]> { if (issues.length <= 0) { @@ -72,7 +72,7 @@ export class WorkspaceDefaultValueFixer extends AbstractWorkspaceFixer[], ); } diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-missing-column.fixer.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-missing-column.fixer.ts index fb33cd521f8..15d8783ad7b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-missing-column.fixer.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-missing-column.fixer.ts @@ -26,7 +26,7 @@ export class WorkspaceMissingColumnFixer extends AbstractWorkspaceFixer[], ): Promise[]> { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-nullable.fixer.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-nullable.fixer.ts index 2d76e27e8f0..e5bbc514f19 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-nullable.fixer.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-nullable.fixer.ts @@ -23,7 +23,7 @@ export class WorkspaceNullableFixer extends AbstractWorkspaceFixer[], ): Promise[]> { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-type.fixer.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-type.fixer.ts index e63ebce6a77..927747a6abf 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-type.fixer.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-health/fixer/workspace-type.fixer.ts @@ -10,11 +10,11 @@ import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/wo import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { type WorkspaceMigrationEntity } from 'src/engine/metadata-modules/workspace-migration/workspace-migration.entity'; +import { DatabaseStructureService } from 'src/engine/workspace-manager/workspace-health/services/database-structure.service'; import { type FieldMetadataUpdate, WorkspaceMigrationFieldFactory, } from 'src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory'; -import { DatabaseStructureService } from 'src/engine/workspace-manager/workspace-health/services/database-structure.service'; import { AbstractWorkspaceFixer } from './abstract-workspace.fixer'; @@ -32,7 +32,7 @@ export class WorkspaceTypeFixer extends AbstractWorkspaceFixer[], ): Promise[]> { diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts index 02d9fc0a13b..b58f1743188 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-builder/factories/workspace-migration-field.factory.ts @@ -5,7 +5,6 @@ import { FieldMetadataType } from 'twenty-shared/types'; import { WorkspaceMigrationBuilderAction } from 'src/engine/workspace-manager/workspace-migration-builder/interfaces/workspace-migration-builder-action.interface'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { type FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-metadata/object-metadata.entity'; import { generateMigrationName } from 'src/engine/metadata-modules/workspace-migration/utils/generate-migration-name.util'; @@ -30,7 +29,6 @@ export interface FieldMetadataUpdate< export class WorkspaceMigrationFieldFactory { constructor( private readonly workspaceMigrationFactory: WorkspaceMigrationFactory, - private readonly featureFlagService: FeatureFlagService, ) {} async create( diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts index 54d17bf8149..2c8fee82218 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-migration-runner/services/workspace-migration-column.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { isDefined } from 'twenty-shared/utils'; import { type QueryRunner, TableColumn } from 'typeorm'; @@ -22,8 +22,6 @@ import { removeSqlDDLInjection } from 'src/engine/workspace-manager/workspace-mi @Injectable() export class WorkspaceMigrationColumnService { - private readonly logger = new Logger(WorkspaceMigrationColumnService.name); - constructor( private readonly workspaceMigrationEnumService: WorkspaceMigrationEnumService, private readonly workspaceMigrationTypeService: WorkspaceMigrationTypeService, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts index bd5e437e5e7..89018a67f4b 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/factories/standard-index.factory.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { type PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface'; import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; @@ -15,8 +15,6 @@ import { isGatedAndNotEnabled } from 'src/engine/workspace-manager/workspace-syn @Injectable() export class StandardIndexFactory { - private readonly logger = new Logger(StandardIndexFactory.name); - create( standardObjectMetadataDefinitions: (typeof BaseWorkspaceEntity)[], context: WorkspaceSyncContext, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts index 0d86b13907e..f3e06676c25 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-metadata-updater.service.ts @@ -17,7 +17,6 @@ import { type PartialFieldMetadata } from 'src/engine/workspace-manager/workspac import { type PartialIndexMetadata } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/partial-index-metadata.interface'; import { type UpdaterOptions } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/updater-options.interface'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { compositeTypeDefinitions } from 'src/engine/metadata-modules/field-metadata/composite-types'; import { type FieldMetadataComplexOption } from 'src/engine/metadata-modules/field-metadata/dtos/options.input'; import { FieldMetadataEntity } from 'src/engine/metadata-modules/field-metadata/field-metadata.entity'; @@ -33,7 +32,7 @@ import { type WorkspaceSyncStorage } from 'src/engine/workspace-manager/workspac @Injectable() export class WorkspaceMetadataUpdaterService { - constructor(private readonly featureFlagService: FeatureFlagService) {} + constructor() {} async updateObjectMetadata( manager: EntityManager, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts index 27272453914..5a9f4f60baa 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/services/workspace-sync-field-metadata-relation.service.ts @@ -195,7 +195,7 @@ export class WorkspaceSyncFieldMetadataRelationService { } private async synchronizeCustomObjectRelationFields( - context: WorkspaceSyncContext, + _context: WorkspaceSyncContext, customObjectMetadataCollection: ObjectMetadataEntity[], originalObjectMetadataMapByName: Record, storage: WorkspaceSyncStorage, diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts index 48cb06b3afc..dae51d856d0 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/storage/workspace-sync.storage.ts @@ -45,8 +45,6 @@ export class WorkspaceSyncStorage { // Index metadata private readonly _indexMetadataCreateCollection: Partial[] = []; - private readonly _indexMetadataUpdateCollection: Partial[] = - []; private readonly _indexMetadataDeleteCollection: IndexMetadataEntity[] = []; constructor() {} diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts index f72313c978a..601eec76f56 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/utils/compute-standard-fields.util.ts @@ -9,7 +9,7 @@ import { type ObjectMetadataEntity } from 'src/engine/metadata-modules/object-me import { createRelationDeterministicUuid } from 'src/engine/workspace-manager/workspace-sync-metadata/utils/create-deterministic-uuid.util'; export const computeStandardFields = ( - context: WorkspaceSyncContext, + _context: WorkspaceSyncContext, standardFieldMetadataCollection: ( | PartialFieldMetadata | PartialComputedFieldMetadata diff --git a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts index a34d9bf2e69..acb5eb63406 100644 --- a/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts +++ b/packages/twenty-server/src/engine/workspace-manager/workspace-sync-metadata/workspace-sync-metadata.service.ts @@ -5,7 +5,6 @@ import { DataSource, QueryFailedError } from 'typeorm'; import { type WorkspaceSyncContext } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/workspace-sync-context.interface'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { WorkspaceMetadataVersionService } from 'src/engine/metadata-modules/workspace-metadata-version/services/workspace-metadata-version.service'; import { WorkspaceMigrationEntity, @@ -37,7 +36,6 @@ export class WorkspaceSyncMetadataService { private readonly workspaceSyncIndexMetadataService: WorkspaceSyncIndexMetadataService, private readonly workspaceSyncObjectMetadataIdentifiersService: WorkspaceSyncObjectMetadataIdentifiersService, private readonly workspaceMetadataVersionService: WorkspaceMetadataVersionService, - private readonly featureFlagService: FeatureFlagService, ) {} /** diff --git a/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-create-many.pre-query.hook.ts b/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-create-many.pre-query.hook.ts index d6c91f3b0fa..ed9b31598c4 100644 --- a/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-create-many.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-create-many.pre-query.hook.ts @@ -5,11 +5,11 @@ import { type CreateManyResolverArgs } from 'src/engine/api/graphql/workspace-re import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; +import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; import { type BlocklistItem, BlocklistValidationService, } from 'src/modules/blocklist/blocklist-validation-manager/services/blocklist-validation.service'; -import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; @WorkspaceQueryHook(`blocklist.createMany`) export class BlocklistCreateManyPreQueryHook @@ -21,7 +21,7 @@ export class BlocklistCreateManyPreQueryHook async execute( authContext: AuthContext, - objectName: string, + _objectName: string, payload: CreateManyResolverArgs, ): Promise> { if (!authContext.user?.id) { diff --git a/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-update-one.pre-query.hook.ts b/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-update-one.pre-query.hook.ts index 996e59e9ddb..b255c3411c1 100644 --- a/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-update-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/blocklist/query-hooks/blocklist-update-one.pre-query.hook.ts @@ -5,11 +5,11 @@ import { type UpdateOneResolverArgs } from 'src/engine/api/graphql/workspace-res import { WorkspaceQueryHook } from 'src/engine/api/graphql/workspace-query-runner/workspace-query-hook/decorators/workspace-query-hook.decorator'; import { type AuthContext } from 'src/engine/core-modules/auth/types/auth-context.type'; +import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; import { type BlocklistItem, BlocklistValidationService, } from 'src/modules/blocklist/blocklist-validation-manager/services/blocklist-validation.service'; -import { workspaceValidator } from 'src/engine/core-modules/workspace/workspace.validate'; @WorkspaceQueryHook(`blocklist.updateOne`) export class BlocklistUpdateOnePreQueryHook @@ -21,7 +21,7 @@ export class BlocklistUpdateOnePreQueryHook async execute( authContext: AuthContext, - objectName: string, + _objectName: string, payload: UpdateOneResolverArgs, ): Promise> { if (!authContext.user?.id) { diff --git a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts index 077ff03fd7d..afd5e6c4718 100644 --- a/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts +++ b/packages/twenty-server/src/modules/calendar/blocklist-manager/jobs/blocklist-item-delete-calendar-events.job.ts @@ -1,4 +1,4 @@ -import { Logger, Scope } from '@nestjs/common'; +import { Scope } from '@nestjs/common'; import { And, Any, ILike, In, Not, Or } from 'typeorm'; @@ -22,10 +22,6 @@ export type BlocklistItemDeleteCalendarEventsJobData = WorkspaceEventBatch< scope: Scope.REQUEST, }) export class BlocklistItemDeleteCalendarEventsJob { - private readonly logger = new Logger( - BlocklistItemDeleteCalendarEventsJob.name, - ); - constructor( private readonly twentyORMManager: TwentyORMManager, private readonly calendarEventCleanerService: CalendarEventCleanerService, diff --git a/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts index 669a90a6499..a760bf5d647 100644 --- a/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/connected-account/query-hooks/connected-account-delete-one.pre-query.hook.ts @@ -27,7 +27,7 @@ export class ConnectedAccountDeleteOnePreQueryHook async execute( authContext: AuthContext, - objectName: string, + _objectName: string, payload: DeleteOneResolverArgs, ): Promise { const connectedAccountId = payload.id; diff --git a/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts b/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts index 9b97a9166c4..f564256b540 100644 --- a/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts +++ b/packages/twenty-server/src/modules/messaging/message-cleaner/jobs/messaging-connected-account-deletion-cleanup.job.ts @@ -1,4 +1,4 @@ -import { Logger, Scope } from '@nestjs/common'; +import { Scope } from '@nestjs/common'; import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator'; import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator'; @@ -15,10 +15,6 @@ export type MessagingConnectedAccountDeletionCleanupJobData = { scope: Scope.REQUEST, }) export class MessagingConnectedAccountDeletionCleanupJob { - private readonly logger = new Logger( - MessagingConnectedAccountDeletionCleanupJob.name, - ); - constructor( private readonly messageCleanerService: MessagingMessageCleanerService, ) {} diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-fetch-by-batch.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-fetch-by-batch.service.ts index ba6e69eb8c0..63842833dec 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-fetch-by-batch.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/drivers/microsoft/services/microsoft-fetch-by-batch.service.ts @@ -1,4 +1,4 @@ -import { Injectable, Logger } from '@nestjs/common'; +import { Injectable } from '@nestjs/common'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { @@ -12,7 +12,6 @@ import { isAccessTokenRefreshingError } from 'src/modules/messaging/message-impo @Injectable() export class MicrosoftFetchByBatchService { - private readonly logger = new Logger(MicrosoftFetchByBatchService.name); constructor( private readonly microsoftClientProvider: MicrosoftClientProvider, private readonly microsoftHandleErrorService: MicrosoftHandleErrorService, @@ -89,7 +88,7 @@ export class MicrosoftFetchByBatchService { * } */ // eslint-disable-next-line @typescript-eslint/no-explicit-any - private isTemporaryError(error: any): boolean { + private _isTemporaryError(error: any): boolean { return error?.body?.includes('Unexpected token < in JSON at position'); } } diff --git a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts index 966f789ec68..661c10628c8 100644 --- a/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts +++ b/packages/twenty-server/src/modules/messaging/message-import-manager/services/messaging-messages-import.service.ts @@ -8,7 +8,6 @@ import { TwentyORMManager } from 'src/engine/twenty-orm/twenty-orm.manager'; import { BlocklistRepository } from 'src/modules/blocklist/repositories/blocklist.repository'; import { BlocklistWorkspaceEntity } from 'src/modules/blocklist/standard-objects/blocklist.workspace-entity'; import { EmailAliasManagerService } from 'src/modules/connected-account/email-alias-manager/services/email-alias-manager.service'; -import { ConnectedAccountRefreshTokensService } from 'src/modules/connected-account/refresh-tokens-manager/services/connected-account-refresh-tokens.service'; import { type ConnectedAccountWorkspaceEntity } from 'src/modules/connected-account/standard-objects/connected-account.workspace-entity'; import { MessageChannelSyncStatusService } from 'src/modules/messaging/common/services/message-channel-sync-status.service'; import { @@ -34,7 +33,6 @@ export class MessagingMessagesImportService { private readonly cacheStorage: CacheStorageService, private readonly messageChannelSyncStatusService: MessageChannelSyncStatusService, private readonly saveMessagesAndEnqueueContactCreationService: MessagingSaveMessagesAndEnqueueContactCreationService, - private readonly connectedAccountRefreshTokensService: ConnectedAccountRefreshTokensService, private readonly messagingMonitoringService: MessagingMonitoringService, @InjectObjectMetadataRepository(BlocklistWorkspaceEntity) private readonly blocklistRepository: BlocklistRepository, diff --git a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.job.ts b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.job.ts index 56481869eeb..ef4e2253b47 100644 --- a/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.job.ts +++ b/packages/twenty-server/src/modules/messaging/monitoring/crons/jobs/messaging-message-channel-sync-status-monitoring.cron.job.ts @@ -1,4 +1,3 @@ -import { Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import snakeCase from 'lodash.snakecase'; @@ -20,10 +19,6 @@ export const MESSAGING_MESSAGE_CHANNEL_SYNC_STATUS_MONITORING_CRON_PATTERN = @Processor(MessageQueue.cronQueue) export class MessagingMessageChannelSyncStatusMonitoringCronJob { - private readonly logger = new Logger( - MessagingMessageChannelSyncStatusMonitoringCronJob.name, - ); - constructor( @InjectRepository(Workspace, 'core') private readonly workspaceRepository: Repository, diff --git a/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-monitoring.service.ts b/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-monitoring.service.ts index 6740c679de6..8eaeb342943 100644 --- a/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-monitoring.service.ts +++ b/packages/twenty-server/src/modules/messaging/monitoring/services/messaging-monitoring.service.ts @@ -13,23 +13,16 @@ type MessagingMonitoringTrackInput = { @Injectable() export class MessagingMonitoringService { - constructor(private readonly auditService: AuditService) {} + constructor(private readonly _auditService: AuditService) {} public async track({ - eventName, - workspaceId, - userId, - connectedAccountId, - messageChannelId, - message, + eventName: _eventName, + workspaceId: _workspaceId, + userId: _userId, + connectedAccountId: _connectedAccountId, + messageChannelId: _messageChannelId, + message: _message, }: MessagingMonitoringTrackInput): Promise { - const _eventName = eventName; - const _workspaceId = workspaceId; - const _userId = userId; - const _connectedAccountId = connectedAccountId; - const _messageChannelId = messageChannelId; - const _message = message; - // TODO: replace once we have Prometheus /* await this.auditService diff --git a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/find-records.workflow-action.ts b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/find-records.workflow-action.ts index 499b1e58533..acc12bcba04 100644 --- a/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/find-records.workflow-action.ts +++ b/packages/twenty-server/src/modules/workflow/workflow-executor/workflow-actions/record-crud/find-records.workflow-action.ts @@ -2,8 +2,8 @@ import { Injectable } from '@nestjs/common'; import { type Entity } from '@microsoft/microsoft-graph-types'; import { QUERY_MAX_RECORDS } from 'twenty-shared/constants'; -import { type ObjectLiteral } from 'typeorm'; import { resolveInput } from 'twenty-shared/utils'; +import { type ObjectLiteral } from 'typeorm'; import { type ObjectRecordFilter, @@ -118,8 +118,8 @@ export class FindRecordsWorkflowAction implements WorkflowAction { private async getObjectRecords( workflowActionInput: WorkflowFindRecordsActionInput, - objectMetadataItemWithFieldsMaps: ObjectMetadataItemWithFieldMaps, - objectMetadataMaps: ObjectMetadataMaps, + _objectMetadataItemWithFieldsMaps: ObjectMetadataItemWithFieldMaps, + _objectMetadataMaps: ObjectMetadataMaps, repository: WorkspaceRepository, graphqlQueryParser: GraphqlQueryParser, ) { diff --git a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts index 14314d4e93d..3aff201b089 100644 --- a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-delete-one.pre-query.hook.ts @@ -32,7 +32,7 @@ export class WorkspaceMemberDeleteOnePreQueryHook async execute( authContext: AuthContext, - objectName: string, + _objectName: string, payload: DeleteOneResolverArgs, ): Promise { const targettedWorkspaceMemberId = payload.id; diff --git a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-update-one.pre-query.hook.ts b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-update-one.pre-query.hook.ts index be9cb34ee6f..3c2ed60218a 100644 --- a/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-update-one.pre-query.hook.ts +++ b/packages/twenty-server/src/modules/workspace-member/query-hooks/workspace-member-update-one.pre-query.hook.ts @@ -28,7 +28,7 @@ export class WorkspaceMemberUpdateOnePreQueryHook async execute( authContext: AuthContext, - objectName: string, + _objectName: string, payload: UpdateOneResolverArgs, ): Promise { const workspace = authContext.workspace; diff --git a/tsconfig.base.json b/tsconfig.base.json index 1214a784e0f..0d6c5c3873d 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -13,7 +13,7 @@ "lib": ["es2020", "dom"], "skipLibCheck": true, "skipDefaultLibCheck": true, - "resolveJsonModule": true + "resolveJsonModule": true, }, "exclude": ["node_modules", "tmp"] }