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